Import binutils_2.35.1-7.debian.tar.xz
authorMatthias Klose <doko@debian.org>
Wed, 6 Jan 2021 10:57:25 +0000 (10:57 +0000)
committerMatthias Klose <doko@debian.org>
Wed, 6 Jan 2021 10:57:25 +0000 (10:57 +0000)
[dgit import tarball binutils 2.35.1-7 binutils_2.35.1-7.debian.tar.xz]

72 files changed:
README.cross [new file with mode: 0644]
binutils-common.overrides [new file with mode: 0644]
binutils-cross.overrides [new file with mode: 0644]
binutils-hppa64-linux-gnu.overrides [new file with mode: 0644]
binutils-multiarch-dev.overrides [new file with mode: 0644]
binutils-multiarch.overrides [new file with mode: 0644]
binutils-multiarch.postinst.in [new file with mode: 0644]
binutils-multiarch.postrm.in [new file with mode: 0644]
binutils-multiarch.preinst.in [new file with mode: 0644]
binutils-multiarch.prerm.in [new file with mode: 0644]
binutils-multiarch.shlibs.in [new file with mode: 0644]
binutils-triplet.overrides [new file with mode: 0644]
binutils.overrides [new file with mode: 0644]
binutils.presubj [new file with mode: 0644]
binutils.triggers [new file with mode: 0644]
changelog [new file with mode: 0644]
control [new file with mode: 0644]
control.cross.in [new file with mode: 0644]
control.in [new file with mode: 0644]
copyright [new file with mode: 0644]
dwp.1 [new file with mode: 0644]
gfdl.texi [new file with mode: 0644]
ld.gold.1 [new file with mode: 0644]
libbinutils.overrides [new file with mode: 0644]
libbinutils.shlibs.in [new file with mode: 0644]
libctf-nobfd0.symbols [new file with mode: 0644]
libctf0.symbols [new file with mode: 0644]
patches/001_ld_makefile_patch.patch [new file with mode: 0644]
patches/002_gprof_profile_arcs.patch [new file with mode: 0644]
patches/003_gprof_see_also_monitor.patch [new file with mode: 0644]
patches/006_better_file_error.patch [new file with mode: 0644]
patches/013_bash_in_ld_testsuite.patch [new file with mode: 0644]
patches/014_hash_style-both.patch [new file with mode: 0644]
patches/014_hash_style-gnu.patch [new file with mode: 0644]
patches/127_x86_64_i386_biarch.patch [new file with mode: 0644]
patches/128_build_id.patch [new file with mode: 0644]
patches/128_ppc64_powerpc_biarch.patch [new file with mode: 0644]
patches/129_multiarch_libpath.patch [new file with mode: 0644]
patches/130_gold_disable_testsuite_build.patch [new file with mode: 0644]
patches/131_ld_bootstrap_testsuite.patch [new file with mode: 0644]
patches/135_bfd_soversion.patch [new file with mode: 0644]
patches/136_bfd_pic.patch [new file with mode: 0644]
patches/157_ar_scripts_with_tilde.patch [new file with mode: 0644]
patches/158_ld_system_root.patch [new file with mode: 0644]
patches/161_gold_dummy_zoption.diff [new file with mode: 0644]
patches/164_ld_doc_remove_xref.diff [new file with mode: 0644]
patches/aarch64-libpath.diff [new file with mode: 0644]
patches/binutils-no-development.diff [new file with mode: 0644]
patches/branch-no-development.diff [new file with mode: 0644]
patches/branch-updates.diff [new file with mode: 0644]
patches/branch-version.diff [new file with mode: 0644]
patches/gold-mips.diff [new file with mode: 0644]
patches/gold-no-keep-files-mapped.diff [new file with mode: 0644]
patches/gprof-build.diff [new file with mode: 0644]
patches/infinity-notes.diff [new file with mode: 0644]
patches/libctf-soname.diff [new file with mode: 0644]
patches/mips64-default-n64.diff [new file with mode: 0644]
patches/pgo+lto-1.diff [new file with mode: 0644]
patches/pgo+lto-2.diff [new file with mode: 0644]
patches/pgo+lto-3.diff [new file with mode: 0644]
patches/pgo+lto-check-ignore.diff [new file with mode: 0644]
patches/pr-ld-16428.diff [new file with mode: 0644]
patches/series [new file with mode: 0644]
rules [new file with mode: 0755]
source.lintian-overrides [new file with mode: 0644]
source/format [new file with mode: 0644]
test-suite-compare.py [new file with mode: 0644]
tests/build [new file with mode: 0644]
tests/control [new file with mode: 0644]
tests/libc-link [new file with mode: 0644]
tests/shlib-build [new file with mode: 0644]
watch [new file with mode: 0644]

diff --git a/README.cross b/README.cross
new file mode 100644 (file)
index 0000000..f118d3b
--- /dev/null
@@ -0,0 +1,27 @@
+Cross-binutils debian packages are directly built from the binutils
+source package together with the native binutils packages.
+
+To build a cross-binutils package which is not yet built:
+
+ o Download and unpack the binutils source package:
+
+    apt-get source binutils
+
+ o Ensure you have the binutils build-dependencies installed:
+
+    apt-get build-dep binutils
+
+ o Then build the cross-binutils package:
+   
+    TARGET=<your-target> dpkg-buildpackage -b -uc -us 
+    or 
+    echo arm >debian/target; dpkg-buildpackage -b -uc -us
+
+   (substitute your target name, e.g. "arm" or "m68k", instead of
+    "<your-target>")
+
+--
+Hector Oron <zumbi@debian.org>
+Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
+Matthias Klose <doko@debian.org>
+Nikita Youshchenko <yoush@cs.msu.su>
diff --git a/binutils-common.overrides b/binutils-common.overrides
new file mode 100644 (file)
index 0000000..65ee8dc
--- /dev/null
@@ -0,0 +1,2 @@
+# big tables
+binutils-common binary: manpage-has-errors-from-man
diff --git a/binutils-cross.overrides b/binutils-cross.overrides
new file mode 100644 (file)
index 0000000..e5e9ca5
--- /dev/null
@@ -0,0 +1,15 @@
+@PKG@ binary: package-name-doesnt-match-sonames
+@PKG@ binary: non-standard-dir-in-usr
+
+# needed for kfreebsd and the hurd
+@PKG@ binary: file-in-unusual-dir
+
+# internal libs, with the target name encoded
+@PKG@ binary: no-shlibs-control-file
+
+# yes, intended
+@PKG@ binary: shlib-in-multi-arch-foreign-package
+@PKG@ binary: triplet-dir-and-architecture-mismatch
+
+# some triplets are long ...
+@PKG@ binary: extended-description-line-too-long
diff --git a/binutils-hppa64-linux-gnu.overrides b/binutils-hppa64-linux-gnu.overrides
new file mode 100644 (file)
index 0000000..ce5267c
--- /dev/null
@@ -0,0 +1,10 @@
+# don't warn about missing man pages for diverted binaries
+binutils-hppa64-linux-gnu binary: binary-without-manpage
+
+# the API of the shared libs is not public, don't care about the name
+binutils-hppa64-linux-gnu binary: package-name-doesnt-match-sonames
+
+binutils-hppa64-linux-gnu binary: non-standard-dir-in-usr
+
+# private library. no -dev package is provided, nothing can link it
+binutils-hppa64-linux-gnu binary: no-shlibs-control-file
diff --git a/binutils-multiarch-dev.overrides b/binutils-multiarch-dev.overrides
new file mode 100644 (file)
index 0000000..1a81c37
--- /dev/null
@@ -0,0 +1,2 @@
+# package only has symlinks
+binutils-multiarch-dev binary: control-file-is-empty md5sums
diff --git a/binutils-multiarch.overrides b/binutils-multiarch.overrides
new file mode 100644 (file)
index 0000000..010ad55
--- /dev/null
@@ -0,0 +1,13 @@
+# don't warn about missing man pages for diverted binaries
+binutils-multiarch binary: binary-without-manpage
+
+# the API of the shared libs is not public, don't care about the name
+binutils-multiarch binary: package-name-doesnt-match-sonames
+
+# the upstream name, we don't care
+binutils-multiarch binary: dev-pkg-without-shlib-symlink
+
+# not in binutils-multiarch, just move these away
+binutils-multiarch: diversion-for-unknown-file usr/lib/libopcodes.a preinst:19
+binutils-multiarch: diversion-for-unknown-file usr/lib/libbfd.a preinst:16
+
diff --git a/binutils-multiarch.postinst.in b/binutils-multiarch.postinst.in
new file mode 100644 (file)
index 0000000..a1a460e
--- /dev/null
@@ -0,0 +1,80 @@
+#! /bin/sh
+# Update .so symlinks and remove obsolete diversions.
+#
+# Removing a diversion requires a guarantee that the conflicting
+# file is not present any more, and we cannot guarantee that if
+# some other version of binutils-multiarch is installed.
+# So we remove the diversions in postinst, not preinst.
+set -e
+ma=@DEB_MULTIARCH@
+triplet=@DEB_TRIPLET@
+old_diversion() {
+       local divertto file
+       file=$1
+       divertto=${2-$file.single}
+       if
+               dpkg-divert --package binutils-multiarch --list |
+               grep -q -F "$divertto"
+       then
+               dpkg-divert --package binutils-multiarch \
+                               --remove --rename \
+                               --divert "$divertto" "$file"
+       fi
+}
+
+# remove obsolete diversions
+old_diversion /usr/bin/ld.bfd
+old_diversion /usr/bin/c++filt
+old_diversion /usr/lib/libbfd.a /usr/lib/libbfd-single.a
+old_diversion /usr/lib/libopcodes.a /usr/lib/libopcodes-single.a
+old_diversion /usr/bin/ld
+old_diversion /usr/bin/elfedit
+for f in elf32_sparc elf32ppc elf64alpha elf_i386 m68kelf \
+         alpha i386linux m68klinux sparclinux sun4
+do
+       for ext in x xbn xn xr xs xu
+       do
+               old_diversion /usr/lib/ldscripts/$f.$ext
+       done
+done
+old_diversion /usr/lib/libbfd-2.9.1.0.15.so.0.0.0 \
+              /usr/lib/libbfd-single-2.9.1.0.15.so.0.0.0
+old_diversion /usr/lib/libopcodes-2.9.1.0.15.so.0.0.0 \
+              /usr/lib/libopcodes-single-2.9.1.0.15.so.0.0.0
+old_diversion /usr/lib/libbfd.la /usr/lib/libbfd-single.la
+old_diversion /usr/lib/libopcodes.la /usr/lib/libopcodes-single.la
+old_diversion /usr/include/bfd.h /usr/include/bfd.single.h
+old_diversion /usr/lib/ldscripts
+
+rm -f /usr/lib/libbfd-*-multiarch.so.0
+rm -f /usr/lib/libopcodes-*-multiarch.so.0
+
+old_diversion /usr/bin/addr2line
+old_diversion /usr/bin/ar
+old_diversion /usr/bin/embedspu
+old_diversion /usr/bin/gprof
+old_diversion /usr/bin/nm
+old_diversion /usr/bin/objcopy
+old_diversion /usr/bin/objdump
+old_diversion /usr/bin/ranlib
+old_diversion /usr/bin/readelf
+old_diversion /usr/bin/size
+old_diversion /usr/bin/strings
+old_diversion /usr/bin/strip
+
+case "$ma" in i386-*)
+  if test -n "$context" && dpkg --compare-versions "$2" lt "2.27-8"; then
+    old_diversion /usr/bin/$ma-addr2line
+    old_diversion /usr/bin/$ma-ar
+    old_diversion /usr/bin/$ma-embedspu
+    old_diversion /usr/bin/$ma-gprof
+    old_diversion /usr/bin/$ma-nm
+    old_diversion /usr/bin/$ma-objcopy
+    old_diversion /usr/bin/$ma-objdump
+    old_diversion /usr/bin/$ma-ranlib
+    old_diversion /usr/bin/$ma-readelf
+    old_diversion /usr/bin/$ma-size
+    old_diversion /usr/bin/$ma-strings
+    old_diversion /usr/bin/$ma-strip
+  fi
+esac
diff --git a/binutils-multiarch.postrm.in b/binutils-multiarch.postrm.in
new file mode 100644 (file)
index 0000000..7b94385
--- /dev/null
@@ -0,0 +1,47 @@
+#! /bin/sh
+set -e
+this_ver=@DEB_VER@; # this version
+ma=@DEB_MULTIARCH@
+triplet=@DEB_TRIPLET@
+# action: upgrade, abort-upgrade, remove, abort-install, disappear,
+# purge, or failed-upgrade.
+context=$1
+if
+       test "$context" = failed-upgrade &&
+       dpkg --compare-versions "$this_ver" lt "$2"
+then
+       # postrm of the future failed.
+       # Who knows what it was supposed to do?  Abort.
+       exit 1
+fi
+new_ver=; # version replacing this one, if any.
+case "$context" in
+failed-upgrade)
+       new_ver=$this_ver ;;
+abort-install|disappear)
+       new_ver= ;;
+*)
+       new_ver=$2 ;;
+esac
+
+diversion() {
+       local added_ver divertto file
+       added_ver=$1
+       file=$2
+       divertto=${3-$file.single}
+
+       if
+               test "$context" != purge &&
+               dpkg --compare-versions "$new_ver" lt "$added_ver"
+       then
+               dpkg-divert --package binutils-multiarch \
+                       --remove --rename --divert "$divertto" "$file"
+       fi
+}
+
+
+for prog in nm objdump objcopy strings strip size \
+            ar ranlib addr2line gprof readelf
+do
+       diversion 2.27-8 "/usr/bin/$triplet-$prog"
+done
diff --git a/binutils-multiarch.preinst.in b/binutils-multiarch.preinst.in
new file mode 100644 (file)
index 0000000..385f625
--- /dev/null
@@ -0,0 +1,29 @@
+#! /bin/sh
+set -e
+new_ver=@DEB_VER@; # this version
+ma=@DEB_MULTIARCH@
+triplet=@DEB_TRIPLET@
+context=$1; # why to install (install, upgrade, or abort-upgrade)
+old_ver=$2; # version being replaced, if any
+
+diversion() {
+       local added_ver divertto file
+       added_ver=$1
+       file=$2
+       divertto=${3-$file.single}
+
+       if
+               test "$context" = install ||
+               dpkg --compare-versions "$old_ver" lt "$added_ver" ||
+               dpkg --compare-versions "$new_ver" le "$old_ver"
+       then
+               dpkg-divert --package binutils-multiarch \
+                       --add --rename --divert "$divertto" "$file"
+       fi
+}
+
+for prog in nm objdump objcopy strings strip size \
+            ar ranlib addr2line gprof readelf
+do
+       diversion 2.27-8 "/usr/bin/$triplet-$prog"
+done
diff --git a/binutils-multiarch.prerm.in b/binutils-multiarch.prerm.in
new file mode 100644 (file)
index 0000000..45e273b
--- /dev/null
@@ -0,0 +1,98 @@
+#! /bin/sh
+# Remove obsolete diversions.
+#
+# They are already removed in postinst, but if configuration fails,
+# they will still be around.  Removing the package without
+# configuring would then allow the diversions to leak.
+#
+# So we catch them here.  This cannot wait for postrm because that
+# would break error recovery during upgrades: after the old, working
+# version re-adds the diversion in preinst, the diversion would be removed
+# again in postrm.  More generally, removing a diversion requires
+# a guarantee that the conflicting file is not present any more,
+# and we cannot guarantee that if some other version of
+# binutils-multiarch is installed.
+set -e
+this_ver=@DEB_VER@; # this version
+ma=@DEB_MULTIARCH@
+triplet=@DEB_TRIPLET@
+context=$1; # action: upgrade, remove, deconfigure, or failed-upgrade.
+if
+       test "$context" = failed-upgrade &&
+       dpkg --compare-versions "$this_ver" lt "$2"
+then
+       # prerm of the future failed.
+       # Who knows what it was supposed to do?  Abort.
+       exit 1
+fi
+
+old_diversion() {
+       local divertto file
+       file=$1
+       divertto=${2-$file.single}
+       if
+               dpkg-divert --package binutils-multiarch --list |
+               grep -q -F "$divertto"
+       then
+               dpkg-divert --package binutils-multiarch \
+                               --remove --rename \
+                               --divert "$divertto" "$file"
+       fi
+}
+
+# remove obsolete diversions
+old_diversion /usr/bin/ld.bfd
+old_diversion /usr/bin/c++filt
+old_diversion /usr/lib/libbfd.a /usr/lib/libbfd-single.a
+old_diversion /usr/lib/libopcodes.a /usr/lib/libopcodes-single.a
+old_diversion /usr/bin/ld
+old_diversion /usr/bin/elfedit
+for f in elf32_sparc elf32ppc elf64alpha elf_i386 m68kelf \
+         alpha i386linux m68klinux sparclinux sun4
+do
+       for ext in x xbn xn xr xs xu
+       do
+               old_diversion /usr/lib/ldscripts/$f.$ext
+       done
+done
+old_diversion /usr/lib/libbfd-2.9.1.0.15.so.0.0.0 \
+              /usr/lib/libbfd-single-2.9.1.0.15.so.0.0.0
+old_diversion /usr/lib/libopcodes-2.9.1.0.15.so.0.0.0 \
+              /usr/lib/libopcodes-single-2.9.1.0.15.so.0.0.0
+old_diversion /usr/lib/libbfd.la /usr/lib/libbfd-single.la
+old_diversion /usr/lib/libopcodes.la /usr/lib/libopcodes-single.la
+old_diversion /usr/include/bfd.h /usr/include/bfd.single.h
+old_diversion /usr/lib/ldscripts
+
+rm -f /usr/lib/libbfd-*-multiarch.so.0
+rm -f /usr/lib/libopcodes-*-multiarch.so.0
+
+old_diversion /usr/bin/addr2line
+old_diversion /usr/bin/ar
+old_diversion /usr/bin/embedspu
+old_diversion /usr/bin/gprof
+old_diversion /usr/bin/nm
+old_diversion /usr/bin/objcopy
+old_diversion /usr/bin/objdump
+old_diversion /usr/bin/ranlib
+old_diversion /usr/bin/readelf
+old_diversion /usr/bin/size
+old_diversion /usr/bin/strings
+old_diversion /usr/bin/strip
+
+case "$ma" in i386-*)
+  if test -n "$context" && dpkg --compare-versions "$2" lt "2.27-8"; then
+    old_diversion /usr/bin/$ma-addr2line
+    old_diversion /usr/bin/$ma-ar
+    old_diversion /usr/bin/$ma-embedspu
+    old_diversion /usr/bin/$ma-gprof
+    old_diversion /usr/bin/$ma-nm
+    old_diversion /usr/bin/$ma-objcopy
+    old_diversion /usr/bin/$ma-objdump
+    old_diversion /usr/bin/$ma-ranlib
+    old_diversion /usr/bin/$ma-readelf
+    old_diversion /usr/bin/$ma-size
+    old_diversion /usr/bin/$ma-strings
+    old_diversion /usr/bin/$ma-strip
+  fi
+esac
diff --git a/binutils-multiarch.shlibs.in b/binutils-multiarch.shlibs.in
new file mode 100644 (file)
index 0000000..4fc004d
--- /dev/null
@@ -0,0 +1,4 @@
+libbfd @VER@-multiarch@DATE_EXT@ binutils-multiarch (>= @DEB_UVER@), binutils-multiarch (<< @DEB_NVER@)
+libopcodes @VER@-multiarch@DATE_EXT@ binutils-multiarch (>= @DEB_UVER@), binutils-multiarch (<< @DEB_NVER@)
+libctf-multiarch 0 binutils-multiarch (>= @DEB_UVER@)
+libctf-nobfd-multiarch 0 binutils-multiarch (>= @DEB_UVER@)
diff --git a/binutils-triplet.overrides b/binutils-triplet.overrides
new file mode 100644 (file)
index 0000000..9fba6aa
--- /dev/null
@@ -0,0 +1,4 @@
+# empty
+
+# silence lintian stupidity
+@PKG@ binary: spelling-error-in-binary usr/bin/as mmnemonic mnemonic
diff --git a/binutils.overrides b/binutils.overrides
new file mode 100644 (file)
index 0000000..38c8364
--- /dev/null
@@ -0,0 +1,6 @@
+# manpages are in binutils-common
+binutils binary: binary-without-manpage usr/bin/ld.bfd
+binutils binary: binary-without-manpage usr/bin/ld.gold
+
+# silence lintian stupidity
+binutils binary: spelling-error-in-binary usr/bin/as mmnemonic mnemonic
diff --git a/binutils.presubj b/binutils.presubj
new file mode 100644 (file)
index 0000000..430e6e4
--- /dev/null
@@ -0,0 +1,25 @@
+When reporting binutils errors, please provide the actual input files
+and options given to the tool (gas, objcopy, ld, etc.) at run time.
+This can mean the difference between a pleasant debugging experience
+and a heisenbug that becomes unreproducible when gcc's code generation
+changes.
+
+For example, to create a testcase for an "ld" problem, first find the
+"gcc" command line that triggers the error:
+
+ $ make
+ ... output ending in an error ...
+ $ make V=1 VERBOSE=1 2>&1 | head -1
+
+Add "-v" after gcc and run it again.  One of the early output lines
+will be an invocation of collect2.  Replace collect2 with "ld" and
+it should reproduce the same error.  If you collect all the objects
+(including system libraries) mentioned on the "ld" command line in a
+tarball and send it along with the ld command line then that is a
+testcase.
+
+A possible step after that is to try omitting some objects from the
+ld command line and see if it still triggers the same error, but
+that's just icing on the cake.
+
+Happy debugging!
diff --git a/binutils.triggers b/binutils.triggers
new file mode 100644 (file)
index 0000000..dd86603
--- /dev/null
@@ -0,0 +1 @@
+activate-noawait ldconfig
diff --git a/changelog b/changelog
new file mode 100644 (file)
index 0000000..da817d0
--- /dev/null
+++ b/changelog
@@ -0,0 +1,6008 @@
+binutils (2.35.1-7) unstable; urgency=medium
+
+  * Update from the binutils 2.35 branch:
+    - Fix PR gold/27140, ppc32 segmentation fault in make_stub. Closes: #973746.
+    - PR binutils/27128, nm -P portable output format regression.
+    - PR ld/26382, elf: Keep only one '@' for undefined versioned symbols.
+    - nm: Remove --with-symbol-versions.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 06 Jan 2021 11:57:25 +0100
+
+binutils (2.35.1-6) unstable; urgency=medium
+
+  * Fix FTCBFS: Disable pgo for cross builds (Helmut Grohne). Closes: #977822.
+  * 'nopgo' in DEB_BUILD_OPTIONS also disables the pgo builds.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 23 Dec 2020 09:38:22 +0100
+
+binutils (2.35.1-5) unstable; urgency=medium
+
+  * Backport the PGO/LTO build patches.
+  * Configure with --enable-pgo-build=lto, but don't do that for the cross
+    packages. Takes some time to build ...
+
+ -- Matthias Klose <doko@debian.org>  Thu, 17 Dec 2020 20:42:32 +0100
+
+binutils (2.35.1-4) unstable; urgency=medium
+
+  * Update from the binutils 2.35 branch:
+    - Fix PR ld/27016.
+    - Fix PR binutils/26929, readelf: stack buffer overflow.
+    - Fix PR gas/26858 Fix availability of single precision vmul/vmla
+      in arm mode.
+    - gold: Fix powerpc incremental-dump assertion failure.
+  * Bump standards version.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 06 Dec 2020 12:18:40 +0100
+
+binutils (2.35.1-3) unstable; urgency=medium
+
+  * Update from the binutils 2.35 branch:
+    - DWARF 5 backports.
+    - Fix PR binutils/26808, also match abbrev base when searching
+      abbrev list.
+    - Fix PR gas/25878, PR gas/26740, always use as_where for preprocessed
+      assembly codes, reuse the input file entry in the file table.
+    - Fix PR gas/26778, clear all auto-assigned file slots.
+    - Fix PR ld/26869, elf: Set rel_from_abs to 1 for __ehdr_start.
+    - AArch64: Add support for Neoverse N2 CPU.
+    - Fix R target/26763, arm: Fix the wrong error message string for
+      mve vldr/vstr.
+  * Fix PR gold/26902, jump to long branch on powerpc, taken from the
+    trunk (Michael Hudson-Doyle).
+  * gold: Fix powerpc incremental-dump assertion failure.
+  * Update VCS-Browser attribute.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 17 Nov 2020 11:38:54 +0100
+
+binutils (2.35.1-2) unstable; urgency=medium
+
+  * Update from the binutils 2.35 branch:
+    - ARM32: Add support for Neoverse N2 and V1 CPUs.
+    - AArch64: Add support for Neoverse V1 CPU.
+    - Various Power10 and Power gold fixes.
+    - Fix PR gas/26685, x86: Check register operand for AddrPrefixOpReg.
+    - Fix PR ld/26711, x86: Properly merge -z ibt and -z shstk.
+    - Fix PR gas/26699, aarch64: Fix bogus type punning in parse_barrier().
+    - Fix PR binutils/26520, fix decoding DWARF information in the BFD library.
+  * AArch64: Add support for Neoverse N2 CPU, taken from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 09 Oct 2020 17:10:08 +0200
+
+binutils (2.35.1-1) unstable; urgency=medium
+
+  * binutils 2.35.1 release.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 21 Sep 2020 11:45:07 +0200
+
+binutils (2.35-3) unstable; urgency=medium
+
+  * Update from the binutils 2.35 branch:
+    - PowerPC TPREL_HA/LO optimisation.
+    - Partially fix PR gas/26406, quadratic slowdown when processing secondary
+      relocations.
+    - Fix PR binutils/26548, spurious overflow error when decoding negative
+      LEB128 values.
+    - mark's dwarf backports
+    - bpf: add xBPF ISA.
+    - Backport patches from the mainline to fix the handling of DWARF-5 debug
+      information
+    - PowerPC: Rename xvcvbf16sp to xvcvbf16spn.
+    - Fix PR binutils/26389, nm prints "c" for a common symbol with
+      -flto and -fcommon.
+    - Arm: Fix IT-predicated MVE vcvt.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 11 Sep 2020 12:34:43 +0200
+
+binutils (2.35-2) unstable; urgency=medium
+
+  * Update from the binutils 2.35 branch:
+    - Fixes for the eBPF ELF backend.
+    - Fix PR ld/26312, aarch64: set sh_entsize of .plt to 0.
+    - Fix PR gas/26305, x86: Add {disp16} pseudo prefix, handle {disp32}
+      for (%bp)/(%ebp)/(%rbp).
+    - Fix PR ld/26328, compilation warnings.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 13 Aug 2020 16:16:49 +0200
+
+binutils (2.35-1) unstable; urgency=medium
+
+  * binutils 2.35 release.
+    - Fix PR gas/26263. Closes: #965380.
+  * Explicitly configure with --disable-x86-used-note.
+  * Configure mipsel, mipsn32el, mips64el again with
+    --enable-mips-fix-loongson3-llsc=yes (YunQiang Su). Closes: #952737.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 24 Jul 2020 12:52:26 +0200
+
+binutils (2.34.90.20200706-1) unstable; urgency=medium
+
+  * New upstream snapshot, taken from the binutils 2.35 branch.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 06 Jul 2020 21:10:37 +0200
+
+binutils (2.34.50.20200605-1) experimental; urgency=medium
+
+  * New upstream snapshot.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 05 Jun 2020 10:56:37 +0200
+
+binutils (2.34.50.20200512-1) experimental; urgency=medium
+
+  * New upstream snapshot.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 12 May 2020 16:24:56 +0200
+
+binutils (2.34-6) unstable; urgency=medium
+
+  * Update from the binutils 2.34 branch:
+    - Fix PR lto/94249, typo in a macro usage, improve endianess detection.
+    - PR25745, powerpc64-ld overflows string buffer in --stats mode.
+    - plugin: Don't invoke LTO-wrapper.
+    - PR binutils/25640, plugin: Use LDPT_ADD_SYMBOLS_V2 to get symbol type.
+    - Fix dwarf.c build with GCC 10.
+    - PR binutils/25717, build failure with GCC 10.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 07 Apr 2020 13:29:21 +0200
+
+binutils (2.34-5) unstable; urgency=medium
+
+  * Update from the binutils 2.34 branch:
+    - Fix PR gas/25660, vadd/vsub with lt and le condition codes for MVE.
+    - Fix powerpc64-ld infinite loop.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 19 Mar 2020 20:45:59 +0100
+
+binutils (2.34-4) unstable; urgency=medium
+
+  * Update from the binutils 2.34 branch:
+    - Fix PR24511, nm should not mark symbols in .init_array as "t".
+    - Fix PR binutils/25584, don't call lto-wrapper for ar and ranlib.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 28 Feb 2020 11:18:34 +0100
+
+binutils (2.34-3) unstable; urgency=medium
+
+  * Update from the binutils 2.34 branch:
+    - Fix PR gas/25516, Accept Intel64 only instruction by default.
+    - Fix PR 25447, prevents a potential illegal memory access when parsing
+      PE binaries.
+    - Fix PR binutils/25355, import fixes for using the LTO plugin with nm.
+    - Fix PR 25585, PHDR segment not covered by LOAD segment.
+    - MSP430 updates.
+    - Mention x86 assembler options to align branches.
+    - AArch64: Fix MOVPRFX markup for bf16 conversions.
+  * Make the test summary files reproducible. Addresses: #950585.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 22 Feb 2020 09:49:46 +0100
+
+binutils (2.34-2) unstable; urgency=medium
+
+  * Regenerate the control file.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 02 Feb 2020 17:46:11 +0100
+
+binutils (2.34-1) unstable; urgency=medium
+
+  * New upstream release.
+  * Bump standards version.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 02 Feb 2020 08:45:55 +0100
+
+binutils (2.33.90.20200122-2) unstable; urgency=medium
+
+  * libctf-nobfd0: Add Breaks/Replaces to libbinutils. Closes: #949454.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 22 Jan 2020 07:49:18 +0100
+
+binutils (2.33.90.20200122-1) unstable; urgency=medium
+
+  * New upstream snapshot, taken from the 2.34 release branch.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 22 Jan 2020 06:18:41 +0100
+
+binutils (2.33.50.20200115-2) unstable; urgency=high
+
+  [YunQiang Su]
+  * refresh and re-enable: mips64-default-n64.diff
+
+ -- YunQiang Su <syq@debian.org>  Thu, 16 Jan 2020 23:35:11 +0800
+
+binutils (2.33.50.20200115-1) unstable; urgency=medium
+
+  * New upstream snapshot.
+  * Tighten the build dependency to 2.33.50.20200114-1 for this upload.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 15 Jan 2020 21:18:18 +0100
+
+binutils (2.33.50.20200114-1) unstable; urgency=medium
+
+  * New upstream snapshot.
+  * Build on testing for arm64, and upload the binaries.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 14 Jan 2020 14:19:00 +0100
+
+binutils (2.33.50.20200111-1) unstable; urgency=medium
+
+  * New upstream snapshot.
+  * Make autopkgtests cross-test-friendly (Steve Langasek).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 11 Jan 2020 14:24:29 +0100
+
+binutils (2.33.50.20200107-1) unstable; urgency=medium
+
+  * New upstream snapshot.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 07 Jan 2020 23:19:25 +0100
+
+binutils (2.33.50.20200105-2) experimental; urgency=medium
+
+  * New upstream snapshot.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 05 Jan 2020 11:33:49 +0100
+
+binutils (2.33.50.20191212-1) experimental; urgency=medium
+
+  * New upstream snapshot.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 12 Dec 2019 16:16:13 +0100
+
+binutils (2.33.50.20191205-1) experimental; urgency=medium
+
+  * New upstream snapshot.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 05 Dec 2019 21:22:15 +0100
+
+binutils (2.33.50.20191128-1) experimental; urgency=medium
+
+  * New upstream snapshot.
+  * Split out libctf packages.
+  * Save dejagnu log and sum files in binutils-dev.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 28 Nov 2019 09:57:31 +0100
+
+binutils (2.33.50.20191121-2) experimental; urgency=medium
+
+  * Fix packaging cross targets.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 21 Nov 2019 23:08:45 +0100
+
+binutils (2.33.50.20191121-1) experimental; urgency=medium
+
+  * New upstream snapshot.
+  * Remove the 012_check_ldrunpath_length patch.
+  * Don't apply the mips64-default-n64 patch.
+  * Refresh patches.
+  * Put libctf libctf libraries in libbinutils and binutils-dev for now.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 21 Nov 2019 18:50:25 +0100
+
+binutils (2.33.1-6) unstable; urgency=medium
+
+  * Update from the binutils 2.33 branch:
+    - [gas] Implement .cfi_negate_ra_state directive (AArch64).
+
+ -- Matthias Klose <doko@debian.org>  Thu, 12 Dec 2019 23:32:03 +0100
+
+binutils (2.33.1-5) unstable; urgency=medium
+
+  * Revert configuring with --enable-mips-fix-loongson3-llsc=yes on mipsel,
+    mips64el, mipsn32el. Causes GCC bootstrap comparison failures.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 02 Dec 2019 11:55:09 +0100
+
+binutils (2.33.1-4) unstable; urgency=medium
+
+  * Configure with --enable-mips-fix-loongson3-llsc=yes on mipsel, mips64el,
+    mipsn32el (YunQiang Su).
+  * Enable building mipsel and mips64el targets on arm64 and ppc64el (YunQiang
+    Su). Addresses: #938979.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 21 Nov 2019 15:28:14 +0100
+
+binutils (2.33.1-2) unstable; urgency=medium
+
+  * Update from the binutils 2.33 branch:
+    - Arm: Fix out of range conditional branch (PR/24991).
+    - [bfd] Revise import stubs on hppa.
+    - [bfd] Provide 8-byte minimum alignment for .plt section on hppa.
+  * Drop amd64 cross compiler from the build dependencies on x32.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 20 Oct 2019 21:28:38 +0200
+
+binutils (2.33.1-1) unstable; urgency=medium
+
+  * Binutils 2.33.1 release.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 15 Oct 2019 11:43:46 +0200
+
+binutils (2.33-2) unstable; urgency=medium
+
+  * Update from the binutils 2.33 branch:
+    - Fix PR25079, "ar s" stopped working. Closes: #941921.
+    - PowerPC TLS miscounting PLT for __tls_get_addr.
+    - PowerPC section flag tidy.
+    - PowerPC PIC vs. DLL TLS issues.
+    - PR25046, readelf "Reading xxx bytes extends past end of file for dynamic section".
+    - PR24262, plugin search dir doesn't respect --libdir.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 09 Oct 2019 10:42:29 +0200
+
+binutils (2.33-1) unstable; urgency=medium
+
+  * Binutils 2.33 release (taken from the binutils-2_33 tag).
+  * Update from the binutils 2.33 branch:
+    - Fix PR 24942, change objcopy's --set-section-alignment option so that it
+      takes a byte alignment value rather than a power of two alignment value.
+    - x86-64: fix handling of PUSH/POP of segment register. LP: #1843394.
+  * Merge changes from binutils-mipsen.
+  * Bump standards version.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 08 Oct 2019 11:43:29 +0200
+
+binutils (2.32.51.20190909-1) unstable; urgency=medium
+
+  * Snapshot, taken from the trunk (20190909).
+  * Build the mipsel and mips64el cross packages from the binutils-mipsen
+    source package.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 09 Sep 2019 08:50:20 +0200
+
+binutils (2.32.51.20190821-2) unstable; urgency=medium
+
+  * Drop build dependency on g++-mips-linux-gnu.
+  * Stop building mips binutils.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 22 Aug 2019 09:49:59 +0200
+
+binutils (2.32.51.20190821-1) unstable; urgency=medium
+
+  * Snapshot, taken from the trunk (20190821).
+  * Update test dependencies for added ppc64el, riscv64 and s390x builds.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 21 Aug 2019 11:32:58 +0200
+
+binutils (2.32.51.20190813-1) unstable; urgency=medium
+
+  * Snapshot, taken from the trunk (20190813).
+    - Fix PR ld/24857: ld: error adding symbols: bad value. Closes: #932847.
+  * binutils-source: Fix ftbfs when with_native is off (YunQiang Su).
+    Closes: #933358.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 13 Aug 2019 16:26:14 +0200
+
+binutils (2.32.51.20190727-1) unstable; urgency=medium
+
+  * Snapshot, taken from the trunk (20190727).
+    - Fix PR ld/24832. Closes: #932287.
+  * Build ppc64el packages on arm64.
+  * Build s390x packages on arm64 and ppc64el.
+  * Build riscv64 packages on arm64 and ppc64el. Closes: #932398.
+  * Bump standards version.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 27 Jul 2019 16:58:37 +0200
+
+binutils (2.32.51.20190707-1) unstable; urgency=medium
+
+  * Snapshot, taken from the trunk (20190707).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 07 Jul 2019 12:20:11 +0200
+
+binutils (2.32.51.20190701-1) experimental; urgency=medium
+
+  * Snapshot, taken from the trunk (20190701).
+
+ -- Matthias Klose <doko@debian.org>  Mon, 01 Jul 2019 13:46:05 +0200
+
+binutils (2.32.51.20190624-1) experimental; urgency=medium
+
+  * Snapshot, taken from the trunk (20190624).
+    - Fix PR ld/24704, skiboot link failure. LP: #1833237.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 24 Jun 2019 07:59:05 +0000
+
+binutils (2.32.51.20190611-1) experimental; urgency=medium
+
+  * Snapshot, taken from the trunk (20190611).
+  * Simplify setting the soname for the various builds.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 11 Jun 2019 10:48:30 +0200
+
+binutils (2.32-8) experimental; urgency=medium
+
+  * Snapshot, taken from the 2.32 branch (20190424).
+    - Fix PR ld/24302 (AArch64): When DF_BIND_NOW don't use TLSDESC GOT value.
+    - Fix PR ld/24458 (x86): Also check x86 linker_def for non-shared
+      definition.
+    - AArch64: Add new LDGM/STGM instruction.
+    - AArch64: Update Store Allocation Tag instructions.
+    - AArch64: Fix disassembler bug with out-of-order sections.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 24 Apr 2019 09:25:48 +0200
+
+binutils (2.32-7) experimental; urgency=medium
+
+  * Snapshot, taken from the 2.32 branch (20190321).
+    - Fix PR ld/24355, segfault in function called from ppc_finish_symbols.
+  * Demote binutils-<target> from Multi-Arch: foreign to Multi-Arch: allowed
+    (Helmut Grohne). Closes: #920286.
+  * Let binutils-for-host Depends: binutils-<host>:any.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 21 Mar 2019 16:23:32 +0100
+
+binutils (2.32-6) experimental; urgency=medium
+
+  * Snapshot, taken from the 2.32 branch (20190313).
+    - S/390: arch13 instruction descriptions.
+  * Fix VCS attributes in the control file. Closes: #915982.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 13 Mar 2019 16:12:45 +0100
+
+binutils (2.32-5) experimental; urgency=medium
+
+  * Snapshot, taken from the 2.32 branch (20190213).
+    - S390: Revert "Add support to GNU ld to separate got related plt entries".
+  * binutils-source: Redact the build directory out of the tarball paths.
+    (Andrej Shadura). Closes: #920797.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 06 Mar 2019 11:11:50 +0100
+
+binutils (2.32-4) experimental; urgency=medium
+
+  * Remove mips64 build/check dependency.
+  * Fix PR binutils/23843, taken from the trunk.
+  * Fix PR ld/24276, taken from the trunk. Addresses: #923246.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 27 Feb 2019 22:34:34 +0100
+
+binutils (2.32-3) experimental; urgency=medium
+
+  * Snapshot, taken from the 2.32 branch (20190213).
+    - Fix PR ld/24151, PR gas/24165.
+  * Stop building cross packages now built by binutils-mipsen.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 13 Feb 2019 10:47:43 +0100
+
+binutils (2.32-2) experimental; urgency=medium
+
+  * Snapshot, taken from the 2.32 branch (20190208).
+    - Make inline plt reloc "unsupported for bss-plt" an error (ppc32).
+    - Arm: Backport hlt to all architectures.
+    - SPARC: fix PR ld/18841 (ld test failures).
+    - Visium: fix bogus overflow check on 32-bit hosts.
+    - Visium: align branch absolute instruction for the GR6.
+  * Stop building packages for powerpcspe.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 09 Feb 2019 13:12:21 +0100
+
+binutils (2.32-1) experimental; urgency=medium
+
+  * New upstream version.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 03 Feb 2019 10:34:56 +0100
+
+binutils (2.31.90.20190119-1) experimental; urgency=medium
+
+  * Snapshot, taken from the binutils 2.32 branch (20190119).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 19 Jan 2019 18:30:02 +0100
+
+binutils (2.31.51.20181204-1) experimental; urgency=medium
+
+  * Snapshot, taken from the trunk (20181204).
+
+ -- Matthias Klose <doko@debian.org>  Tue, 04 Dec 2018 11:20:13 +0100
+
+binutils (2.31.51.20181022-1) experimental; urgency=medium
+
+  * Snapshot, taken from the trunk (20181022).
+  * Refresh patches.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 22 Oct 2018 12:08:04 +0200
+
+binutils (2.31.1-10) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.31 branch (20181130).
+    - Fix PR ld/23937, powerpc64le local ifunc IRELATIVE relocs are wrong.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 30 Nov 2018 13:20:30 +0100
+
+binutils (2.31.1-9) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.31 branch (20181127).
+    - Fix Pr ld/23904, regression in Cortex A53 erratum with PIE.
+      Closes: #911497.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 27 Nov 2018 14:25:35 +0100
+
+binutils (2.31.1-8) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.31 branch (20181121).
+    - Fix PR gas/23854 (x86): Disable GOT relaxation with data prefix.
+    - Fix PR ld/23818, when assigning symbol version, hide debug symbols defined
+      in discarded sections from IR objects so that they can be removed later.
+    - ARC updates.
+    - ARM: Skip new binary decode tests on pe targets.
+    - ARM: Fix disassembler crashing on -b binary when thumb file and thumb not
+      forced.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 23 Nov 2018 09:02:12 +0100
+
+binutils (2.31.1-7) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.31 branch (20181018).
+    - AArch64: Fix error checking for SIMD udot (by element).
+    - x86: Add Intel ENCLV to assembler and disassembler.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 18 Oct 2018 08:54:07 +0200
+
+binutils (2.31.1-6) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.31 branch (20180919).
+    - PR ld/23499: elf: Check for corrupt symbol version info.
+    - Fix Aarch64 bug in warning filtering.
+    - Improve the code in the assembler to detect and reject a duplicate
+      input and output file.
+  * Don't reset CROSS_ARCHS when building in an autopkg tests (as done by
+    the cross-toolchain-base build test).
+
+ -- Matthias Klose <doko@debian.org>  Wed, 19 Sep 2018 13:48:13 +0200
+
+binutils (2.31.1-5) unstable; urgency=medium
+
+  * Fix the "build" autopkg test, depending on fakeroot and allowing output
+    on stderr.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 31 Aug 2018 11:56:41 +0200
+
+binutils (2.31.1-4) unstable; urgency=medium
+
+  * Rewrite. the "build" autopkg tests not to use the "build-needed"
+    restriction until #906125 is fixed. Closes: #884117.
+  * Build armel and armhf cross binutils on ppc64el.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 14 Aug 2018 20:43:44 +0200
+
+binutils (2.31.1-3) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.31 branch (20180814).
+    - Fix PR ld/23428, properly add X86_ISA_1_NEEDED property.
+    - Fix PR ld/23486, properly merge GNU_PROPERTY_X86_ISA_1_USED.
+    - x32: Align the .note.gnu.property section to 4 bytes.
+    - PowerPC64 __tls_get_addr_opt stub .eh_frame fix.
+    - PowerPC64: __tls_get_addr_opt stubs and tocsave optimization.
+    - PR gas/23465, x86: don't mistakenly scale non-8-bit displacements.
+    - PR gold/23455, add --warn-drop-version option; by default, do not warn
+      when discarding version info.
+    - hppa: Fix unwind offset for call_info->start_symbol.
+  * Build arm64 cross binutils on ppc64el.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 14 Aug 2018 07:33:39 +0200
+
+binutils (2.31.1-2) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.31 branch (20180726).
+    - S/390: Set the htm flag on PPA.
+    - x86: Add a GNU_PROPERTY_X86_ISA_1_USED note if needed.
+    - x86: Split vcvtps2{,u}qq and vcvttps2{,u}qq.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 26 Jul 2018 12:23:07 +0200
+
+binutils (2.31.1-1) unstable; urgency=medium
+
+  * Binutils 2.31.1 release.
+  * Remove the riscv64 build hack. Closes: #903857.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 18 Jul 2018 11:58:00 +0200
+
+binutils (2.31-1) unstable; urgency=medium
+
+  * Binutils 2.31 release.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 16 Jul 2018 11:40:18 +0200
+
+binutils (2.30.90.20180710-1) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.31 branch (20180710).
+    - Fix PR ld/23388, configuration with --enable-separate-code on i386.
+      Closes: #903376.
+    - Fix PR ld/23372, Remove x86 ISA properties with empty bits.
+    - Fix PR binutils/23369, read/write flag for these registers on AArch64.
+    - Fix PR binutils/23242, SBO bit in disassembly mask for ldrah on AArch64.
+    - [GOLD] PowerPC .gnu.attributes support.
+    - CVE-2018-8945: PR binutils/22809, objdump segfault.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 10 Jul 2018 11:44:16 +0200
+
+binutils (2.30.90.20180705-1) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.31 branch (20180705).
+    - Install the diagnostics.h header. Closes: #902765, #902823.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 05 Jul 2018 17:55:14 +0200
+
+binutils (2.30.90.20180627-1) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.31 branch (20180627).
+    - CVE-2018-10372: PR binutils/23064, Fix illegal memory access when parsing
+      corrupt DWARF information.
+    - CVE-2018-10373: PR binutils/23065, nm segfault.
+    - CVE-2018-10534: PR binutils/23110, objcopy segfault.
+    - CVE-2018-10535: PR binutils/23113, objcopy segfault.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 27 Jun 2018 21:55:43 +0200
+
+binutils (2.30.52.20180613-1) experimental; urgency=medium
+
+  * Snapshot, taken from the trunk (20180613).
+
+ -- Matthias Klose <doko@debian.org>  Wed, 13 Jun 2018 14:20:30 +0200
+
+binutils (2.30.51.20180512-1) experimental; urgency=medium
+
+  * Snapshot, taken from the trunk (20180512).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 12 May 2018 11:45:10 -0400
+
+binutils (2.30-22) unstable; urgency=medium
+
+  * Update, taken from the 2.30 branch 20180622.
+    - x86 gas: Replace CET bit with IBT and SHSTK bits.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 22 Jun 2018 08:11:21 +0200
+
+binutils (2.30-21) unstable; urgency=medium
+
+  * Update, taken from the 2.30 branch 20180529.
+    - x86-64: Add TLSDESC fields to elf_x86_lazy_plt_layout.
+    - PR binutils/23199, mark section in a section group with SHF_GROUP.
+    - PR ld/23194, x86: Don't set eh->local_ref to 1 for versioned symbol.
+    - PR ld/23189, x86: Don't set eh->local_ref to 1 for linker defined symbols.
+    - PR binutils/23199, Invalid SHT_GROUP entry leads to group confusion.
+  * Fix PR gprof/23056, memory corruption in gprof. LP: #1763098.
+  * Fix PR binutils/23054, memory corruption in as. LP: #1763096.
+  * Fix PR ld/23055, memory corruption in ld. LP: #1763094.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 29 May 2018 15:46:35 +0200
+
+binutils (2.30-20) unstable; urgency=medium
+
+  * Update, taken from the 2.30 branch 20180516.
+    - Fix PR binutils/23109, disassembly mask for vector sdot on AArch64.
+    - Fix uninitialised memory acccess in COFF bfd backend.
+    - Update Portuguese translations.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 16 May 2018 10:21:19 -0400
+
+binutils (2.30-19) unstable; urgency=medium
+
+  * Build-depend on procps.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 03 May 2018 07:44:55 +0200
+
+binutils (2.30-17) unstable; urgency=medium
+
+  * Update, taken from the 2.30 branch 20180502.
+    - Fix PR ld/23123, PR ld/22374, PowerPC32 ifunc regression.
+    - AArch64: Fix the mask for the sqrdml(a|s)h instructions.
+  * Fix unintialized memory in aarch64 opcodes, taken from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 02 May 2018 14:11:28 +0200
+
+binutils (2.30-16) unstable; urgency=medium
+
+  * Update, taken from the 2.30 branch 20180425.
+    - Fix PR ld 22782, x86: Remove the unused _GLOBAL_OFFSET_TABLE_.
+    - Update spanish and russian translations.
+  * Add amd64, i386, x32 and riscv64 cross compilers as build (test)
+    dependencies.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 25 Apr 2018 06:53:58 +0200
+
+binutils (2.30-15) unstable; urgency=medium
+
+  * Update, taken from the 2.30 branch 20180408.
+  * Only build the basic package when running the autopkg tests.
+    Closes: #884117.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 08 Apr 2018 22:55:34 +0200
+
+binutils (2.30-14) unstable; urgency=medium
+
+  * Update, taken from the 2.30 branch 20180405.
+    - Fix PR binutils/23025, Clear vex instead of vex.evex (x86).
+  * Fix PR gold/22770, MIPS: Fix GOT page counter in multi-got links,
+    taken from the trunk. Closes: #886222.
+  * Fix PR ld/23030 (stop the IA64 linker from removing unwind tables
+    when garbage collecting), taken from the trunk. Closes: #894915, #894719.
+  * More work arounds to build natively on riscv64.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 05 Apr 2018 19:13:24 +0200
+
+binutils (2.30-13) unstable; urgency=medium
+
+  * Build cross binutils for i386 and x32 on arm64 and ppc64el.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 04 Apr 2018 10:32:15 +0200
+
+binutils (2.30-11) unstable; urgency=medium
+
+  * Filter out the host architecture when passed as a cross architecture.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 01 Apr 2018 17:01:49 +0200
+
+binutils (2.30-10) unstable; urgency=medium
+
+  * Update, taken from the 2.30 branch 20180330.
+    - Fix PR 22773, ARM assembler's parsing of an illegal ORR instruction.
+    - Fix PR gold/22868, PR ld/22972 on SPARC, .
+    - PR ld/23000, x86-64: Add ENDBR64 to the TLSDESC PLT entry.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 30 Mar 2018 18:55:59 +0800
+
+binutils (2.30-9) unstable; urgency=medium
+
+  * Update, taken from the 2.30 branch 20180325.
+    - Fix PowerPC64 out-of-line save/restore functions.
+    - Remove unnecessary power9 group terminating nop.
+    - Set non_ir_ref_dynamic if a symbol is made dynamic.
+    - Fix PR ld/22836, "-r -s" doesn't work with -g3 using GCC 7.
+  * Fix amd64, i386 and x32 cross builds.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 25 Mar 2018 14:53:41 +0800
+
+binutils (2.30-8) unstable; urgency=medium
+
+  * Update, taken from the 2.30 branch 20180318.
+    - [ARM] Fix bxns mask.
+    - Extend the fix for PR ld/20882.
+  * Fix PowerPC64 out-of-line save/restore functions. Closes: #886264.
+  * Revert the 2.30-7 change.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 18 Mar 2018 12:51:40 +0800
+
+binutils (2.30-7) unstable; urgency=medium
+
+  * Upload without build dependencies on the cross compilers and don't run
+    the testsuite for this upload.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 08 Mar 2018 12:04:10 +0700
+
+binutils (2.30-6) unstable; urgency=medium
+
+  * Update, taken from the 2.30 branch 20180308.
+    - Fix PR ld/15904, linker error with --no-keep-memory.
+    - Enable link time garbage collection for the IA64 target. Closes: #890909.
+    - Fix PR gas/22014, memory corruption in MIPS assembler.
+    - Fix PR ld/22758, a bug that would place executable and non-executables
+      pages in the same segment.
+    - Fix PR ld/22832 on SPARC.
+    - Fix AArch32 build attributes for Armv8.4-A.
+    - Update translations.
+  * CVE-2018-7208: Fix PR binutils/22741, taken from the trunk.
+  * CVE-2018-7568: Fix PR binutils/22894, taken from the trunk.
+  * CVE-2018-7569: Fix PR binutils/22895, taken from the trunk.
+  * CVE-2018-7642: Fix PR binutils/22887, taken from the trunk.
+  * CVE-2018-7643: Fix PR binutils/22905, taken from the trunk.
+  * CVE-2018-7570: PR binutils/22881 needs a proper backport.
+  * Update package descriptions for binutils-<target>. Closes: #891377.
+  * Build binutils-for-host for TARGET (Helmut Grohne). Closes: #891863.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 08 Mar 2018 09:56:54 +0700
+
+binutils (2.30-5) unstable; urgency=medium
+
+  * Update, taken from the 2.30 branch 20180215.
+    - gas: xtensa: fix trampoline placement.
+    - Fix PR gas/22738 (.dc.a directive has wrong size on SPARC 64-bit).
+    - Fix GOT relocation overflow on SPARC. Closes: #890359.
+  * strings --include-all-whitespace doesn't take an argument. Closes: #887894.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 15 Feb 2018 08:20:04 +0700
+
+binutils (2.30-4) unstable; urgency=high
+
+  * Update, taken from the 2.30 branch 20180209.
+    - Fix PR binutils/22788 (CVE-2018-6872).
+  * binutils-multiarch: Add riscv64 support.
+  * Bump dpkg version to a version supporting riscv64.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 09 Feb 2018 19:24:28 +0100
+
+binutils (2.30-3) unstable; urgency=high
+
+  * Update, taken from the 2.30 branch 20180208.
+    - Remove speculation barrier support, remove --speculate-indirect-jumps
+      support (PPC).
+    - Fix PR ld/22764.
+  * CVE-2018-6323: Fix PR binutils/22746, taken from the trunk.
+  * CVE-2018-6543: Fix PR binutils/22769, taken from the trunk.
+  * CVE-2018-6759: Fix PR binutils/22794, taken from the trunk.
+  * Build riscv64 cross packages. This is using a hack, making binutils
+    not building natively on riscv64. At the mercy of a dpkg update
+    to handle riscv64 in stretch ...
+
+ -- Matthias Klose <doko@debian.org>  Thu, 08 Feb 2018 10:22:10 +0100
+
+binutils (2.30-2) unstable; urgency=medium
+
+  * Update, taken from the 2.30 branch 20180205.
+    - Fix PR ld/22762.
+    - gold: Add support for DWARF-4 line number tables.
+    - Update Brazillian portuguese and Russian translations.
+  * Apply approved patch for PR ld/22764 (AArch64). LP: #1746765.
+    Closes: #888789.
+  * Fix PR binutils/22734, taken from the trunk. Closes: #887729.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 05 Feb 2018 16:22:40 +0100
+
+binutils (2.30-1) unstable; urgency=medium
+
+  * Binutils 2.30 release.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 29 Jan 2018 14:29:38 +0100
+
+binutils (2.29.90.20180122-1) unstable; urgency=medium
+
+  * Snapshot, taken from the binutils 2.30 branch (20180122).
+  * Security issues addressed in 2.30: CVE-2017-13716, CVE-2017-14930,
+    CVE-2017-14932, CVE-2017-14933, CVE-2017-14934, CVE-2017-14938,
+    CVE-2017-14939, CVE-2017-14940, CVE-2017-15020, CVE-2017-15021,
+    CVE-2017-15022, CVE-2017-15023, CVE-2017-15024, CVE-2017-15025,
+    CVE-2017-15225, CVE-2017-15938, CVE-2017-15996, CVE-2017-16826,
+    CVE-2017-16827, CVE-2017-16828, CVE-2017-16829, CVE-2017-16830,
+    CVE-2017-16831, CVE-2017-16832, CVE-2017-17080, CVE-2017-17121,
+    CVE-2017-17122, CVE-2017-17123, CVE-2017-17124, CVE-2017-17125,
+    CVE-2017-17126.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 23 Jan 2018 04:11:38 +0100
+
+binutils (2.29.51.20180110-1) experimental; urgency=medium
+
+  * Snapshot, taken from the trunk (20180110).
+
+ -- Matthias Klose <doko@debian.org>  Wed, 10 Jan 2018 16:54:44 +0100
+
+binutils (2.29.51.20171219-1) experimental; urgency=medium
+
+  * Snapshot, taken from the trunk (20171219).
+
+ -- Matthias Klose <doko@debian.org>  Tue, 19 Dec 2017 14:50:11 +0100
+
+binutils (2.29.51.20171208-1) experimental; urgency=medium
+
+  * Snapshot, taken from the trunk (20171208).
+  * binutils-source: Depend on python3 instead of python.
+  * Override m68k, powerpcspe and m68k buildd admins to run the testsuite.
+  * Build binutils-x86-64-linux-gnu on arm64 and ppc64el. See #883769.
+  * Revived from the tombs, build a binutils-ia64-linux-gnu package.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 08 Dec 2017 15:19:09 +0100
+
+binutils (2.29.51.20171128-1) experimental; urgency=medium
+
+  * Snapshot, taken from the trunk (20171128).
+
+ -- Matthias Klose <doko@debian.org>  Tue, 28 Nov 2017 08:59:33 +0100
+
+binutils (2.29.1-13) unstable; urgency=medium
+
+  * Update, taken from the 2.29 branch 20180105.
+    - Fix PR ld/22626, invalid dynindx used for dynamic relocs against
+      section symbols.
+  * Fix cross builds, use host tools (Helmut Grohne). Closes: #883865.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 05 Jan 2018 23:44:48 +0100
+
+binutils (2.29.1-12) unstable; urgency=medium
+
+  * Update, taken from the 2.29 branch 20171212.
+    - Fix PR binutils/21118, don't mask X_add_number containing
+      a register number.
+  * Revived from the tombs, build a binutils-ia64-linux-gnu package.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 13 Dec 2017 01:10:25 +0100
+
+binutils (2.29.1-11) unstable; urgency=medium
+
+  * Update, taken from the 2.29 branch 20171208.
+    - Fix PR gold/22309.
+  * Build binutils-x86-64-linux-gnu on arm64 and ppc64el. See #883769.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 08 Dec 2017 12:41:16 +0100
+
+binutils (2.29.1-10) unstable; urgency=medium
+
+  * Update, taken from the 2.29 branch 20171201.
+    - Fix PR gold/22233, segfault in relocate_erratum_stub on aarch64.
+    - Update local fix for PR gold/20765, internal error in fix_errata on
+      aarch64 (Peter Smith). LP: #1638902.
+  * binutils-source: Depend on python3 instead of python.
+  * Override m68k, powerpcspe and m68k buildd admins to run the testsuite.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 01 Dec 2017 02:34:24 +0100
+
+binutils (2.29.1-9) unstable; urgency=medium
+
+  * Update, taken from the 2.29 branch 20171128.
+    - Fix PR ld/22431, powerpc64 ld segfault when .plt discarded.
+    - Fix DWARF reader to use correct size for DW_FORM_ref_addr.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 28 Nov 2017 07:02:24 +0100
+
+binutils (2.29.1-8) unstable; urgency=medium
+
+  * Apply proposed patch for PR gold/22233. Closes: #876786.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 13 Nov 2017 15:45:39 +0100
+
+binutils (2.29.1-7) unstable; urgency=medium
+
+  * Update, taken from the 2.29 branch 20171107.
+    - Fix PR ld/22397, PR ld/22300, PR binutils/22348.
+  * Use dwz -m to compress the -dbg packages.
+  * Add a plethora of mips r6 packages ... Closes: #881060.
+  * Provide "long" description for -dbg packages. Closes: #880001.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 08 Nov 2017 12:17:38 +0100
+
+binutils (2.29.1-6) unstable; urgency=medium
+
+  * Update, taken from the 2.29 branch 20171022.
+    - [GOLD] Fix powerpc64 optimization of TOC accesses.
+  * Do the extra/optional dance ...
+  * Build debug packages. Closes: #863728.
+  * Fix stripping the binutils-<native triplet> packages.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 22 Oct 2017 22:41:34 +0200
+
+binutils (2.29.1-5) unstable; urgency=medium
+
+  * Update, taken from the 2.29 branch 20171017.
+    - Fix PR binutils/22245, undefined behavior in bfd_set_error.
+    - Correct ctor/dtor in init_array/fini_array error value.
+  * Stop installing i586 compat links for i386 builds. Closes: #877791.
+  * Build a binutils-i686-linux-gnu package on amd64 and x32 too.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 17 Oct 2017 11:29:33 +0200
+
+binutils (2.29.1-4) unstable; urgency=medium
+
+  * Update, taken from the 2.29 branch 20171001.
+    - PR ld/22220, BFD linker wrongly marks symbols as PREVAILING_DEF_IRONLY.
+    - PR ld/22199, x86-64: Don't pass output_bfd to info->callbacks->minfo.
+    - [GOLD] Set non-exec stack for ppc64.
+  * Move man/{go,}ld.1.gz to binutils-common (Helmut Grohne). Closes: #877266.
+  * Build-depend on target g++ compilers instead of target gcc compilers.
+  * Fail when string merge can't alloc memory, taken from the trunk.
+    Closes: #874674.
+  * Fix legacy cross builds. Closes: #876677.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 01 Oct 2017 20:16:22 +0200
+
+binutils (2.29.1-3) unstable; urgency=medium
+
+  * Update, taken from the 2.29 branch 20170923.
+    - gold: Add --no-relax option.
+    - readelf: Handle E_MIPS_MACH_5900.
+    - gold: PowerPC function address in non-PIC.
+    - Fix PR binutils/22163, PR binutils/22170.
+  * libbinutils: Fix generation of upper dependency for two-number versions.
+  * debian/rules. Remove the old cross build targets.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 23 Sep 2017 14:00:50 +0200
+
+binutils (2.29.1-1) unstable; urgency=medium
+
+  * binutils 2.29.1 release.
+  * Convert to package source format 3.0 (quilt).
+
+ -- Matthias Klose <doko@debian.org>  Wed, 20 Sep 2017 10:11:56 +0200
+
+binutils (2.29-13) unstable; urgency=medium
+
+  * Build again all cross packages.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 19 Sep 2017 13:11:06 +0200
+
+binutils (2.29-12) unstable; urgency=medium
+
+  * Update, taken from the 2.29 branch 20170919.
+    - Fix PR ld/21441, PowerPC64 stubs don't match calculated size.
+      Closes: #876134.
+    - Fix PR ld/22048, Incorrect .eh_frame section in libc.so.
+    - Fix PR ld/22150, ld keeps a version reference for gc'd symbols.
+      Closes: #874585. LP: #1715641.
+    - Fix PR ld/22148, Integer overflow in elf64-x86-64.c.
+    - Fix PR ld/21924, Require GCC 5 or above for 3 x86 tests.
+  * Fix installation of test summaries.
+  * Compare test summaries for cross builds.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 19 Sep 2017 13:04:07 +0200
+
+binutils (2.29-10) unstable; urgency=medium
+
+  * Update, taken from the 2.29 branch 20170915.
+    - Fix PR binutils/22047 (CVE-2017-14129), PR binutils/22018.
+  * gold on 32bit archs: Release mapped files after each pass.
+  * Build-depend on cross compilers to run the tests for the binutils
+    cross packages.
+  * Install the ldscripts into /usr/lib/<multiarch>/ldscripts and move
+    ldscripts into the binutils-<triplet> packages.
+  * Install the unprefixed manual packages into binutils-common and
+    derive the timestamps from the debian/changelog entry.
+  * binutils-<triplet>: Remove dependency on binutils.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 15 Sep 2017 11:55:58 +0200
+
+binutils (2.29-9) unstable; urgency=medium
+
+  * Update, taken from the 2.29 branch 20170906.
+    - Fix PR binutils/22032, PR binutils/21786 (CVE-2017-12451),
+      PR binutils/21787 (CVE-2017-12448), PR binutils/21813 (CVE-2017-12450,
+      CVE-2017-12452, CVE-2017-12453, CVE-2017-12454), PR ld/21824,
+      PR binutils/21916, PR ld/21441, PR ld/22067, PR ld/22064, PR ld/22061,
+      PR binutils/22059 (CVE-2017-14128), PR binutils/21933 (CVE-2017-12799),
+      PR binutils/22060, PR binutils/22058 (CVE-2017-14130), PR binutils/21995,
+      PR binutils/21861, PR binutils/21813 (CVE-2017-12456), PR binutils/21909,
+      PR binutils/21820, PR binutils/21990, PR binutils/21994, PR ld/21441,
+      PR ld/22064, PR ld/22061, PR lto/81968, PR lto/81968, PR lto/81925.
+  * Fix typo in control.in interpolation when TARGET is non-empty (Helmut
+    Grohne). Addresses: #873387.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 06 Sep 2017 08:14:12 +0200
+
+binutils (2.29-8) unstable; urgency=medium
+
+  * Update, taken from the 2.29 branch 20170830.
+    - Fix PR gold/21868. Closes: #830540, #869768.
+    - Fix address violation issues when parsing corrupt binaries.
+    - PR gold/21847: Provide symbol flag for PowerPC64 localentry:0 tracking.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 30 Aug 2017 08:03:09 +0200
+
+binutils (2.29-7) unstable; urgency=high
+
+  * Fix binutils dependency on binutils-<triplet> on non amd64 architectures.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 23 Aug 2017 23:51:26 +0200
+
+binutils (2.29-6) unstable; urgency=medium
+
+  * Update, taken from the 2.29 branch 20170823.
+    - Fix PR ld/21988, PR ld/21964, PR ld/21910.
+  * readelf: Add patch to read Infinity notes.
+  * Reorganize packages to provide binutils-for-host/binutils-for-build
+    packages (Helmut Grohne). Closes: #842439.
+    - Break out a binutils-common package.
+    - Refactor code to build with DEB_BUILD_OPTIONS=nogold.
+    - Rename gold, ld.gold, ld.bfd to their triplet prefixed equivalents.
+    - Remove shlibs files for hppa64 and cross packages.
+    - Set NATIVE_ARCHS explicitly.
+    - Split out a libbinutils package and binutils-<triplet> packages.
+    - Build binutils-for-host and binutils-for-build packages.
+  * Fix some issues in the above patches.
+  * Mark binutils-common and libbinutils as M-A: same.
+  * Remove obsolete Breaks/Conflicts/Replaces.
+  * Replace FIXME markers with TODO markers. Silly lintian ...
+
+ -- Matthias Klose <doko@debian.org>  Wed, 23 Aug 2017 12:01:12 +0200
+
+binutils (2.29-5) unstable; urgency=medium
+
+  * Update, taken from the 2.29 branch 20170820.
+    - Fix PR binutils/21962, buffer overrun when parsing a corrupt tekhex
+      binary.
+    - Fix PR ld/18808: [AArch64] Skip IFUNC relocations in debug sections.
+    - Fix PR ld/18841: [AArch64] ifunc relocation ordering.
+    - [AArch64] Turn lr, fp, ip0 and ip1 into proper aliases.
+    - Fix PR ld/21923.
+  * Build gold on s390x. LP: #1709873.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 20 Aug 2017 19:00:03 +0200
+
+binutils (2.29-4) unstable; urgency=medium
+
+  * Update, taken from the 2.29 branch 20170804.
+  * Fix PR ld/21884, taken from the trunk. Do not choose a non-ELF format
+    input file to hold the linker created GOT sections. Closes: #870611.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 07 Aug 2017 08:46:12 -0400
+
+binutils (2.29-3) unstable; urgency=medium
+
+  * Update, taken from the 2.29 branch 20170802.
+    - S390 testsuite fixes.
+  * Fix PR ld/21884, taken from the trunk. Closes: #870343.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 02 Aug 2017 14:16:35 +0200
+
+binutils (2.29-2) unstable; urgency=medium
+
+  * Update, taken from the 2.29 branch 20170731.
+    - Fix PR 21847, PowerPC64 --plt-localentry issues.
+    - Fix PR gold/21857, PR ld/21849 (AVR).
+  * Remove Daniel as an uploader. Closes: #869305.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 31 Jul 2017 09:17:30 +0200
+
+binutils (2.29-1) unstable; urgency=medium
+
+  * binutils 2.29 release.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 25 Jul 2017 11:02:19 +0200
+
+binutils (2.28.90.20170718-1) experimental; urgency=medium
+
+  * Snapshot, taken from the 2.29 branch (20170718).
+
+ -- Matthias Klose <doko@debian.org>  Tue, 18 Jul 2017 11:26:15 +0200
+
+binutils (2.28.51.20170703-1) experimental; urgency=medium
+
+  * Snapshot, taken from the trunk (20170703).
+    - Addresses CVE-2017-9040, CVE-2017-9042, CVE-2017-9043, CVE-2017-9044,
+      CVE-2017-9742, CVE-2017-9743, CVE-2017-9744, CVE-2017-9745,
+      CVE-2017-9746, CVE-2017-9747, CVE-2017-9748, CVE-2017-9749,
+      CVE-2017-9750, CVE-2017-9751, CVE-2017-9752, CVE-2017-9753,
+      CVE-2017-9754, CVE-2017-9755, CVE-2017-9756, CVE-2017-9954,
+      CVE-2017-9955. Closes: #863674.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 03 Jul 2017 16:08:53 +0200
+
+binutils (2.28.51.20170627-1) experimental; urgency=high
+
+  * Snapshot, taken from the trunk (20170627).
+
+ -- Matthias Klose <doko@debian.org>  Tue, 27 Jun 2017 14:53:24 +0200
+
+binutils (2.28.51.20170620-1) experimental; urgency=medium
+
+  * Snapshot, taken from the trunk (20170620).
+    - Addresses issues CVE-2017-9040, CVE-2017-9042, CVE-2017-9043.
+    - ILP32 patches applied upstream. Closes: #861833.
+    - Fixes PR ld/21334 (MIPS), undefined hidden symbols causing assertion
+      failure. Closes: #858898.
+  * Configure with --enable-new-dtags.
+  * Don't revert the commit causing PR 21074.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 20 Jun 2017 15:32:31 +0200
+
+binutils (2.28-6) unstable; urgency=medium
+
+  * Update, taken from the 2.28 branch 20170615.
+    - Fix PR ld/19579 (AArch64), handling of relocations against common symbols.
+      Closes: #863152.
+    - Fix PR ld/21523 (ARM32).
+    - Fix PR ld/21529 (ARM32), internal error in linker.
+    - Fix PR ld/21404 (AVR).
+    - Fix PR binutils/21034.
+    - Fix PR gold/21503, gold not creating linker stub symbols on ppc64.
+    - Remove linker option: -z prefix-nop (x86).
+  * Fix several crashes. Addresses: #863674.
+    - PR binutils/21343, readelf crash. CVE-2017-9038.
+    - PR binutils/21345, readelf crash. CVE-2017-9039.
+    - PR binutils/21344, readelf crash. CVE-2017-9041.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 15 Jun 2017 17:46:47 +0200
+
+binutils (2.28-5) unstable; urgency=medium
+
+  * Update, taken from the 2.28 branch 20170510.
+    - RISC-V updates.
+    - Fix PR ld/21334 (MIPS).
+    - VxWorks fix.
+    - Fix PR ld/16044 (CRIS).
+  * Fix PR binutils/21412, global-buffer-overflow in objcopy. CVE-2017-8393.
+  * Fix PR binutils/21414, segfault in objcopy. CVE-2017-8394.
+  * Fix PR binutils/21431, objcopy segfault - null pointer dereferencing.
+    CVE-2017-8395.
+  * Fix PR binutils/21432, heap buffer overflow in objdump. CVE-2017-8396.
+  * Fix PR binutils/21434, heap buffer overflow in objdump. CVE-2017-8397.
+  * Fix PR binutils/21438, heap buffer overflow in printf_common.
+    CVE-2017-8398.
+  * Fix PR binutils/21440, prevent memory exhaustion from a corrupt PE binary
+    with an overlarge number of relocs. CVE-2017-8421.
+  * gold (SPARC): Fix assertion failure relaxing TLS for position-independent
+    executables. Closes: #862017.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 10 May 2017 12:12:53 +0200
+
+binutils (2.28-4) unstable; urgency=medium
+
+  * Update, taken from the 2.28 branch 20170418.
+    - Fix PR ld/21233: Avoid sweeping forced-undefined symbols in section GC.
+    - BFD fix.
+    - Fix PR ld/19579, PR ld/21306, link error with PIE on s390x.
+  * Fix PR binutils/21342, null pointer dereferences when using a link built
+    with clang. Closes: #859989. CVE-2017-7614.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 18 Apr 2017 08:08:02 +0630
+
+binutils (2.28-3) unstable; urgency=medium
+
+  * Update, taken from the 2.28 branch 20170405.
+    - RISC-V updates.
+    - Fix PR binutils/21303 (PPC), objdump doesn't show e200z4 insns.
+    - S/390: Remove vx2 facility flag.
+    - Update -maltivec and -mvsx options to only enable their oldest
+      instructions (PPC).
+    - Add support for the new 'lnia' extended mnemonic (PPC).
+    - Fix ld uninitialized read of script ASSERT data structure.
+  * Fix incorrect library search order on PowerPC, taken from the trunk.
+  * Fix PR ld/21233 (MIPS only), taken from the trunk. Closes: #857017.
+  * Fix a french translation. Closes: #859503.
+  * Fix PR binutils/21157, handling of corrupt STABS enum type strings.
+    Closes: #858324. CVE-2017-7210.
+  * Fix PR binutils/21137, readelf writing to illegal addresses.
+    Closes: #858264. CVE-2017-6965.
+  * Fix PR binutils/21156, illegal memory accesses in readelf.
+    Closes: #858256. CVE-2017-6969.
+  * Fix PR binutils/21139, read-after-free error in readelf.
+    Closes: #858263. CVE-2017-6966.
+  * Fix PR binutils/21135, invalid read of section contents.
+    Closes: #858323. CVE-2017-7209.
+  * Fix PR demangler/70909, libiberty Demangler segfaults. CVE-2016-4491.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 05 Apr 2017 17:48:03 +0200
+
+binutils (2.28-2) unstable; urgency=medium
+
+  * Update, taken from the 2.28 branch 20170307.
+    - Fix PR ld/20519, PR binutils/21224, PR binutils/21124 (all PPC).
+
+ -- Matthias Klose <doko@debian.org>  Tue, 07 Mar 2017 11:09:19 +0100
+
+binutils (2.28-1) unstable; urgency=medium
+
+  * binutils 2.28 release.
+    - S/390: Add support for new cpu architecture - arch12.
+    - S/390: Issue error for overflowing relocs.
+    - Fix PR gas/20744 (PPC32): Correct VLE 16D and SDAREL relocations.
+    - Fix PowerPC ld segfault on script discarding dynamic sections.
+    - Sync libiberty sources with GCC mainline. Fixes PR PR c++/70182,
+      PR c++/77489, PR c++/78761.
+    - Nios2 dynobj handling fixes.
+    - Don't make dynamic .data.rel.ro SEC_READONLY.
+    - PowerPC addpcis fix.
+    - RISC-V updates.
+    - [AArch64] Additional SVE instructions, add a "compnum" feature,
+      add SVE system registers, fix +sve documentation, add separate
+      feature flag for weaker release consistent load insns.
+  * Don't install windows related man pages in cross packages. Closes: #855630.
+  * Fix ld.1 symlink for targets without gold.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 02 Mar 2017 14:39:24 +0100
+
+binutils (2.27.90.20170221-1) unstable; urgency=medium
+
+  * New upstream snapshot, taken from the binutils 2.28 branch.
+    - Fix Alpha executables segfaulting when linked with -z,now.
+  * Don't install windows related man pages in cross packages. Closes: #855630.
+  * Don't install the embedspu binary for powerpcspe. Closes: #850691.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 21 Feb 2017 13:06:04 +0100
+
+binutils (2.27.90.20170218-1) unstable; urgency=medium
+
+  * New upstream snapshot, taken from the binutils 2.28 branch.
+    - Fix PR ld/21000, PR ld/21132 (closes: #855095).
+    - Fix powerpc testsuite source errors.
+    - Fix PR ld/21168, i386: Allow "lea foo@GOT, %reg" in PIC
+    - opcodes: Fix use after free in cgen instruction lookup.
+    - MIPS/BFD: Respect the ELF gABI dynamic symbol table sort requirement.
+    - MIPS/BFD: Use `bfd_size_type' for dynamic symbol table indices.
+    - MIPS/BFD: Streamline hash table references in `mips_elf_sort_hash_table'.
+    - MIPS/BFD: Fix assertion in `mips_elf_sort_hash_table'.
+    - POWER9: Add scv/rfscv instruction support.
+    - RiscV updates.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 18 Feb 2017 05:37:06 +0100
+
+binutils (2.27.90.20170205-1) unstable; urgency=medium
+
+  * New upstream snapshot, taken from the binutils 2.28 branch.
+    - MIPS/LD/testsuite: Correct relocation addends in VxWorks tests.
+    - MIPS/LD/testsuite: Fix a `tls-multi-got-1-1.s' build failure.
+    - MIPS: Add options to control branch ISA checks.
+    - MIPS/GAS/testsuite: Convert branch local list tests to dump tests.
+    - Fix PR ld/20995 for cris-linux.
+    - gold: Fix PPC64 TOC indirect to TOC relative segfault.
+    - Fix PR ld/21000, support -z relro on hppa. Other hppa updates.
+    - PR binutils/19935: Fix fallout from now-default initfini-array.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 05 Feb 2017 21:05:07 +0100
+
+binutils (2.27.90.20170124-2) unstable; urgency=medium
+
+  * Revert the commit causing PR 21074. Works around #852035.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 26 Jan 2017 18:09:09 +0100
+
+binutils (2.27.90.20170124-1) unstable; urgency=medium
+
+  * New upstream snapshot, taken from the binutils 2.28 branch.
+    - Fix PR gold/21054 (closes: #851736).
+
+ -- Matthias Klose <doko@debian.org>  Tue, 24 Jan 2017 15:24:49 +0100
+
+binutils (2.27.90.20170118-1) unstable; urgency=medium
+
+  * New upstream snapshot, taken from the binutils 2.28 branch.
+    - Fix PR binutils/21059, PR gas/20992, PR gas/20649,
+      PR binutils/20828 (closes: #844227).
+
+ -- Matthias Klose <doko@debian.org>  Wed, 18 Jan 2017 20:05:43 +0100
+
+binutils (2.27.90.20170114-1) unstable; urgency=medium
+
+  * New upstream snapshot, taken from the binutils 2.28 branch.
+    - Fix PR ld/21038, PR ld/20830, PR gold/21040.
+  * Apply proposed patch for PR binutils/20828 (mips). Addresses: #844227.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 14 Jan 2017 11:43:57 +0100
+
+binutils (2.27.90.20170113-1) unstable; urgency=medium
+
+  * New upstream snapshot, taken from the binutils 2.28 branch.
+    - Fix PR binutils/20876 (closes: #838875), PR gold/21040,
+      PR gold/21039.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 13 Jan 2017 13:31:53 +0100
+
+binutils (2.27.90.20170109-1) unstable; urgency=medium
+
+  * New upstream snapshot, taken from the binutils 2.28 branch.
+    - Fix PR ld/20989.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 09 Jan 2017 11:03:34 +0100
+
+binutils (2.27.90.20161231-1) unstable; urgency=medium
+
+  * New upstream snapshot, taken from the binutils 2.28 branch.
+    - Fix PR ld/20995, PR binutils/20464, PR binutils/14625, PR gas/10946,
+      PR gold/20996, PR gold/17643.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 31 Dec 2016 02:10:21 +0100
+
+binutils (2.27.51.20161220-1) unstable; urgency=medium
+
+  * New upstream snapshot, taken from the trunk.
+    - Fix PR ld/20968 (closes: #848731), PR ld/20908, PR gold/20949,
+      PR gold/14676, PR gold/20983, PR gold/20976, PR gold/20749,
+      PR gold/20522, PR gold/14676, PR gold/16711, PR gold/20717, PR c++/78252.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 20 Dec 2016 09:11:49 +0100
+
+binutils (2.27.51.20161212-1) unstable; urgency=medium
+
+  * New upstream snapshot, taken from the trunk.
+    - Implements --push-state/--pop-state for gold.
+    - Fix PR ld/20908, PR ld/20909, PR gas/20898, PR gas/20897, PR gold/20717,
+      PR gold/20834, PR gold/18989, PR ld/20910, PR ld/20911, PR ld/20912,
+      PR ld/20932, PR binutils/20931, PR binutils/20929, PR binutils/20905,
+      PR binutils/20907, PR binutils/20921, PR binutils/20922, PR ld/20925,
+      PR ld/20924, PR binutils/20930, PR ld/20923, PR gas/20901, PR gas/20896,
+      PR gas/20902, PR gas/20904, PR gold/20717, PR gold/16711, PR gold/20878,
+      PR ld/20906.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 12 Dec 2016 13:49:47 +0100
+
+binutils (2.27.51.20161201-1) unstable; urgency=medium
+
+  * New upstream snapshot, taken from the trunk.
+    - Update PR ld/20815 (closes: #845690).
+    - Fix PR ld/20868 (AArch64), PR ld/16720 (mips), PR binutils/20891,
+      PR binutils/20892, PR ld/20886 (PPC64), PR gas/20895, PR binutils/20637,
+      PR binutils/20893.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 01 Dec 2016 15:55:10 +0100
+
+binutils (2.27.51.20161127-1) unstable; urgency=high
+
+  * New upstream snapshot, taken from the trunk.
+    - Fix PR target/20737 (ARM32), PR ld/20858.
+  * Revert the fix for PR ld/20815. Addresses: #845690.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 27 Nov 2016 21:00:36 +0100
+
+binutils (2.27.51.20161124-1) unstable; urgency=medium
+
+  * New upstream snapshot, taken from the trunk.
+    - Fix PR ld/20815, PR gas/20744, PR gas/20827, PR gold/20346,
+      PR gold/20693.
+  * Fix PR ld/20858, error handling $ORIGIN variable.
+    Closes: #845171, #844847.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 24 Nov 2016 03:34:06 +0100
+
+binutils (2.27.51.20161118-2) unstable; urgency=medium
+
+  * Revert problematic sparc64 GOT patch (closes: #844782).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 19 Nov 2016 13:40:17 +0100
+
+binutils (2.27.51.20161118-1) unstable; urgency=medium
+
+  * New upstream snapshot, taken from the trunk.
+    - SPARC updates, ARMv8.3 updates.
+    - Fix PR ld/20675.
+  * Fix typo in debian changelog. Closes: #843710.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 18 Nov 2016 14:11:45 +0100
+
+binutils (2.27.51.20161116-2) unstable; urgency=medium
+
+  * Stop building the mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el
+    variants; can't continue with this work, because package uploads with
+    these architectures are still rejected.
+  * Add homepage attribute to the control file: Closes: #841432.
+  * ld: enable new dtags by default for linux/gnu targets. Closes: #835859.
+  * Fix PR ld/20827, using proposed patch. Closes: #844378.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 17 Nov 2016 11:56:55 +0100
+
+binutils (2.27.51.20161116-1) unstable; urgency=medium
+
+  * New upstream snapshot, taken from the trunk.
+    - Fix PR ld/20789 (AVR), PR ld/20800 (x86), PR target/20737 (AArch64),
+      PR binutils/20801, PR binutils/20814, PR binutils/20751,
+      PR binutils/20794, PR gas/20803 (SPARC), PR gas/20732,
+      PR binutils/20799 (x86), PR binutils/20754 (x86), PR binutils/20701 (x86),
+
+ -- Matthias Klose <doko@debian.org>  Wed, 16 Nov 2016 11:50:32 +0100
+
+binutils (2.27.51.20161108-1) unstable; urgency=medium
+
+  * New upstream snapshot, taken from the trunk.
+    - Fix PR ld/20535 and PR ld/20784.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 08 Nov 2016 12:14:20 +0100
+
+binutils (2.27.51.20161105-2) unstable; urgency=medium
+
+  * Revert fix for PR ld/20535, causing PR ld/20784. Closes: #843339.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 06 Nov 2016 17:36:45 +0100
+
+binutils (2.27.51.20161105-1) unstable; urgency=medium
+
+  * New upstream snapshot, taken from the trunk.
+  * Disable the work around for the build failure on mips* targets.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 05 Nov 2016 13:12:01 +0100
+
+binutils (2.27.51.20161102-1) unstable; urgency=medium
+
+  * New upstream snapshot, taken from the trunk.
+    Security issues fixed: CVE-2016-6131, CVE-2016-4493, CVE-2016-4492,
+    CVE-2016-4490, CVE-2016-4489, CVE-2016-4488, CVE-2016-4487, CVE-2016-2226.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 02 Nov 2016 20:38:57 +0100
+
+binutils (2.27.51.20161027-2) experimental; urgency=medium
+
+  * Work around build failure on mips* targets.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 30 Oct 2016 19:35:41 +0200
+
+binutils (2.27.51.20161027-1) experimental; urgency=medium
+
+  * New upstream snapshot, taken from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 27 Oct 2016 16:57:21 +0200
+
+binutils (2.27-9) unstable; urgency=medium
+
+  * Update, taken from the 2.27 branch 20161014.
+    - Fix PR ld/20608, PR ld/20545, PR gold/20238.
+  * Fix cross build for non-standard cross archs (Helmut Grohne).
+    Closes: #839956.
+  * Fix ld segfault on ARM32, taken from the trunk. Closes: #840374.
+  * Fix PR ld/20648, taken from the trunk. Closes: #835544.
+  * Fix PR ld/20649, using proposed patch. Closes: #834147.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 17 Oct 2016 13:12:51 +0200
+
+binutils (2.27-8) unstable; urgency=medium
+
+  * Fix diversion updates for 32bit x86 targets.
+  * Update Break for hardening-wrapper.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 31 Aug 2016 10:11:22 +0200
+
+binutils (2.27-7) unstable; urgency=medium
+
+  * Update, taken from the 2.27 branch 20160830.
+    - Fix PR ld/20531.
+  * Fix diversion updates. Closes: #834836.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 30 Aug 2016 16:24:37 +0200
+
+binutils (2.27-6) unstable; urgency=high
+
+  * Update, taken from the 2.27 branch 20160819.
+    - Fix PR ld/20472.
+  * binutils-multiarch: Divert the triplet-prefixed names. Closes: #834253.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 19 Aug 2016 07:02:50 +0200
+
+binutils (2.27-5) unstable; urgency=high
+
+  * Update, taken from the 2.27 branch 20160812.
+  * Fix unexecutable MIPS binaries with -Wl,-z,noexecstack (Aurelian Jarno).
+    Closes: #834096.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 12 Aug 2016 09:27:17 +0200
+
+binutils (2.27-4) unstable; urgency=medium
+
+  * Fix gold on mipsr6 targets (Aurelian Jarno).
+
+ -- Matthias Klose <doko@debian.org>  Tue, 09 Aug 2016 21:58:13 +0200
+
+binutils (2.27-3) unstable; urgency=medium
+
+  * Backport patches to fix gold on sparc64 (James Clarke). Closes: #833688.
+  * Fix gold on mips64 targets (Aurelian Jarno). Closes: #833654.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 09 Aug 2016 12:15:51 +0200
+
+binutils (2.27-2) unstable; urgency=medium
+
+  * Disable gold for all mips cross targets too.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 07 Aug 2016 16:30:20 +0200
+
+binutils (2.27-1) unstable; urgency=medium
+
+  * binutils 2.27 release.
+  * Update, taken from the 2.27 branch 20160807.
+  * Re-enable gold on sparc and sparc64. Closes: #818934.
+  * Disable SH64 support for the multilib build.
+  * Disable gold on all mips targets, currently fails to link.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 07 Aug 2016 13:38:27 +0200
+
+binutils (2.26.1-1) unstable; urgency=medium
+
+  * binutils 2.26.1 release.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 30 Jun 2016 10:37:37 +0200
+
+binutils (2.26-12) unstable; urgency=medium
+
+  * Update, taken from the 2.26 branch 20160624.
+    - Fix PR ld/20254 (AVR), PR ld/20221 (AVR), PR ld/20244 (x86).
+    - Support for three more new POWER9 instructions.
+  * Cherry pick backports for AArch64 vulcan support (Dann Frazier).
+    LP: #1594452.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 24 Jun 2016 10:42:57 +0200
+
+binutils (2.26-11) unstable; urgency=medium
+
+  * Update, taken from the 2.26 branch 20160610.
+    - Fix PR ld/20159, reverting the change for PR ld/16467. LP: #1588123.
+  * Use ldconfig triggers instead of calling ldconfig directly.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 10 Jun 2016 18:37:39 +0200
+
+binutils (2.26-10) unstable; urgency=medium
+
+  * Update, taken from the 2.26 branch 20160601.
+    - Fix PR ld/20117, PR ld/20030, PR ld/20093.
+    - Support for a few more new POWER9 instructions.
+  * Build for N32 and MIPS r6 (YunQiang Su). Closes: #807377.
+  * Mark cross binutils as M-A: foreign (Helmut Grohne). Closes: #824424.
+  * More reproducible build fixes (Chris Lamb). Closes: #824413.
+  * Fix PR ld/19886, --as-needed regression, taken from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 01 Jun 2016 21:31:32 +0200
+
+binutils (2.26-9) unstable; urgency=medium
+
+  * Update, taken from the 2.26 branch 20160512.
+    - Fix PR ld/19878, PR ld/19827, PR gas/19909, PR ld/20006, PR gold/19047,
+      PR gas/20047,  PR 20060.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 12 May 2016 16:59:29 +0200
+
+binutils (2.26-8) unstable; urgency=medium
+
+  * Update, taken from the 2.26 branch 20160321.
+    - Fix PR ld/19827.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 21 Mar 2016 15:38:30 +0100
+
+binutils (2.26-7) unstable; urgency=medium
+
+  * Update, taken from the 2.26 branch 20160316.
+    - Fix PR ld/19623. Closes: #817891, PR ld/19539, PR binutils/19523.
+  * Fix cross-building from any-i386 (Samuel Thibault). Closes: #816128.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 16 Mar 2016 10:21:59 +0100
+
+binutils (2.26-6) unstable; urgency=medium
+
+  * Update, taken from the 2.26 branch 20160310.
+    - Fix PR ld/19579, PR ld/19752, PR ld/19739.
+    - Fix PR binutils/19775. Closes: #813006.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 10 Mar 2016 13:08:38 +0100
+
+binutils (2.26-5) unstable; urgency=medium
+
+  * Update, taken from the 2.26 branch 20160213.
+    - Fix PR ld/19698, PR ld/19553, ppc64 and AArch64 fixes.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 26 Feb 2016 17:07:29 +0100
+
+binutils (2.26-4) unstable; urgency=medium
+
+  * Update, taken from the 2.26 branch 20160213.
+    - Fix PR ld/19615, PR ld/19601 (closes: #812858), PR gas/19520.
+  * Fix stripping packages for cross builds. Closes: #813337.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 13 Feb 2016 17:13:00 +0100
+
+binutils (2.26-3) unstable; urgency=medium
+
+  * Update, taken from the 2.26 branch 20160203.
+  * Fix PR binutils/19523, objdump not supporting gnu_debuglink with
+    compressed debug sections; taken from the trunk. Closes: #812089.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 03 Feb 2016 15:11:43 +0100
+
+binutils (2.26-2) unstable; urgency=medium
+
+  * Do a release build, not enabled upstream for the release.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 27 Jan 2016 18:22:45 +0100
+
+binutils (2.26-1) unstable; urgency=medium
+
+  * binutils 2.26 release.
+    - Fix PR 19421, reverting the fix for PR 4317. Closes: #808246.
+  * Fix build failure with new coreutils. Closes: #812846.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 27 Jan 2016 12:36:00 +0100
+
+binutils (2.25.90.20160101-2) unstable; urgency=medium
+
+  * Apply proposed patch for PR ld/19368. Closes: #807974.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 05 Jan 2016 17:32:06 +0100
+
+binutils (2.25.90.20160101-1) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.26 branch (20160101).
+  * PR gas/19359, work around a GCC issue on POWER8.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 01 Jan 2016 13:40:16 +0100
+
+binutils (2.25.90.20151209-1) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.26 branch (20151209).
+  * Fix cross build dependencies. Closes: #807378.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 09 Dec 2015 12:41:22 +0100
+
+binutils (2.25.90.20151125-2) unstable; urgency=medium
+
+  * Add ARMv8.1 Virtualization Host Extensions support, taken from the trunk.
+  * Import zlib 1.2.8, taken from the trunk.
+  * Filter the date/user line from the cross binutils test results.
+    Closes: #806490.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 30 Nov 2015 11:52:26 +0100
+
+binutils (2.25.90.20151125-1) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.26 branch (20151125).
+    - Fixed stack overflow TEMP-0000000-A2945B.
+  * Build ppc64el binutils on ppc64.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 25 Nov 2015 14:19:39 +0100
+
+binutils (2.25.51.20151113-2) unstable; urgency=medium
+
+  * Backport patches from the trunk:
+    - Fix PR ld/19263, segfault for s390_elf. Closes: #805237.
+    - Fix PR ld/19264, account for .tbss alignment when adjusting start
+      of relro. LP: #1516444.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 19 Nov 2015 14:16:15 +0100
+
+binutils (2.25.51.20151113-1) unstable; urgency=medium
+
+  * Snapshot, taken from the just created 2.26 branch (20151113).
+    - Fixed PR ld/19123. Closes: #801879.
+    - Ignore relocations in .data.rel.ro.local (hppa). Closes: #801531.
+    - Fix PR gas/19217, wrong use of MOVT to replace LDR (ARM32). LP: #1513985.
+  * Stop building gold on sparc and sparc64. Closes: #803474.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 13 Nov 2015 11:08:24 +0100
+
+binutils (2.25.51.20151106-1) experimental; urgency=medium
+
+  * Snapshot, taken from the trunk 20151106.
+  * Work around PR ld/19188, internal linker error. LP: #1511542.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 06 Nov 2015 18:44:09 +0100
+
+binutils (2.25.51.20151028-1) experimental; urgency=medium
+
+  * Snapshot, taken from the trunk 20151028.
+    - Fix PR ld/19171 (LP: #1510067), PR ld/19175 (LP: #1510270).
+  * Revert the fix for PR gold/19119, fixing gold on armhf, arm64 and powerpc.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 28 Oct 2015 09:34:03 +0100
+
+binutils (2.25.51.20151021-1) experimental; urgency=medium
+
+  * Snapshot, taken from the trunk 20151021.
+  * binutils-i686-gnu: Don't ship ldscripts.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 21 Oct 2015 19:46:24 +0200
+
+binutils (2.25.51.20151020-1) experimental; urgency=medium
+
+  * Snapshot, taken from the trunk 20151020.
+  * Build cross packages for debian port architectures.
+  * Move libraries into the multiarch libdir.
+  * Include gold on KFreeBSD.
+  * Install the gnu-triplet prefixed binaries and manual pages as files,
+    and provide non-prefixed symlinks.
+  * Add a breaks in binutils for hardening-wrapper (<< 2.8); the diversions
+    need to be adopted for the real files.
+  * Don't ship windows related manual pages.
+  * Change the search order for ld to first search in /usr/lib*,
+    then in /usr/<gnu-triplet>/lib*.
+  * Run the testsuite for all cross targets.
+  * Configure with --disable-compressed-debug-sections.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 21 Oct 2015 01:14:01 +0200
+
+binutils (2.25.51.20151014-1) experimental; urgency=medium
+
+  * Snapshot, taken from the trunk 20151014.
+  * Explicitly configure --with-system-zlib.
+  * Disable compressed debug sections on x86. See PR gas/19109.
+  * Configure cross builds with --enable-initfini-array.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 15 Oct 2015 01:18:36 +0200
+
+binutils (2.25.1-7) unstable; urgency=medium
+
+  * Fix PR ld/18867, ld reloc sorting causing glibc to crash on alpha.
+    Taken from the branch. Closes: #792555.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 11 Oct 2015 10:33:38 +0200
+
+binutils (2.25.1-6) unstable; urgency=medium
+
+  * Configure with --enable-initfini-array (not the default for cross builds).
+  * Backport PR gold/18855 (sparc).
+
+ -- Matthias Klose <doko@debian.org>  Fri, 09 Oct 2015 14:57:11 +0200
+
+binutils (2.25.1-5) unstable; urgency=medium
+
+  * Fix setting the default library path on i386.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 05 Oct 2015 13:03:39 +0200
+
+binutils (2.25.1-4) unstable; urgency=medium
+
+  * On i386, configure for i686-linux-gnu. Provide i585-linux-gnu symlinks.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 01 Oct 2015 19:19:24 +0200
+
+binutils (2.25.1-3) unstable; urgency=medium
+
+  * Regenerate the control file. Closes: #799234.
+  * Configure cross builds with --with-sysroot=/. Closes: #799703.
+  * Backport PR ld/18668 from the trunk. Closes: #797666.
+  * Fix lintian warnings for the binutils-hppa64-linux-gnu package.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 22 Sep 2015 18:38:07 +0200
+
+binutils (2.25.1-2) unstable; urgency=medium
+
+  * Build cross binutils packages targeting the release architectures.
+  * Rename shared libraries for the cross packages and install into
+    the standard location.
+  * Don't ship the header files and static libraries for the cross packages.
+  * Rename binutils-hppa64 to binutils-hppa64-linux-gnu.
+  * PR binutils/18750, fix stack buffer overflows when parsing corrupt
+    ihex files.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 15 Sep 2015 01:54:21 +0200
+
+binutils (2.25.1-1) unstable; urgency=medium
+
+  * Binutils 2.25.1 release.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 08 Aug 2015 00:36:12 +0200
+
+binutils (2.25-11) unstable; urgency=medium
+
+  * Fix broken -Bsymbolic-functions on ARM32, hppa, m68k. Taken from
+    the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 31 Jul 2015 12:40:32 +0200
+
+binutils (2.25-10) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.25 branch 20150711.
+    - POWERPC fixes.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 11 Jul 2015 12:12:38 +0200
+
+binutils (2.25-9) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.25 branch 20150622.
+    - ARM32, AArch64, POWERPC fixes.
+  * Fix PR gas/18427, gas slow on hppa, taken from the trunk. Closes: #787192.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 22 Jun 2015 11:45:36 +0200
+
+binutils (2.25-8) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.25 branch 20150523.
+    - PPC and AArch64 backports from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 23 May 2015 09:44:54 +0200
+
+binutils (2.25-7) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.25 branch 20150411.
+  * More adjustments for reproducible builds. Closes: #774429.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 24 Apr 2015 13:18:01 +0200
+
+binutils (2.25-6) unstable; urgency=medium
+
+  * Apply patches from the 2.25 branch to address PR binutils/17512,
+    PR binutils/17531.
+  * Removal partial backports for PR binutils/17531.
+  * Configure with --enable-deterministic-archives. Closes: #774429.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 26 Mar 2015 16:40:36 +0100
+
+binutils (2.25-5) unstable; urgency=medium
+
+  * Remove '*.rej' files in the source package. Closes: #775679.
+  * Make the package build reproducibly (addresses: #774429):
+    - Fix mtimes before building binary packages.
+    - Stop recording the current time when creating gzip files.
+    - Sort file list in md5sums.
+    - Fix mtimes before building source tarball.
+    - Sort file list in binutils source tarball.
+    - If available, call strip-nondeterminism on static libraries.
+  * Fix PR ld/17827 - PIE copy relocations are broken with pointers.
+    Closes: #772958.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 25 Feb 2015 09:00:51 +0100
+
+binutils (2.25-4) unstable; urgency=medium
+
+  * Backport fixes for PR binutils/17531 up to 2014-12-22.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 15 Jan 2015 08:00:07 +0100
+
+binutils (2.25-3) unstable; urgency=medium
+
+  * Don't build as a release candidate, fixing the upper shlibs dependency.
+  * Refresh patches.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 25 Dec 2014 13:45:39 +0100
+
+binutils (2.25-2) unstable; urgency=medium
+
+  * Apply proposed patch for PR ld/17742 (don't create .eh_frame_hdr
+    on shared lib bfd).
+
+ -- Matthias Klose <doko@debian.org>  Thu, 25 Dec 2014 06:55:02 +0100
+
+binutils (2.25-1) unstable; urgency=medium
+
+  * binutils 2.25 release.
+    - MIPS specific gas update.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 25 Dec 2014 05:49:55 +0100
+
+binutils (2.24.90.20141219-1) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.25 branch 20141219.
+    - Fix PR ld/17713 (segfault), PR ld/17689 (link error), PR ld/15228.
+  * Apply proposed patch for PR gold/17729 (fixing ~600 GCC test failures).
+
+ -- Matthias Klose <doko@debian.org>  Fri, 19 Dec 2014 18:59:30 +0100
+
+binutils (2.24.90.20141209-1) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.25 branch 20141209.
+    - Fix PR binutils/17677, PR gold/17670 (powerpc),
+      PR gold/17566 (powerpc).
+
+ -- Matthias Klose <doko@debian.org>  Tue, 09 Dec 2014 09:31:53 +0100
+
+binutils (2.24.90.20141201-1) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.25 branch 20141201.
+    - Fix PR ld/16452, PR/ld/16457: Don't output symbol version
+      requirement for non-DT_NEEDED libs. Closes: #728529.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 01 Dec 2014 21:53:10 +0100
+
+binutils (2.24.90.20141128-1) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.25 branch 20141128.
+    - gold: Fix corrupted .eh_frame section with LTO and --gc-sections.
+    - gold: Fix PowerPC relaxation corner case.
+  * Relax upper shlibs version dependency to the next release candidate.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 28 Nov 2014 14:20:09 +0100
+
+binutils (2.24.90.20141124-1) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.25 branch 20141124.
+    - ppc alignment fixes, Go fixes
+    - PR binutils/17597, PR binutils/17512, PR binutils/17521, PR binutils/17533,
+      trunk backports for fixing the recent CVE issues.
+    - One more fix for Cortex-A53 Erratum 835769 (AArch64).
+
+ -- Matthias Klose <doko@debian.org>  Mon, 24 Nov 2014 17:29:27 +0100
+
+binutils (2.24.90.20141111-2) unstable; urgency=medium
+
+  * Fix ld -r abort in _bfd_elf_write_section_eh_frame, taken from the trunk.
+    Closes: #769067.
+
+ -- Matthias Klose <doko@debian.org.org>  Tue, 11 Nov 2014 11:10:27 +0100
+
+binutils (2.24.90.20141111-1) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.25 branch 20141111.
+    - Update .MIPS.abiflags to support MIPS R6.
+  * gold: Misc updates for the AArch64 backend, taken from the trunk.
+  * Mention some CVE issues, fixed in the 20141104 snapshot:
+    - CVE-2014-8484 (PR binutils/17509).
+    - CVE-2014-8485, CVE-2014-8504 (PR binutils/17510).
+    - CVE-2014-8501, CVE-2014-8502, CVE-2014-8503 (PR binutils/17512).
+  * Fix some lintian warnings.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 11 Nov 2014 07:55:51 +0100
+
+binutils (2.24.90.20141104-1) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.25 branch 20141104.
+    - Fix PR bfd/17481.
+    - Fix PR17488, powerpc64-linux-ld segfault. LP: #1381580.
+    - Fix PR ld/17492. LP: #882353.
+    - Fix PR gas/17493. LP: #1051156.
+    - Add gcc-4.9 libgomp symbols requiring --plt-thread-safe for power7.
+    - PowerPC64 ELFv1 function symbol definition vs LTO and discarded sections.
+    - ppc: enable msgclr and msgsnd on Power8.
+    - Relax ppc64_elf_tls_optimize assertion.
+  * Pick patch from the trunk:
+    - Support relexation for the gold aarch64 backend.
+    - AArch64: move bogus assertion.
+    - Fix build configured with --enable-targets=aarch64-linux.
+    - Fix running ld-unique tests on ARM.
+    - gas: Recognize: AArch64 ThunderX processor.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 04 Nov 2014 02:14:45 +0100
+
+binutils (2.24.90.20141014-1) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.25 branch 20141014.
+  * Remove patches picked from upstream.
+  * Build gold on AArch64.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 14 Oct 2014 12:46:08 +0200
+
+binutils (2.24.51.20141001-4) unstable; urgency=high
+
+  * Fix PR ld/17647, taken from upstream. Closes: #764573.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 13 Oct 2014 20:03:30 +0200
+
+binutils (2.24.51.20141001-3) unstable; urgency=medium
+
+  * Fix PR ld/17447, taken from upstream. LP: #1371636.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 07 Oct 2014 12:26:24 +0200
+
+binutils (2.24.51.20141001-1) unstable; urgency=medium
+
+  * Snapshot, taken from the trunk 20141001.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 01 Oct 2014 02:32:06 +0200
+
+binutils (2.24.51.20140918-1) unstable; urgency=medium
+
+  * Snapshot, taken from the trunk 20140918.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 18 Sep 2014 19:28:16 +0200
+
+binutils (2.24.51.20140903-1) unstable; urgency=medium
+
+  * Snapshot, taken from the trunk 20140903.
+  * Try to work around binutils-multiarch build failure on sh4 by disabling
+    hppa targets for the binutils-multiarch build. Addresses: #758830.
+  * Enable powerpc targets for ppc64el. Closes: #760395.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 03 Sep 2014 23:02:26 +0200
+
+binutils (2.24.51.20140818-1) unstable; urgency=high
+
+  * Snapshot, taken from the trunk 20140818.
+    - Fix GLIBC ifunc breakage on PowerPC64 ELFv2. LP: #1355962.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 18 Aug 2014 13:49:01 +0200
+
+binutils (2.24.51.20140814-2) unstable; urgency=medium
+
+  * Still provide i486-* symlinks.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 17 Aug 2014 17:06:36 +0200
+
+binutils (2.24.51.20140814-1) unstable; urgency=medium
+
+  * Snapshot, taken from the trunk 20140814.
+    - Add ld options --push-state and --pop-state.
+  * binutils-hppa64: Set architecture to hppa.
+  * Add aarch64_ilp32-linux-gnu multiarch directories to the search path.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 14 Aug 2014 13:28:40 +0200
+
+binutils (2.24.51.20140807-1) unstable; urgency=medium
+
+  * Snapshot, taken from the trunk 20140807.
+    - Remove patch for pr14918, integrated upstream.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 07 Aug 2014 11:41:44 +0200
+
+binutils (2.24.51.20140727-1) unstable; urgency=medium
+
+  * Snapshot, taken from the trunk 20140727.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 27 Jul 2014 15:44:40 +0200
+
+binutils (2.24.51.20140709-1) unstable; urgency=medium
+
+  * Snapshot, taken from the trunk 20140709.
+    - Fix PR gold/15639, -flto and ld.gold on ARM.
+      Closes: #712189. LP: #1191909.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 09 Jul 2014 19:44:18 +0200
+
+binutils (2.24.51.20140704-1) unstable; urgency=medium
+
+  * Snapshot, taken from the trunk 20140704.
+  * Build gold for mips* targets.
+  * Update the patch for the mips64el support. Closes: #750566, #753052.
+  * Update patches for the current trunk.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 04 Jul 2014 12:00:05 +0200
+
+binutils (2.24.51.20140617-1) unstable; urgency=medium
+
+  * Snapshot, taken from the trunk 20140617.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 17 Jun 2014 10:29:20 +0200
+
+binutils (2.24.51.20140604-3) unstable; urgency=medium
+
+  * Update the mips64-default-n64 patch (Yunqiang Su). Closes: #750566.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 07 Jun 2014 13:43:35 +0200
+
+binutils (2.24.51.20140604-2) unstable; urgency=medium
+
+  * Stop applying the mips64-default-n64 patch until it is updated.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 05 Jun 2014 11:20:39 +0200
+
+binutils (2.24.51.20140604-1) unstable; urgency=medium
+
+  * Snapshot, taken from the trunk 20140604.
+  * Refactor rules for consistent usage of the PF macro (Helmut Grohne).
+
+ -- Matthias Klose <doko@debian.org>  Wed, 04 Jun 2014 13:48:21 +0200
+
+binutils (2.24.51.20140425-1) unstable; urgency=medium
+
+  * Snapshot, taken from the trunk 20140425.
+  * Refactor rules for consistent usage of the PF macro (Helmut Grohne).
+  * On x86 targets provide gnu-type prefixed binaries with the cpu that GCC
+    is configured for.
+  * 129_multiarch_libpath.patch: Fix to search multiarch dirs, only needed
+    for a minority of packages still using ld directly for linking instead
+    of the recommended use of gcc.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 27 Apr 2014 21:52:56 +0200
+
+binutils (2.24.51.20140411-2) unstable; urgency=medium
+
+  * No-change rebuild to get rid off ftp-master mail storm.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 12 Apr 2014 15:23:31 +0200
+
+binutils (2.24.51.20140411-1) unstable; urgency=medium
+
+  * Snapshot, taken from the trunk 20140411.
+  * Provide $(DEB_HOST_GNU_TYPE)- prefixed binaries and man pages.
+  * Don't enable the spu targets on powerpc targets anymore.
+  * Build the gold linker on hurd-i386 (Svante Signell). Closes: #744020.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 11 Apr 2014 18:49:22 +0200
+
+binutils (2.24-5) unstable; urgency=medium
+
+  * Update from the 2.24 branch, 20140321.
+  * Stop building the binutils-spu package.
+  * Add a binutils-multiarch-dev package. Closes: #583160
+
+ -- Matthias Klose <doko@debian.org>  Fri, 21 Mar 2014 11:23:40 +0100
+
+binutils (2.24-4) unstable; urgency=medium
+
+  * Update from the 2.24 branch, 20140304.
+  * Update Aarch64 ilp32 linker and libdir names.
+  * Fix relocations for thread local variables on AArch64. Updated patch
+    taken from the trunk.
+  * Enable AArch64 big endian targets for AArch64 builds and for
+    binutils-multiarch.
+  * gas: Add entry for "xgene1" (AArch64).
+  * gas: Remove the alignment limit on AArch64.
+  * Add a Built-Using attribute for for the binutils-cross-* packages.
+    Closes: #738311.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 04 Mar 2014 02:21:00 +0100
+
+binutils (2.24-3) unstable; urgency=medium
+
+  * Update from the 2.24 branch, 20140124.
+  * Display the reference causing a shared library to be needed (taken from
+    the trunk).
+
+ -- Matthias Klose <doko@debian.org>  Fri, 24 Jan 2014 14:39:48 +0100
+
+binutils (2.24-2) unstable; urgency=medium
+
+  * Update from the 2.24 branch, 20131209.
+  * Remove versioned build dependencies which are not needed anymore
+    since 2005.
+  * Drop the ld_system_root patch.
+  * Fix PowerPC64 linking of --just-symbols objects (Alan Modra).
+
+ -- Matthias Klose <doko@debian.org>  Mon, 09 Dec 2013 13:57:43 +0100
+
+binutils (2.24-1) unstable; urgency=low
+
+  * Final upstream release.
+  * ifunc updates for AArch64, taken from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 02 Dec 2013 11:21:16 +0200
+
+binutils (2.23.91.20131123-1) unstable; urgency=low
+
+  * New upstream snapshot, taken from the 2.24 branch.
+  * Stop shipping libiberty, now available in libiberty-dev.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 23 Nov 2013 08:27:51 +0100
+
+binutils (2.23.90.20131116-1) unstable; urgency=low
+
+  * New upstream snapshot, taken from the 2.24 branch.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 16 Nov 2013 12:40:28 +0100
+
+binutils (2.23.90.20131017-1) unstable; urgency=low
+
+  * New upstream snapshot, taken from the 2.24 branch.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 17 Oct 2013 14:22:05 +0200
+
+binutils (2.23.90.20130927-1) unstable; urgency=low
+
+  * New upstream snapshot, taken from the 2.24 branch.
+  * Add ifunc support for AArch64.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 27 Sep 2013 14:05:44 +0200
+
+binutils (2.23.52.20130828-1) unstable; urgency=low
+
+  * New upstream snapshot.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 28 Aug 2013 15:22:51 +0200
+
+binutils (2.23.52.20130727-1) unstable; urgency=low
+
+  * New upstream snapshot.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 27 Jul 2013 10:37:11 +0200
+
+binutils (2.23.52.20130722-1) unstable; urgency=low
+
+  * New upstream snapshot.
+    - Fix PR ld/15762, glibc being built without warning sections.
+  * Set the libdir for arm64 to lib, not lib64.
+  * Stop building the binutils-gold package, let binutils provide
+    binutils-gold.  Packages requiring gold should explicity pass
+    -fuse-ld=gold to the compiler, packages requiring the bfd linker
+    should pass -fuse-ld=bfd to the compiler.
+  * Refresh patches.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 22 Jul 2013 21:13:32 +0200
+
+binutils (2.23.52.20130620-1) unstable; urgency=low
+
+  * New upstream snapshot.
+  * Add conflicts with mingw binutils. Closes: #712057, #712063.
+  * Always compare the test results with the ones from the installed binutils.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 20 Jun 2013 12:27:31 +0200
+
+binutils (2.23.52.20130612-1) unstable; urgency=low
+
+  * New upstream snapshot.
+    - Fix issue #15323, redefining weak functions in -flto incrementally-linked
+      executable. Closes: #710936.
+  * Install libiberty.a again in binutils-dev, not installed anymore upstream
+    by default.
+  * Import the autopkg tests from Ubuntu.
+  * Enable i386pep emulation for the x86 builds. Closes: #703463.
+  * Fix typo in ld(1). Closes: #704867.
+  * Add mips64(el) support (YunQiang Su). Closes: #710214.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 12 Jun 2013 11:35:05 +0200
+
+binutils (2.23.52.20130522-1) experimental; urgency=low
+
+  * New upstream snapshot.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 22 May 2013 16:22:04 +0200
+
+binutils (2.23.2-2) experimental; urgency=low
+
+  * Add support for Cortex-A53 / Cortex-A57.
+  * Fix PR gas/14887 and PR gas/14987, gas syntax errors on ARM.
+    LP: #1166628.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 16 Apr 2013 02:21:44 +0200
+
+binutils (2.23.2-1) experimental; urgency=low
+
+  * binutils 2.23.2 release.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 26 Mar 2013 19:58:59 +0100
+
+binutils (2.23.1-1~exp6) experimental; urgency=low
+
+  * Update from the 2.23 branch (20130222).
+  * For cross builds, add the tool libdir to the library search path.
+  * Revert broken patch:
+    - Recognize DEB_TARGET_ARCH for cross builds.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 23 Feb 2013 01:57:30 +0100
+
+binutils (2.23.1-1~exp5) experimental; urgency=low
+
+  * Update from the 2.23 branch (20130213).
+    - AArch64 and PPC updates.
+  * Recognize DEB_TARGET_ARCH for cross builds. Closes: #695595.
+  * Fix srec_scan null dereference (Sang Kil Cha). Closes: #684903.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 13 Feb 2013 12:10:31 +0100
+
+binutils (2.23.1-1~exp4) experimental; urgency=low
+
+  * Fix PR ld/14918: linking with -flto always links in libgcc_s.so.
+    Closes: #650145.
+  * Fix build failure with texinfo 4.14. Closes: #697353.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 05 Jan 2013 14:06:23 +0100
+
+binutils (2.23.1-1~exp3) experimental; urgency=low
+
+  * Update from the 2.23 branch (20121204).
+  * Add fuse-ld= for GCC linker option compatibility in ld and gold.
+  * gold cross builds: Search the multiarch directories too.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 05 Dec 2012 08:35:10 +0100
+
+binutils (2.23.1-1~exp2) experimental; urgency=low
+
+  * Update from the 2.23 branch (20121121).
+    - arm, arm64 and x32 updates.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 21 Nov 2012 13:47:06 +0100
+
+binutils (2.23.1-1~exp1) experimental; urgency=low
+
+  * binutils 2.23.1 release.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 15 Nov 2012 13:50:55 +0100
+
+binutils (2.23-1) experimental; urgency=low
+
+  * Update multi-arch paths for x32 (x86_64-linux-gnux32) (Daniel Schepler).
+    Closes: #692138.
+  * Add new ARM hard-float/soft-float ABI flags for EABI_VER5 (Steve McIntyre).
+  * Silence lintian stupidity about interpreting every string in binaries
+    as text (Emmanuel Fleury). Closes: #661639.
+  * In ld.texi, remove cross reference to BFD internals documentation.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 06 Nov 2012 10:42:37 +0100
+
+binutils (2.23-1) experimental; urgency=low
+
+  * binutils 2.23 release.
+  * Don't include the documents licensed under GFDL with cover texts.
+    Closes: #650504.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 24 Oct 2012 10:29:50 +0200
+
+binutils (2.22.90.20120924-1) experimental; urgency=low
+
+  * New upstream snapshot (taken from the 2.23 branch).
+  * Fix bfd.h, removing the safety inclusion guard.
+  * Fix multilib conflicts of generated values by __WORDSIZE-based expressions.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 24 Sep 2012 18:39:51 +0200
+
+binutils (2.22.90.20120913-2) experimental; urgency=low
+
+  * Undo the reversion of the mips patches, unrelated issue.
+  * Build again with -marm on armhf. Testsuite still not ready for thumb mode.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 15 Sep 2012 03:00:10 +0200
+
+binutils (2.22.90.20120913-1) experimental; urgency=low
+
+  * New upstream snapshot (taken from the 2.23 branch).
+  * Add R_AARCH64_GOT_LD_PREL19 reloc implementation, taken from the trunk.
+  * Revert mips updates.
+    See http://sourceware.org/ml/binutils/2012-09/msg00158.html
+
+ -- Matthias Klose <doko@debian.org>  Thu, 13 Sep 2012 20:35:08 +0200
+
+binutils (2.22.90.20120907-2) experimental; urgency=low
+
+  * Fix build failure on kfreebsd.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 09 Sep 2012 15:41:54 +0200
+
+binutils (2.22.90.20120907-1) experimental; urgency=low
+
+  * New upstream snapshot (taken from the 2.23 branch).
+  * Don't build anymore with -marm on armhf.
+  * Work around `install' limitation not able to pass parameters
+    to the strip command. Closes: #686183.
+  * Generate md5sums file. Closes: #684079.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 08 Sep 2012 13:40:39 +0200
+
+binutils (2.22.90.20120816-2) experimental; urgency=low
+
+  * Some refactoring of debian/rules based on patches from Marcin:
+  * Introduce DEB_TARGET_* macros to unify native and cross builds.
+  * Build the control file as the first step for cross builds.
+  * Try again building without --disable-werror.
+  * Refactor stripping of binaries into a `strip_package' macro.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 21 Aug 2012 15:31:05 +0200
+
+binutils (2.22.90.20120816-1) experimental; urgency=low
+
+  * New upstream snapshot (taken from the 2.23 branch).
+  * Configure for aarch64 and x32 targets.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 16 Aug 2012 13:26:56 +0200
+
+binutils (2.22.90.20120731-1) experimental; urgency=low
+
+  * New upstream snapshot (taken from the 2.23 branch).
+
+ -- Matthias Klose <doko@debian.org>  Tue, 31 Jul 2012 22:20:22 +0200
+
+binutils (2.22.52.20120704-1) experimental; urgency=low
+
+  * New upstream snapshot.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 04 Jul 2012 14:40:01 +0200
+
+binutils (2.22-7) unstable; urgency=low
+
+  * Update from the binutils-2_22-branch 20120704.
+    - Fix PR ld/13991 and a gold issue on ARM.
+  * Fix warning building libiberty/md5.c. Closes: #674831.
+  * Enable x86_64-pep in binutils-multiarch. Closes: #675364.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 04 Jul 2012 11:00:14 +0200
+
+binutils (2.22-6.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Fix PR ld/14069 (hurd-i386) (Closes: #671804).
+
+ -- Samuel Thibault <sthibault@debian.org>  Fri, 18 May 2012 11:52:14 +0200
+
+binutils (2.22-6) unstable; urgency=low
+
+  * Update from the binutils-2_22-branch 20120307.
+    - Fix PR ld/12161 (avr), PR binutils/13622 (readelf crash),
+      PR binutils/13476 (hppa), PR ld/13387 (hppa), 
+  * Fix typo in elf64-x86-64.c, follow-up patch to PR ld/13302.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 08 Mar 2012 18:52:20 +0100
+
+binutils (2.22-5) unstable; urgency=low
+
+  * Update from the binutils-2_22-branch 20120124.
+    - Fix PR ld/13581 (x32).
+  * Fix PR gas/13449 (ARM), taken from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 24 Jan 2012 21:26:43 +0100
+
+binutils (2.22-4) unstable; urgency=low
+
+  * Don't bump the soversion (revert the change in 2.22-3).
+  * Apply proposed patch for PR binutils/13534, allowing ar to handle
+    files bigger than 2GB (Francois Gouget). Closes: #652887).
+  * Recognize DW_LANG_Go in readelf (backport from trunk).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 07 Jan 2012 09:07:25 +0100
+
+binutils (2.22-3) unstable; urgency=low
+
+  * Update from the binutils-2_22-branch 20120102.
+    - gold updates.
+    - mips updates.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 03 Jan 2012 06:06:20 +0100
+
+binutils (2.22-2) unstable; urgency=low
+
+  * Update from the binutils-2_22-branch 20111211.
+  * Fix build failure with make 3.82 (Daniel Schepler). Closes: #650064.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 11 Dec 2011 16:30:14 +0000
+
+binutils (2.22-1) unstable; urgency=low
+
+  * Binutils 2.22 release.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 21 Nov 2011 16:50:53 +0100
+
+binutils (2.21.90.20111025-1) unstable; urgency=low
+
+  * Snapshot, taken from the binutils-2_22-branch 20111025.
+  * Fix lintian warnings.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 25 Oct 2011 15:06:46 +0200
+
+binutils (2.21.90.20111019-3) unstable; urgency=low
+
+  * Fix PR ld/13302, taken from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 23 Oct 2011 13:15:07 +0200
+
+binutils (2.21.90.20111019-2) unstable; urgency=low
+
+  * Fix PR ld/13287, taken from the trunk. LP: #872687.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 20 Oct 2011 12:29:18 +0200
+
+binutils (2.21.90.20111019-1) unstable; urgency=low
+
+  * Snapshot, taken from the binutils-2_22-branch 20111019.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 19 Oct 2011 22:25:05 +0200
+
+binutils (2.21.90.20111004-2) unstable; urgency=low
+
+  * Fix PR ld/13250, preserve the maximum alignment and size for common
+    symbols (H.J. Lu). Closes: #608901. LP: #697229.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 06 Oct 2011 08:06:04 +0200
+
+binutils (2.21.90.20111004-1) unstable; urgency=medium
+
+  * Snapshot, taken from the binutils-2_22-branch 20111004.
+  * Fix PR ld/13195, taken from the trunk. Closes: #643858, #644183.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 04 Oct 2011 12:12:16 +0200
+
+binutils (2.21.53.20110922-1) unstable; urgency=low
+
+  * Snapshot, taken from the binutils-2_22-branch 20110924.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 24 Sep 2011 09:55:38 +0200
+
+binutils (2.21.53.20110910-1) unstable; urgency=low
+
+  * Snapshot, taken from the trunk 20110910.
+    - Fix PR gas/13024. Closes: #635592.
+  * Build with proposed patch for PR ld/12965.
+  * Don't ship .la files in the cross binutils packages.
+  * For native builds, add the multiarch directories to the default
+    search path.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 10 Sep 2011 13:06:01 +0200
+
+binutils (2.21.53.20110823-3) unstable; urgency=low
+
+  * Revert the last change:
+    - Default to --hash-style=both in ld.bfd and ld.gold.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 25 Aug 2011 10:48:28 +0200
+
+binutils (2.21.53.20110823-2) unstable; urgency=low
+
+  * Default to --hash-style=both in ld.bfd and ld.gold.
+  * Fix s390x build (Aurelian Jarno). Closes: #635167.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 24 Aug 2011 13:06:48 +0200
+
+binutils (2.21.53.20110823-1) unstable; urgency=low
+
+  * Snapshot, taken from the trunk 20110823.
+    - ld --no-copy-dt-needed-entries/--no-add-needed is now the default.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 23 Aug 2011 21:23:38 +0200
+
+binutils (2.21.53.20110805-1) unstable; urgency=low
+
+  * Snapshot, taken from the trunk 20110805.
+
+ -- Matthias Klose <doko@ubuntu.com>  Fri, 05 Aug 2011 12:25:49 +0200
+
+binutils (2.21.53.20110729-1) unstable; urgency=low
+
+  * Snapshot, taken from the trunk 20110729.
+  * Fix s390x build (Aurelian Jarno). Closes: #635167.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 29 Jul 2011 19:04:46 +0200
+
+binutils (2.21.53.20110720-1) unstable; urgency=low
+
+  * Snapshot, taken from the trunk 20110720.
+    - Fix PR ld/12978. Closes: #632681.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 20 Jul 2011 20:54:51 +0200
+
+binutils (2.21.52.20110707-1) unstable; urgency=low
+
+  * Snapshot, taken from the trunk 20110707.
+    - Fix build failure on mips/mipsel. Closes: #632690.
+    - Fix issues on kfreebsd-amd64. Closes: #632671.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 07 Jul 2011 06:48:33 +0200
+
+binutils (2.21.52.20110703-1) unstable; urgency=low
+
+  * Snapshot, taken from the trunk 20110703.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 03 Jul 2011 21:56:44 +0200
+
+binutils (2.21.52.20110606-2) unstable; urgency=low
+
+  * Fix PR ld/12845, taken from the trunk. Closes: #628685.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 09 Jun 2011 12:45:15 +0200
+
+binutils (2.21.52.20110606-1) unstable; urgency=low
+
+  * Snapshot, taken from the trunk 20110606.
+    - Fix PR ld/12833. Closes: #628770.
+    - Fix spelling errors. Closes: #604696.
+  * Let gold accept a dummy -z buildd-<random-string> option.
+  * Add a /usr/share/bug/binutils/presubj file for reportbug (and symlinks
+    from the other /usr/share/bug/binutils-foo directories) explaining how
+    to make a self-contained testcase (Jonathan Nieder). Closes: #629147.
+  * Fix ld crash cause of invalid pointer in munmap_chunk. Closes: #628916.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 07 Jun 2011 00:03:47 +0200
+
+binutils (2.21.51.20110523-1) unstable; urgency=low
+
+  * Snapshot, taken from the trunk 20110523.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 23 May 2011 23:38:52 +0200
+
+binutils (2.21.51.20110421-6) unstable; urgency=low
+
+  [ Marcin Juszkiewicz ]
+  * Use pregenerated ld.gold.1 for cross builds.
+
+  [ Matthias Klose ]
+  * Redefine STRIP and install_binary for cross builds (Ken Werner).
+  * Apply fix for PR ld/12726, taken from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 19 May 2011 15:51:22 +0200
+
+binutils (2.21.51.20110421-5) unstable; urgency=medium
+
+  * Use a symlink for /usr/bin/ld, even if gold is not built. Closes: #615262.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 17 May 2011 17:58:17 +0200
+
+binutils (2.21.51.20110421-4) unstable; urgency=low
+
+  * Fix PR ld/12730, taken from the trunk. Closes: #625616.
+  * Cortex A8 workarounds for PLT tail calls (Richard Sandiford).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 08 May 2011 02:06:22 +0200
+
+binutils (2.21.51.20110421-3) unstable; urgency=low
+
+  * Fix segfault in ar, delete_members.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 01 May 2011 17:30:42 +0200
+
+binutils (2.21.51.20110421-2) unstable; urgency=low
+
+  * Fix typo in the patch for PR gas/12698.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 27 Apr 2011 21:33:47 +0200
+
+binutils (2.21.51.20110421-1) unstable; urgency=low
+
+  * Snapshot, taken from the trunk 20110421.
+  * Install a man page for ld.gold, generated by help2man. Closes: #619823.
+  * Apply proposed patch for PR gas/12698. Closes: #623964.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 27 Apr 2011 18:14:39 +0200
+
+binutils (2.21.51.20110419-2) unstable; urgency=low
+
+  * Fix powerpcspe and sparc builds.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 19 Apr 2011 13:47:56 +0200
+
+binutils (2.21.51.20110419-1) unstable; urgency=low
+
+  * Snapshot, taken from the trunk 20110419.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 19 Apr 2011 10:18:14 +0200
+
+binutils (2.21.51.20110409-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20110409.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 09 Apr 2011 13:53:24 +0200
+
+binutils (2.21.51.20110403-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20110403.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 03 Apr 2011 23:54:13 +0200
+
+binutils (2.21.0.20110327-3) unstable; urgency=high
+
+  * Fix architecture field for binutils-gold (powerpcspe).
+  * Add support for arm-*-gnueabihf targets. Closes: #621029.
+  * Fix PR ld/12654: Properly handle R_386_TLS_LDO_32 for PIE. LP: #663294.
+  * Fix PR ld/12637, reloc overflow for R_MIPS_TLS_LDM (Richard Sandiford),
+    taken from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 10 Apr 2011 17:23:40 +0200
+
+binutils (2.21.0.20110327-2) unstable; urgency=low
+
+  * Fix architecture field for binutils-gold.
+  * Configure with --disable-werror on armhf.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 29 Mar 2011 19:38:55 +0200
+
+binutils (2.21.0.20110327-1) unstable; urgency=low
+
+  * Update from the 2.21 branch 20110327.
+  * Add multiarch directories to linker search path. Closes: #369064.
+    LP: #738098.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 27 Mar 2011 22:32:57 +0100
+
+binutils (2.21.0.20110322-1) unstable; urgency=low
+
+  * Update from the 2.21 branch 20110322.
+  * S/390: Make as to accept all instructions if no -march option given.
+    taken from the trunk (Aurelian Jarno). Closes: #618751.
+  * Extend support for armhf (Loic Minier).
+    - debian/control.in, debian/control, debian/rules: Enable gold for armhf.
+    - debian/rules: Introduce $(CROSS) (set to $(DEB_HOST_GNU_TYPE)- when
+      cross-building) and call $(CROSS)cpp to check whether -marm is needed or
+      not instead of testing for armel; an alternative would be to
+      unconditionally set -marm if DEB_HOST_ARCH_CPU is arm.
+    - debian/rules: commented out -fno-section-anchors CFLAGS handling would
+      also be enabled for armhf.
+    - debian/rules: ignore regressions on armhf as well; note that
+      ignore_regressions is set three times.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 22 Mar 2011 23:12:39 +0100
+
+binutils (2.21.0.20110302-2) unstable; urgency=low
+
+  [ Carlos O'Donell ]
+  * Fix binutils-hppa64 build.
+
+  [ Matthias Klose ]
+  * Fix PR ld/12376 (John David Anglin), taken from the trunk.
+  * Update to the 2.21 branch, 20110310.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 10 Mar 2011 21:35:07 +0100
+
+binutils (2.21.0.20110302-1) unstable; urgency=low
+
+  * Update from the 2.21 branch.
+
+  [ Thorsten Glaser ]
+  * patches/640_m68k_fix-TLS_GD-relocation: new, temp. Closes: #611768.
+
+  [ Matthias Klose ]
+  * On ppc64, look for 32 bit target libraries in /lib32, /usr/lib32 etc.,
+    first.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 02 Mar 2011 02:41:17 +0100
+
+binutils (2.21.0.20110216-2) unstable; urgency=low
+
+  * Upload to unstable.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 22 Feb 2011 20:35:16 +0100
+
+binutils (2.21.0.20110216-1) experimental; urgency=low
+
+  * Update from the 2.21 branch.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 16 Feb 2011 15:54:15 +0100
+
+binutils (2.21-5) experimental; urgency=low
+
+  * Update gold to 1.11, taken from the 2.21 branch.
+  * Add the arm-linux-gnueabi target to binutils-multiarch (Loic Minier).
+
+ -- Matthias Klose <doko@ubuntu.com>  Tue, 25 Jan 2011 00:51:38 +0100
+
+binutils (2.21-4) experimental; urgency=low
+
+  * Fix handling of writable .eh_frame section in gold, taken from the
+    2.21 branch.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 12 Jan 2011 00:42:15 +0100
+
+binutils (2.21-3) experimental; urgency=low
+
+  [ Matthias Klose ]
+  * Don't include `-system' in the bfd version identifier.
+
+  [ Sedat Dilek ]
+  * 160_pr12327.patch: Fix PR ld/12327, taken from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 29 Dec 2010 23:51:35 +0100
+
+binutils (2.21-2) experimental; urgency=low
+
+  * Don't install ld.bfd in binutils-multiarch.
+  * Fix assembler bug blocking Thumb-2 kernel builds (CS issue #8775).
+
+ -- Matthias Klose <doko@debian.org>  Fri, 10 Dec 2010 13:45:00 +0100
+
+binutils (2.21-1) experimental; urgency=low
+
+  * binutils 2.21 release.
+
+  [ Marcin Juszkiewicz ]
+  * Enable building gold in cross builds. LP: #686530.
+  * Allow to build only the -source package, and include the version
+    in the package name. LP: #682646.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 09 Dec 2010 23:24:49 +0100
+
+binutils (2.20.90.20101121-1) experimental; urgency=low
+
+  * Update from the binutils 2.21 release branch.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 21 Nov 2010 14:03:14 +0100
+
+binutils (2.20.90.20101105-2) experimental; urgency=low
+
+  * binutils 2.21 prerelease 1.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 10 Nov 2010 01:04:59 +0100
+
+binutils (2.20.51.20101028-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20101028.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 28 Oct 2010 16:57:11 +0200
+
+binutils (2.20.51.20101009-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20101009.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 09 Oct 2010 14:41:08 +0200
+
+binutils (2.20.51.20100925-2) experimental; urgency=low
+
+  * Allow ar scripts to contain ~ in the filename (Zygmunt Krynicki, taken
+    from Linaro). LP: #641488.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 30 Sep 2010 10:20:41 +0200
+
+binutils (2.20.51.20100925-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20100925.
+  * Fix PR ld/10144, mips/ld: non-dynamic relocations refer to dynamic symbol
+    Closes: #519006.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 25 Sep 2010 16:24:20 +0200
+
+binutils (2.20.51.20100908-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20100908.
+  * Link executables statically when `static' is passed in DEB_BUILD_OPTIONS
+    (Jim Heck). Closes: #590101.
+  * Apply proposed patch for PR ld/10340 (ld doesn't honor sysroot prefix
+    for ldscripts). LP: #625320.
+  * Build binutils-hppa64 in cross builds (Al Viro). Closes: #595319.
+  * Fix some lintian warnings.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 08 Sep 2010 16:31:47 +0200
+
+binutils (2.20.51.20100813-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20100813.
+
+  [ Jonathan Nieder ]
+  * Remove ld.bfd from binutils-multiarch (not that useful without an
+    multiarch assembler).
+
+  [ Marcin Juszkiewicz ]
+  * Revert sysroot to / for cross builds. LP: #598389.
+  * Generate debian/control for native and cross builds. LP: #612629.
+  * Provide packaging rules in -source package. LP: #608745.
+
+  [ Matthias Klose ]
+  * Don't apply patches, when PATCHED_SOURCES is set to `yes'.
+  * Proposed patch for PR11889, readelf crashes for malformed binaries
+    (Dan Rosenberg). LP: #614206.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 13 Aug 2010 11:10:14 +0200
+
+binutils (2.20.51.20100710-2) experimental; urgency=medium
+
+  * Don't use configury for cross builds for native builds. LP: #604134.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 11 Jul 2010 10:24:28 +0200
+
+binutils (2.20.51.20100710-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20100710.
+    - Fix PR gas/10531. LP: #599485.
+  * debian/rules: Introduce PF macros (Jim Heck). Closes: #588357.
+
+  [ Marcin Juszkiewicz ]
+  * Don't install documentation files in -cross packages.  Closes: #586636.
+  * Set sysroot to /usr/$(TARGET) for cross builds. LP: #598389.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 10 Jul 2010 10:42:55 +0200
+
+binutils (2.20.51.20100617-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20100617.
+  * Merge 'binary-cross' target into 'binary' one (Marcin Juszkiewicz).
+  * debian/copyright: Update to GFDL 1.3.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 17 Jun 2010 15:20:34 +0200
+
+binutils (2.20.51.20100527-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20100527.
+
+  [ Jonathan Nieder ]
+  * debian/binutils-multiarch.preinst.in: Re-add diversions on reinstall.
+    Closes: #581156.
+  * Remove c++filt from binutils-multiarch.
+  * Rename /usr/bin/ld from multiarch build to ld.bfd. Closes: #582490.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 27 May 2010 10:40:48 +0200
+
+binutils (2.20.51.20100518-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20100518.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 18 May 2010 13:29:45 +0200
+
+binutils (2.20.51.20100428-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20100428.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 28 Apr 2010 10:07:28 +0200
+
+binutils (2.20.51.20100418-2) experimental; urgency=low
+
+  * Add upper dependency 
+
+ -- Matthias Klose <doko@debian.org>  Sun, 18 Apr 2010 20:52:41 +0200
+
+binutils (2.20.51.20100418-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20100418.
+  * debian/*.shlibs.in: Automate upstream version changes.
+  * Configure native build --with-sysroot=/. Closes: #556126.
+  * Move the ld.gold binary into the binutils package, just keep the
+    diversion (ld) in the binutils-gold package.
+  * Linker selection: ld is used by default, to use the gold linker,
+    pass -fuse-linker-plugin (no other side effects if -flto/-fwhopr
+    is not passed). To force ld.bfd or ld.gold, pass -B/usr/lib/compat-ld
+    for ld.bfd or /usr/lib/gold-ld for ld.gold.
+  * Apply proposed patch for ARM: Add option to disable merging of adjacent
+    exidx unwinder entries.
+
+  [ Jonathan Nieder ]
+  * Clean up diversion handling in binutils-multiarch:
+    - remove diversion of libbfd.a and libopcodes.a.  Closes: #545067.
+    - wait for the new version to be unpacked before removing old diversions
+    - avoid messages from re-adding diversions when upgrading from a version
+      that already has them
+    - remove diversions when downgrading to a version that does not have
+      them (for example, when recovering from an upgrade failure)
+  * Add diversion for ld.bfd in binutils-multiarch.
+  * Update comment in debian/rules to acknowledge that binutils-multiarch
+    includes a linker now.
+  * Add c++filt to binutils-multiarch.
+  * Remove elfedit from binutils-multiarch.
+    Its functionality does not depend on the list of supported targets.
+  * Fixup to version changes handling.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 18 Apr 2010 14:18:59 +0200
+
+binutils (2.20.51.20100405-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20100405.
+  * debian/*.shlibs: Update to the version from the trunk.
+  * Mangle the soname of the binutils libraries to be different than
+    the default name. Closes: #557620.
+    Packaged cross builds should do the same.
+  * Add diversion for elfedit in binutils-multiarch (Jonathan Nieder).
+    Closes: #576126.
+  * Convert to quilt (Sedat Dilek).
+  * Update to proposed patch to enable both gold and ld in a single toolchain.
+    The gold binary is now installed as `gold'. Keep the name `ld.gold'.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 05 Apr 2010 14:49:46 +0200
+
+binutils (2.20.51.20100227-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20100227.
+  * debian/*.shlibs: Update to the version from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 27 Feb 2010 08:55:05 +0100
+
+binutils (2.20.51.20100222-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20100222.
+  * debian/*.shlibs: Update to the version from the trunk.
+  * binutils-dev: Install plugin-api.h.
+  * Ignore testsuite regressions on armel.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 23 Feb 2010 02:27:28 +0100
+
+binutils (2.20.51.20100216-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20100216.
+  * debian/*.shlibs: Update to the version from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 16 Feb 2010 17:49:47 +0100
+
+binutils (2.20.51.20100112-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20100112.
+  * debian/*.shlibs: Update to the version from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 12 Jan 2010 09:06:51 +0100
+
+binutils (2.20.51.20100109-2) experimental; urgency=low
+
+  * Regenerate ld/configure (includes ld in the binutils package).
+
+ -- Matthias Klose <doko@debian.org>  Mon, 11 Jan 2010 01:48:09 +0100
+
+binutils (2.20.51.20100109-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20100109.
+    - PR gold/10980: Support more options available by current GNU ld.
+      Closes: #555886.
+    - Fix PR gold/11072: Discard .gnu_debuglink sections, taken from the trunk.
+      Closes: #563366.
+  * debian/*.shlibs: Update to the version from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 09 Jan 2010 14:32:33 +0100
+
+binutils (2.20.51.20100101-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20100101.
+  * debian/*.shlibs: Update to the version from the trunk.
+  * Remove patches available on the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 01 Jan 2010 18:49:42 +0100
+
+binutils (2.20.1-11) unstable; urgency=medium
+
+  * Fix PR gold/10893, IFUNC support for gold backported from the trunk
+    (Aurelian Jarno). Closes: #585051.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 14 Jun 2010 07:17:13 +0200
+
+binutils (2.20.1-10) unstable; urgency=low
+
+  * Drop build dependency on expect-tcl8.3. Closes: #472964.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 30 May 2010 12:23:46 +0200
+
+binutils (2.20.1-9) unstable; urgency=high
+
+  * [arm] branches to weak symbols, update patch from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 06 May 2010 15:42:22 +0200
+
+binutils (2.20.1-8) unstable; urgency=low
+
+  * [arm] branches to weak symbols, patch taken from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 29 Apr 2010 20:36:07 +0200
+
+binutils (2.20.1-7) unstable; urgency=low
+
+  * Apply proposed patch for ARM: Add option to disable merging of adjacent
+    exidx unwinder entries. Addresses PR libgcj/40860.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 20 Apr 2010 22:51:35 +0000
+
+binutils (2.20.1-6) unstable; urgency=low
+
+  * Move the ld.gold binary into the binutils package, just keep the
+    diversion (ld) in the binutils-gold package.
+  * Linker selection: ld is used by default, to use the gold linker,
+    pass -fuse-linker-plugin (no other side effects if -flto/-fwhopr
+    is not passed). To force ld.bfd or ld.gold, pass -B/usr/lib/compat-ld
+    for ld.bfd or /usr/lib/gold-ld for ld.gold.
+  * Disable building gold on arm. Use gold from the trunk, if needed.
+  * Backport fixups of Loongson2F from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 17 Apr 2010 18:27:45 +0200
+
+binutils (2.20.1-5) unstable; urgency=medium
+
+  * Apply patch for PR gas/11456: Use memcpy to copy overlap memory.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 02 Apr 2010 01:36:07 +0200
+
+binutils (2.20.1-4) unstable; urgency=low
+
+  * Mangle the soname of the binutils libraries to be different than
+    the default name. Closes: #557620.
+    Packaged cross builds should do the same.
+  * Reduce ARM linking time (backport from the trunk).
+  * Apply fix for PR ld/11426, taken from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 30 Mar 2010 22:32:12 +0200
+
+binutils (2.20.1-3) unstable; urgency=low
+
+  * binutils-gold: Install the gold binary as `gold' as well, as proposed
+    by a patch to enable both gold and ld in a single toolchain.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 21 Mar 2010 06:43:48 +0100
+
+binutils (2.20.1-2) unstable; urgency=low
+
+  * Fix version in debian/*shlibs to match the release version;
+    the 2.20.1 upstream release identifies as 2.20.1.20100303.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 08 Mar 2010 18:01:22 +0100
+
+binutils (2.20.1-1) unstable; urgency=low
+
+  * New upstream release.
+  * Don't set has_ifunc_symbols if the symbol comes from a shared library
+    (backport from the trunk).
+  * Don't include documentation files in the -cross packages. 
+    Closes: #571522. LP: #514509.
+  * Fix typo in ld documentation. LP: #497923.
+  * Add readelf --unwind support for ARM.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 08 Mar 2010 04:47:46 +0100
+
+binutils (2.20-6) unstable; urgency=low
+
+  * Apply updates from the 2.20 branch up to 20100205
+    - 135_arm_dis_thumb2.dpatch: Remove, applied upstream.
+    - 136_gold_gnu_debuglink.dpatch: Remove, applied upstream.
+  * armel: Fix ld-shared/shared.exp and ld-elfvsb/elfvsb.exp failures
+    (proposed patch, Matthew Gretton-Dann). Closes: #564685. LP: #446478.
+  * Fix PR other/42602: demangling a global constructors symbol.
+    Closes: #561150.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 05 Feb 2010 20:01:20 +0100
+
+binutils (2.20-5) unstable; urgency=low
+
+  * Apply updates from the 2.20 branch up to 20100109
+  * Apply patches from the trunk:
+    - [arm] Prevent disassembler from aborting on an invalid Thumb2 instruction.
+    - Fix PR gold/11072: Discard .gnu_debuglink sections.  Closes: #563366.
+    - Fix PR ld/11138: internal error when DSO is before object files.
+      Closes: #562822.
+    - Fix PR gold/11042: COPY relocs need for the dynamic object.
+      Closes: #559183.
+    - Fix PR gold/10916: Fix --exclude-libs with undefined symbol.
+      Closes: #555012.
+    - Fix PR gold/10979: gold linker crashes. Closes: #553916.
+    - Fix PR gas/10740: Intel syntax far jumps broken. Closes: #541535.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 09 Jan 2010 10:43:04 +0100
+
+binutils (2.20-4) unstable; urgency=low
+
+  * Fix binutils-gold update. Closes: #555734.
+  * Don't configure gold for spu on powerpc.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 11 Nov 2009 23:33:20 +0100
+
+binutils (2.20-3) unstable; urgency=low
+
+  * Apply updates from the 2.20 branch up to 20091108:
+    - Fix PR gold/10876 (closes: #553435), PR gold/10910, PR gold/10860,
+      PR gold/10880 (closes: #553512, #553436), PR gold/10887,
+      PR gold/10893, PR gold/10895 (thanks to Peter Fritzsche for tracking
+      the gold reports).
+  * Fix libiberty build failure on sh4 (Nobuhiro Iwamatsu). Closes: #550810.
+  * PR ld/10858: Fix pie on mips/mipsel. Closes: #526961.
+  * Ignore regressions on sparc; the proper fix is to fix the testcases
+    for v9.
+  * Remove the conflict between binutils-multiarch and binutils-gold.
+    Closes: #521106.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 10 Nov 2009 02:15:41 +0100
+
+binutils (2.20-2) unstable; urgency=high
+
+  * Apply updates from the 2.20 branch up to 20091028:
+    - Fix PR binutils/10802, PR binutils/10793, PR binutils/10792,
+      PR gas/10856.
+    - Remove local patches now in the branch.
+  * Ignore regressions on armel when building with gcc-4.4; the proper fix
+    is to build the testcases using -fno-section-anchors.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 29 Oct 2009 22:17:42 +0100
+
+binutils (2.20-1) unstable; urgency=low
+
+  * binutils 2.20 final release.
+    - Fix PR binutils/10785, memory corruptions.
+    - PR ld/10749, ia64 linker failure.
+    - PR gas/2117, ia64 assembler fix.
+    - gold updates.
+  * Configure with --enable-plugins. Closes: #550088.
+  * debian/test-suite-compare.py: Don't count untested test cases as
+    regressions.
+  * binutils-gold: Install /usr/lib/compat-ld/ld to point to the
+    old linker. To use the old linker when gold is installed, use
+    gcc -B/usr/lib/compat-ld/ (including the trailing slash).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 17 Oct 2009 12:22:30 +0200
+
+binutils (2.19.91.20091006-1) unstable; urgency=low
+
+  * Snapshot, taken from the 2.20 release branch 20091006.
+    - cfi_sections changes applied.
+  * debian/*.shlibs: Update to the version from the branch.
+  * binutils-gold: Build the testsuite as part of the check target
+    instead of the build target to avoid build failures when the
+    installed binutils soname is the same as the one which is built
+    (gas is segfaulting). Just a workaround, not a solution.
+  * Add 150_gold_copyrelocs.dpatch, add -z copyrelocs option for gold.
+  * binutils-source: Depend on texinfo, zlib1g-dev.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 06 Oct 2009 22:13:24 +0200
+
+binutils (2.19.91.20091003-1) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.20 release branch 20091003.
+    - Fix PR ld/9863, regression in testsuite on armel.
+    - Fix regressions seen in the GCC/libjava testsuite.
+  * debian/*.shlibs: Update to the version from the branch.
+  * No need to build libiberty_pic.a twice.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 03 Oct 2009 14:59:14 +0200
+
+binutils (2.19.91.20090927-1) unstable; urgency=low
+
+  * Snapshot, taken from the 2.20 release branch 20090927.
+  * debian/*.shlibs: Update to the version from the branch.
+  * On mips/mipsel disabled -pie/--pie-executable. Still broken,
+    see #526961. Add an option --force-pie on mips/mipsel only
+    for testing purposes.
+    Change requested by debian-release (Andreas Barth).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 27 Sep 2009 11:56:06 +0200
+
+binutils (2.19.91.20090923-1) unstable; urgency=medium
+
+  * Snapshot, taken from the 2.20 release branch 20090923 (last upload
+    was taken from the trunk)..
+  * debian/*.shlibs: Update to the version from the branch.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 23 Sep 2009 09:50:04 +0200
+
+binutils (2.19.91.20090922-1) unstable; urgency=low
+
+  * Snapshot, taken from the 2.20 release branch 20090922.
+  * debian/*.shlibs: Update to the version from the branch.
+
+ -- Matthias Klose <doko@ubuntu.com>  Tue, 22 Sep 2009 19:36:50 +0200
+
+binutils (2.19.91.20090910-1) unstable; urgency=low
+
+  * Snapshot, taken from the 2.20 release branch 20090910, corresponding
+    to the 2.19.90 upstream snapshot.
+  * Fix Thumb-2 shared libraries (Daniel Jacobowitz), patch taken
+    from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 10 Sep 2009 17:05:30 +0200
+
+binutils (2.19.90.20090909-1) unstable; urgency=low
+
+  * Snapshot, taken from the 2.20 release branch 20090909.
+  * debian/*.shlibs: Update to the version from the branch.
+  * Disable build failure for regressions on mips/mipsel.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 09 Sep 2009 09:50:36 +0200
+
+binutils (2.19.51.20090827-1) unstable; urgency=low
+
+  * Snapshot, taken from the trunk 20090827.
+    - Fix PR ld/10518: In linker scripts override a "*" match by any other
+      wildcard match. Closes: #540751.
+  * debian/*.shlibs: Update to the version from the trunk. Closes: #540800.
+  * Add sysroot support for cross builds (Hector Oron). Closes: #522480.
+  * Update long description of binutils-doc. Closes: #428764.
+  * Tighten build dependency on autoconf.
+  * Fix some lintian warnings.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 27 Aug 2009 17:09:28 +0200
+
+binutils (2.19.51.20090805-1) unstable; urgency=low
+
+  * Snapshot, taken from the trunk 20090805.
+    - Fix PR binutils/10364, strip not failing on unwritable files.
+      Closes: #276428.
+    - Fix PR binutils/10363, objdump -T crashing on corrupted file.
+      Closes: #487963.
+  * 129_cortex_a8.dpatch: Fix a couple of cortex-a8 erratum bugs.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 05 Aug 2009 10:24:40 +0200
+
+binutils (2.19.51.20090723-1) unstable; urgency=low
+
+  * Snapshot, taken from the trunk 20090723.
+  * debian/*.shlibs: Update to the version from the trunk.
+  * Undo the reversion in the last upload, use the upstream fix instead.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 23 Jul 2009 09:39:50 +0200
+
+binutils (2.19.51.20090722-2) unstable; urgency=low
+
+  * Apply build-id patch to avoid memory corruption (taken from Fedora).
+  * Revert ld/ldlang.c rev 1.312. Closes: #537389.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 22 Jul 2009 19:19:30 +0200
+
+binutils (2.19.51.20090722-1) unstable; urgency=low
+
+  * Snapshot, taken from the trunk 20090722.
+  * debian/*.shlibs: Update to the version from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 22 Jul 2009 16:51:11 +0200
+
+binutils (2.19.51.20090714-1) unstable; urgency=low
+
+  * Snapshot, taken from the trunk 20090714.
+  * debian/*.shlibs: Update to the version from the trunk.
+  * Install a libiberty compiled with -fPIC as libiberty_pic.a.
+    Closes: #530888.
+  * Remove obsolete README.Debian. Closes: #324260.
+  * binutils-dev: Include demangle.h. Closes: #134985.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 14 Jul 2009 13:13:37 -0400
+
+binutils (2.19.51.20090704-1) unstable; urgency=low
+
+  * Snapshot, taken from the trunk 20090704.
+    - debian/patches/128_arm_eabi_auto_it.dpatch: Remove, applied upstream.
+  * debian/*.shlibs: Update to the version from the trunk.
+  * Bump standards version.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 04 Jul 2009 10:37:18 +0200
+
+binutils (2.19.51.20090613-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20090613.
+  * debian/*.shlibs: Update to the version from the trunk.
+  * Build binutils-gold on armel.
+  * Apply proposed patch for new option for automatically generating IT blocks.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 13 Jun 2009 14:39:41 +0000
+
+binutils (2.19.51.20090508-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20090508.
+    - Fix PR binutils/9743, relocation issues on arm.
+  * debian/*.shlibs: Update to the version from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 08 May 2009 11:08:14 +0200
+
+binutils (2.19.51.20090419-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20090419.
+  * debian/*.shlibs: Update to the version from the trunk.
+  * debian/patches/013_bash_in_ld_testsuite.dpatch: Update.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 19 Apr 2009 22:12:19 +0200
+
+binutils (2.19.51.20090315-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20090315.
+  * debian/*.shlibs: Update to the version from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 15 Mar 2009 11:38:58 +0100
+
+binutils (2.19.1-1) unstable; urgency=low
+
+  * Upload to unstable.
+  * binutils-source: Make .dpatch files executable.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 15 Feb 2009 22:46:34 +0100
+
+binutils (2.19.1-1~exp1) experimental; urgency=low
+
+  * Binutils 2.19.1 release.
+  * debian/*.shlibs: Update to the release version.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 04 Feb 2009 09:57:55 +0100
+
+binutils (2.19.0.20090110-1~exp1) experimental; urgency=low
+
+  * Update to the binutils-2_19-branch 20090110.
+    - Fix PR binutils/7011. LP: #254790.
+  * debian/*.shlibs: Update to the version from the branch.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 10 Jan 2009 13:56:09 +0100
+
+binutils (2.19-1~exp2) experimental; urgency=low
+
+  * debian/patches/129_scale-DW_CFA_advance_loc.dpatch: Scale
+    DW_CFA_advance_loc[124] output values.
+  * debian/patches/128_arm_relocs_against_weak.dpatch: Fix R_ARM_THM_CALL
+    relocations against undefined weak symbols in shared libraries.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 30 Nov 2008 13:22:11 +0100
+
+binutils (2.19-1~exp1) experimental; urgency=low
+
+  * Binutils 2.19 release.
+  * debian/*.shlibs: Update to the release version.
+  * Build binutils-gold on powerpc.
+  * debian/control: Update to GPL3, reference the GFDL.
+  * Fail the build if the testsuite shows regressions compared to the
+    last (installed) build.
+  * Make lintian more happy.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 26 Oct 2008 13:06:27 +0200
+
+binutils (2.18.93.20081009-1) experimental; urgency=low
+
+  * Snapshot, taken from the 2.19 branch 20081009 (corresponding to the
+    2.18.93 upstream snapshot.
+  * debian/*.shlibs: Update to the version from the branch.
+  * Add build dependency on zlib1g-dev.
+  * In gprof(1), remove references to monitor(3) and profil(2).
+    Closes: #293948.
+
+ -- Matthias Klose <doko@ubuntu.com>  Sat, 11 Oct 2008 16:45:35 +0000
+
+binutils (2.18.92.20081003-1) experimental; urgency=low
+
+  * Snapshot, taken from the 2.19 branch 20081003.
+  * debian/*.shlibs: Update to the version from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 03 Oct 2008 11:29:16 +0000
+
+binutils (2.18.90.20080910-1) experimental; urgency=low
+
+  * Snapshot, taken from the 2.19 branch 20080910.
+  * debian/*.shlibs: Update to the version from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 12 Sep 2008 19:23:07 +0200
+
+binutils (2.18.50.20080803-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20080803.
+  * debian/*.shlibs: Update to the version from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 04 Aug 2008 00:53:47 +0200
+
+binutils (2.18.50.20080707-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20080707.
+  * debian/*.shlibs: Update to the version from the trunk.
+  * include/safe-ctype.h: Add #include of ctype.h before redefining
+    the ctype.h macros (proposed for the trunk).
+  * Add Daniel Jacobowitz as uploader.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 07 Jul 2008 01:08:13 +0200
+
+binutils (2.18.50.20080610-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20080610.
+  * debian/*.shlibs: Update to the version from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 10 Jun 2008 16:21:02 +0200
+
+binutils (2.18.50.20080530-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20080530.
+  * Switch maintainer and uploader.
+  * debian/rules: Explicitely set SHELL to /bin/bash, build-depend on bash.
+  * debian/rules: Fix setting of TARGET for cross builds.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 30 May 2008 23:49:40 +0200
+
+binutils (2.18.50.20080507-1) experimental; urgency=low
+
+  * Snapshot, taken from the trunk 20080507.
+  * Remove patches applied upstream: 304_pr4476.dpatch, 305_arm-dis.dpatch,
+    306_pr4453.dpatch, 307_ld-pic.dpatch, 308_mips-pic.dpatch.
+  * debian/patches/013_bash_in_ld_testsuite.dpatch: Use bash in the ld
+    testsuite (some tests have bashisms).
+  * debian/*.shlibs: Update to the version from the trunk.
+  * On amd64, i386 and sparc, build a binutils-gold package,
+    diverting /usr/bin/ld.
+  * Use expect instead of expect-tcl8.3 on all architectures except hppa.
+  * Remove binutils and gcc build dependencies (versions are in oldstable).
+
+ -- Matthias Klose <doko@debian.org>  Thu, 08 May 2008 00:56:30 +0200
+
+binutils (2.18.1~cvs20080103-4) unstable; urgency=medium
+
+  * debian/rules: Remove libiberty in /usr/lib64; workaround for
+    `gcc -print-multi-os-directory' printing the symlink.
+    Closes: #473665, #473591.
+  * Don't include development files in binutils-spu.
+  * Fix binutils-spu build on ppc64 (Andreas Jochens). Closes: #474116.
+  * Build libiberty with -fPIC on mips/mipsel (Aurelian Jarno).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 05 Apr 2008 11:21:08 +0200
+
+binutils (2.18.1~cvs20080103-3) unstable; urgency=low
+
+  [ Arthur Loiret ]
+  * Build a binutils for spu-elf target on powerpc and ppc64.
+    - debian/control: Add a binutils-spu package.
+    - debian/binutils-spu.{postinst,postrm,shlibs}: Add.
+  * Add sh64-linux-gnu to multiarch targets.
+  * Fix cross-compilation support.
+  * Make lintian happier:
+    - Use ${source:Version}, ${binary:Version} variables.
+    - Remove -1 from Build-Depends revisions.
+    - Bump Standards-Version to 3.7.3.
+
+  [ Matthias Klose ]
+  * Keep the spu elfscripts in bintutils, remove them from binutils-spu.
+  * debian/patches/307_ld-pic.dpatch: Fix failing ld-shared tests when built
+    with gcc-4.3.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 29 Mar 2008 20:32:35 +0100
+
+binutils (2.18.1~cvs20080103-2) unstable; urgency=low
+
+  * debian/patches/306_pr4453.dpatch: Fix PR binutils/4453, taken from
+    the trunk (Aurelian Jarno). Closes: #363423.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 21 Mar 2008 20:49:17 +0100
+
+binutils (2.18.1~cvs20080103-1) unstable; urgency=low
+
+  * Update to 20080103 from the binutils-2_18-branch.
+    - Set version number to 2.18.0 (smaller than the one from the trunk).
+    - Fix PR ld/5398. Closes: #452725.
+  * debian/*.shlibs: Update to version from the branch.
+  * debian/patches/305_arm-dis.dpatch: Fix segfault when disassembling ARM
+    code. Closes: #438956.
+  * Support kfreebsd-amd64-gnu and i486-kfreebsd-gnu (Aurilian Jarno):
+    - debian/patches/127_x86_64_i386_biarch.dpatch: Extend for kfreebsd.
+    - debian/rules: biarch enabled binutils for kfreebsd-{amd64,i486}-gnu,
+      kfreebsd-{amd64,i486}-gnu support for cross-builds,
+      kfreebsd-{amd64,i486}-gnu enabled for binutils-multiarch.
+    - Closes: #380373.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 03 Jan 2008 21:57:51 +0100
+
+binutils (2.18.1~cvs20071027-2) unstable; urgency=low
+
+  * Do not include static libraries in the multiarch package.
+  * Don't include /usr/lib64 in cross packages. Closes: #450429.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 24 Nov 2007 12:13:22 +0100
+
+binutils (2.18.1~cvs20071027-1) unstable; urgency=low
+
+  * Update to 20071027 from the binutils-2_18-branch.
+    - Fix PR ld/4988, assertion failures in ld. Closes: #440015.
+  * debian/*.shlibs: Update to version from the branch.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 27 Oct 2007 17:55:41 +0200
+
+binutils (2.18-1) unstable; urgency=low
+
+  [ Matthias Klose ]
+  * New upstream release.
+    - Remove patches applied upstream: 100_warning_arm, 400_gcc42_fix,
+      401_builddoc.
+  * debian/*.shlibs: Update to release version.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 29 Aug 2007 01:07:31 +0200
+
+binutils (2.18~cvs20070812-1) unstable; urgency=low
+
+  [ Matthias Klose ]
+  * New upstream CVS snapshot, taken from the binutils-2_18-branch.
+  * debian/rules: Support parallel=<n> with comma separated keywords
+    in DEB_BUILD_OPTIONS.
+  * debian/rules (clean): Remove stamp files.
+  * debian/*.shlibs: Update to snapshot version.
+  * debian/patches/401_builddoc.dpatch: Fix doc build failure on the branch.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 12 Aug 2007 10:56:18 +0200
+
+binutils (2.17cvs20070804-1) unstable; urgency=low
+
+  [ Matthias Klose ]
+  * New upstream CVS snapshot.
+    - PR binutils/4888, fixes objcopy --only-keep-debug. Closes: #435444.
+  * debian/rules: Support parallel=<n> in DEB_BUILD_OPTIONS (see #209008).
+  * debian/*.shlibs: Update to snapshot version.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 04 Aug 2007 12:45:07 +0200
+
+binutils (2.17cvs20070801-1) unstable; urgency=medium
+
+  [ Matthias Klose ]
+  * New upstream CVS snapshot.
+    - Fixes objcopy --only-keep-debug on amd64. Closes: #435444.
+  * binutils-multiarch: Enable the armel-linux-gnu target. Closes: #408805.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 01 Aug 2007 18:24:51 +0200
+
+binutils (2.17cvs20070718-1) unstable; urgency=low
+
+  [ Matthias Klose ]
+  * New upstream CVS snapshot.
+    - Fix build failure on m68k.
+  * debian/patches/400_gcc42_fix.dpatch: Fix build failure with gcc-4.2.
+    Closes: #433062.
+  * Fix cross build failure while stripping binaries. Closes: #432907.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 18 Jul 2007 20:25:03 +0200
+
+binutils (2.17cvs20070713-1) unstable; urgency=low
+
+  [ Matthias Klose ]
+  * New upstream CVS snapshot.
+    - Remove patches applied upstream: 301_pr4436.dpatch, 302_pr4448.dpatch,
+      303_pr4454.dpatch, 305_pr4497.dpatch, 306_ld_demangler_segfault.dpatch,
+      307_pr4558.dpatch.
+    - Fix build failure with gcc-4.2. Closes: #429738.
+    - Fix kernel build with grsecurity patch. Closes: #430041.
+  * debian/copyright: Include GPL-3.
+  * debian/rules: Fix version extraction.
+  * debian/rules: Honor `noopt' in DEB_BUILD_OPTIONS.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 13 Jul 2007 14:45:21 +0200
+
+binutils (2.17cvs20070426-8) unstable; urgency=low
+
+  * Fix PR gas/4558.
+  * debian/rules: Add empty NJOBS macro.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 28 May 2007 09:06:35 +0000
+
+binutils (2.17cvs20070426-7) unstable; urgency=low
+
+  * 306_ld_demangler_segfault.dpatch: new CVS patch from Alan Modra to fix
+    segfaults in ld seen when building, e.g. openipmi.
+
+  * debian/copyright: update source location and copyright years.
+  * debian/rules: idem.
+  
+ -- James Troup <james@nocrew.org>  Wed, 23 May 2007 02:19:09 +0100
+
+binutils (2.17cvs20070426-6) unstable; urgency=low
+
+  * Fix PR ld/4497, regression introduced with the fix for PR ld/4454.
+    Closes: #423496.
+  * Fix binutils/4476, readelf support for --hash-style=gnu.  Closes: #421790.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 14 May 2007 10:51:40 +0200
+
+binutils (2.17cvs20070426-5) unstable; urgency=low
+
+  * Fix PR ld/4454.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 06 May 2007 09:50:29 +0200
+
+binutils (2.17cvs20070426-4) unstable; urgency=low
+
+  * Fix PR gas/4448, overstrict check for powerpc lswi. Closes: #421799.
+
+ -- Matthias Klose <doko@debian.org>  Wed,  2 May 2007 18:26:03 +0200
+
+binutils (2.17cvs20070426-3) unstable; urgency=low
+
+  * Update debian/*.shlibs files. Closes: #421454.
+  * Fix PR gas/4436, wrong reject in powerpc opcode table checks.
+    Closes: #421455.
+  * Fix build failure on arm (Aurelian Jarno). Closes: #421365.
+  * Compare testsuite results of the installed binutils with the built one.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 30 Apr 2007 07:47:09 +0200
+
+binutils (2.17cvs20070426-2) unstable; urgency=low
+
+  * Fix typo preparing the binutils-hppa64 package.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 27 Apr 2007 08:06:49 +0200
+
+binutils (2.17cvs20070426-1) unstable; urgency=low
+
+  [ James Troup ]
+  * New upstream CVS snapshot.
+  * debian/test-suite-compare.py: simplistic comparator for binutils test
+    suite runs.
+
+  [ Matthias Klose ]
+  * Merge changes from the experimental uploads:
+   * debian/patches/121_i386_x86_64_biarch.dpatch: Remove, applied upstream.
+   * Build a binutils-source package (containing the patched sources).
+   * Check for a working expect before building the package.
+   * Configure the multiarch build for x86_64-linux-gnu instead of
+     x86_64-linux.
+   * debian/rules: Don't strip binaries if nostrip is in DEB_BUILD_OPTIONS.
+   * debian/rules: Don't try to strip shell scripts.
+   * Configure --with-pkgversion to include the distribution name.
+   * debian/patches/000_print_debian_version.dpatch: Remove.
+   * debian/control: Build-depend on lsb-release.
+   * Enable spu target in powerpc and binutils-multiarch build.
+   * Don't include embedspu in binutils-multiarch on powerpc.
+   * debian/control: Set priority for source package to optional.
+
+ -- James Troup <james@nocrew.org>  Fri, 27 Apr 2007 01:29:57 +0100
+
+binutils (2.17-3) unstable; urgency=low
+
+  * debian/rules (configure-multi-stamp): drop i486-kfreebsd-gnu again as
+    it breaks objdump for i386 on amd64.  Closes: #380539
+
+ -- James Troup <james@nocrew.org>  Tue,  3 Oct 2006 00:53:17 +0100
+
+binutils (2.17-2) unstable; urgency=low
+
+  * The "Laisse le Wookie gagner" release.
+
+  * 127_x86_64_i386_biarch.dpatch: new patch from Aurelien Jarno
+    <aurelien@aurel32.net> to add (/usr)/lib32 to the search paths on
+    amd64.  Closes: #369052
+
+  * debian/rules (configure-multi-stamp): add i486-kfreebsd-gnu at request
+    of Aurelien Jarno.  Closes: #315306
+
+ -- James Troup <james@nocrew.org>  Wed, 26 Jul 2006 20:33:13 +0100
+
+binutils (2.17-1) unstable; urgency=low
+
+  * New upstream release.
+   * 120_mips_xgot_multigot_workaround.dpatch: removed - superseded by a
+     proper fix upstream.  Closes: #274738
+   * debian/binutils.shlibs, debian/binutils-multiarch.shlibs,
+     debian/binutils-hppa64.shlibs: updated SONAME to 2.17.
+
+ -- James Troup <james@nocrew.org>  Mon, 26 Jun 2006 13:17:36 +0100
+
+binutils (2.16.1cvs20060507-1) unstable; urgency=low
+
+  * New upstream CVS snapshot of 'binutils-2_17-branch'.
+
+  * debian/control (Standards-Version): bump to 3.7.2.0.
+
+ -- James Troup <james@nocrew.org>  Sun,  7 May 2006 19:57:08 +0100
+
+binutils (2.16.1cvs20060413-1) unstable; urgency=low
+
+  * New upstream CVS snapshot.
+   * 120_mips_xgot_multigot_workaround.dpatch: updated to work with CVS
+     r1.163 of bfd/elfxx-mips.c, pass 'info' instead of 'output_bfd' to
+     MIPS_ELF_GOT_MAX_SIZE().
+
+  * Patch from NIIBE Yutaka <gniibe@fsij.org> in #280884:
+    * debian/rules (configure-multi-stamp): Support m32r-linux.  Closes:
+      #340264
+    * debian/rules: Run 'make check' only if build == host.
+  
+  * debian/rules: Also don't run 'make check' if nocheck is in
+    DEB_BUILD_OPTIONS.  Based on a patch from Michael Banck
+    <mbanck@debian.org>.  Closes: #315290
+
+  * Integrate most of a patch to build arbitrary binutils-$TARGET
+    cross-packages from #231707.  Thanks to Nikita V. Youshchenko
+    <yoush@cs.msu.su> and Josh Triplett <josh@freedesktop.org>.
+
+  * debian/copyright: update to include GFDL.  Closes: #81950
+  * debian/copyright: update FSF address.
+
+  * debian/rules: move non-architecture specific conflicts (gas,
+    elf-binutils, modutils (<< 2.4.19-1)) out of a substitued variable and
+    into the control file.  Rename variable to extraConflicts.
+  * debian/control: likewise.
+
+ -- James Troup <james@nocrew.org>  Sat, 15 Apr 2006 03:05:41 +0100
+
+binutils (2.16.1cvs20060117-1) unstable; urgency=low
+
+  * New upstream CVS snapshot.
+
+  * 118_arm_pass_all.dpatch, 125_fix_tc_arm_cast.dpatch: merged upstream -
+    removed.
+
+ -- James Troup <james@nocrew.org>  Wed, 18 Jan 2006 02:25:25 +0000
+
+binutils (2.16.1cvs20051214-1) unstable; urgency=low
+
+  * New upstream CVS snapshot.
+   * Fix ld segfaults on ia64.  Closes: #342777
+
+  * 126_fix_PROVIDE_HIDDEN.dpatch: merged upstream - removed.
+
+ -- James Troup <james@nocrew.org>  Wed, 14 Dec 2005 08:06:37 +0000
+
+binutils (2.16.1cvs20051206-1) unstable; urgency=low
+
+  * New upstream CVS snapshot.
+   * Fixes linking of qemu.  Closes: #340328
+
+  * 126_fix_PROVIDE_HIDDEN.dpatch: new patch from Thiemo Seufer to fix
+    handling of hidden symbols which were provided by a linker
+    script. Closes: #342307
+
+  * debian/control (Standards-Version): updated to 3.6.2.1.
+
+ -- James Troup <james@nocrew.org>  Sat, 10 Dec 2005 05:23:34 +0000
+
+binutils (2.16.1cvs20051117-1) unstable; urgency=low
+
+  * New upstream CVS snapshot.
+   * Fixes c++filt's flushing of stdout which broke gcj.  Closes: #339287
+
+  * debian/control (Build-Depends): switch from expect to expect-tcl8.3
+    since tcl8.4's broken threading causes the testsuite to fail entirely
+    on hppa.  Closes: #339509
+
+ -- James Troup <james@nocrew.org>  Thu, 17 Nov 2005 13:15:15 +0000
+
+binutils (2.16.1cvs20051109-1) unstable; urgency=low
+
+  * New upstream CVS snapshot.
+   * Fixes broken PLT handling on m68k.  Closes: #327780
+   * Don't compile flex files with -Werror, fixing mips builds.
+     Closes: #333980
+   * Don't check undefined symbols introduced by "ld -u" for TLS. Closes:
+     #326103
+
+  * 117_mips_symbolic_link.dpatch: merged upstream - removed.
+
+  * debian/rules: pass --disable-werror on ia64 as current gcc generates
+    too many false positives.  Closes: #336939
+
+  * 125_fix_tc_arm_cast.dpatch: new patch from Lennert Buytenhek to fix
+    cast warning and arm builds.  Closes: #336175
+
+  * 121_i386_x86_64_biarch.dpatch: imported from Ubuntu at request of
+    Daniel Jacobwitz to fix biarch linking on i386/amd64.  Closes:
+    #334626, #334673
+
+  * debian/rules: remove any reference to pkgstriptranslations - an
+    Ubuntu-ism that shouldn't have been in the Debian package in the first
+    place but that isn't needed in Ubuntu any more in any event.
+
+  * debian/rules: MAKEOVERRIDES is now clobbered by the top level
+    Makefile, so switch to overriding MAKE itself (sic) to pass the
+    customized VERSION variable/string down to sub-directories for
+    -multiarch and -hppa64 builds.  Thanks to Daniel Silverstone for the
+    suggestion.
+
+ -- James Troup <james@nocrew.org>  Fri, 11 Nov 2005 20:38:22 +0000
+
+binutils (2.16.1cvs20050902-1) unstable; urgency=low
+
+  * New upstream CVS snapshot.
+   * Fixes --as-needed on sparc and hppa.  Closes: #320697
+   * Fixes buffer overflows and other crashes.  Closes: #311975
+
+  * 124_readelf_robustify.dpatch: merged upstream - removed.
+  * 001_ld_makefile_patch: regenerated with help of wiggle.
+
+  * debian/*.shlibs: update to version 2.16.91.
+
+  * debian/copyright: use canonical GNU URL.  Update copyright years.
+  * debian/rules: update version and copyright.
+
+  * debian/rules (pre-build): not relevant with a CVS snapshot which
+    doesn't have pre-generated info files - removed.
+  * debian/rules (clean): don't save info files for the same reason, in
+    fact explicitly remove them.
+  * debian/rules (build_stamps): drop pre-build.
+
+ -- James Troup <james@nocrew.org>  Sat,  3 Sep 2005 00:30:56 +0100
+
+binutils (2.16.1-3) unstable; urgency=low
+
+  * debian/rules: remove powerpc libc header hack.
+  * debian/include/sys/procfs.h: remove.
+
+  * 124_readelf_robustify.dpatch: new patch from Jakub Jelinek to
+    robustify readelf.  Thanks to Thiemo Seufer <ths@networkno.de>.
+    Closes: #318344
+
+ -- James Troup <james@nocrew.org>  Wed, 31 Aug 2005 05:03:11 +0100
+
+binutils (2.16.1-2) unstable; urgency=low
+
+  * debian/include/sys/procfs.h: Include fixed powerpc libc header, to fix
+    FTBFS on powerpc. Temporary fix, to be removed with glibc-2.3.5.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 10 Jul 2005 16:35:17 +0200
+
+binutils (2.16.1-1) unstable; urgency=medium
+
+  * New upstream version.
+  * debian/patches/117_mips_symbolic_link.dpatch: Updated, apply it again.
+    (Thiemo Seufer).
+  * debian/patches/130_bfd_doc_makefile.dpatch: Remove, applied upstream.
+  * debian/control: Build depend on dpkg-dev (>= 1.13.9), needed to determine
+    the GNU architecture type.
+  * The symlinks for the tools change to the the new output of
+    dpkg-architecture -qDEB_HOST_GNU_TYPE (i.e. i386-linux-ld becomes
+    i486-linux-gnu-ld).
+  * Change the values for --enable-targets according to the dpkg-architecture
+    update.
+  * Configure the hppa64 cross compiler for hppa64-linux-gnu. Adjust
+    the hppa64 install target.
+  * debian/*shlibs: Update to version 2.16.1.
+  * Make restoring of saved pregenerated info files more robust.
+
+ -- Matthias Klose <doko@debian.org>  Sat,  9 Jul 2005 14:58:49 +0200
+
+binutils (2.16-1) unstable; urgency=low
+
+  * Update to CVS 2.16 branch 20050612.
+  * debian/patches/130_bfd_doc_makefile.dpatch: New patch to fix
+    build failure in bfd/doc.
+  * debian/watch: New file.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 12 Jun 2005 12:29:12 +0200
+
+binutils (2.16-0) experimental; urgency=low
+
+  * New upstream release.
+    - Fixes build failure using gcc-4.0 (closes: #299671).
+  * debian/patches:
+    - 000_print_debian_version.dpatch: Updated.
+    - 001_ld_makefile_patch.dpatch, 002_gprof_profile_arcs.dpatch,
+      002_gprof_profile_arcs.dpatch: Regenerated.
+    - 012_check_ldrunpath_length.dpatch: Updated.
+    - 112_fix_reloc_sizing.dpatch, 113_elf_backend_hide_symbol.dpatch,
+      114_mips_delay_slots_in_branch.dpatch, 115_fix_sparc_fmov.dpatch,
+      116_ar_nonexistent_files.dpatch: Removed, applied upstream.
+    - 117_mips_symbolic_link.dpatch: Disabled. Needs an update.
+    - 118_arm_pass_all.dpatch: Regenerated.
+    - 119_fix_gas_double_negative.dpatch: Removed, applied upstream.
+    - 120_mips_xgot_multigot_workaround.dpatch: Updated.
+    - 121_ia64_unwind_fixes.dpatch, 122_m68k_undefweak_symbols.dpatch:
+      Removed, applied upstream.
+  * Merge Ubuntu changes:
+    - debian/patches:
+      - 123_dont_add_to_undefs_twice.dpatch: Removed, applied upstream.
+    - debian/rules: Call pkgstriptranslations if present.
+  * debian/rules: 
+    - Fix VERSION extraction.
+    - Save info files before build and restore them in clean target.
+  * debian/control:
+    - Add me as an uploader.
+       
+ -- Matthias Klose <doko@ubuntu.com>  Fri,  6 May 2005 18:43:09 +0200
+
+binutils (2.15-6) unstable; urgency=low
+
+  * 123_bfd_overflow_fix.dpatch: new patch from Alan Modra to fix BFD
+    overflows.  Closes: #308625
+
+ -- James Troup <james@nocrew.org>  Sat, 21 May 2005 20:20:01 +0100
+
+binutils (2.15-5ubuntu2) hoary; urgency=low
+
+  * debian/rules: Call pkgstriptranslations if present (the package does not
+    use debhelper, thus it does not happen automatically).
+
+ -- Martin Pitt <martin.pitt@ubuntu.com>  Fri, 18 Mar 2005 13:07:52 +0000
+
+binutils (2.15-5ubuntu1) hoary; urgency=low
+
+  * 123_dont_add_to_undefs_twice.dpatch: new patch from Alan Modra (PR338) to
+    not add symbols to the undefined list twice, causing an assertion failure
+    in ld when building the kernel on amd64.
+
+ -- Daniel Stone <daniel.stone@canonical.com>  Tue,  7 Dec 2004 09:29:31 +0100
+
+binutils (2.15-5) unstable; urgency=low
+
+  * 121_ia64_unwind_fixes.dpatch: new patch from David Mosberger to fix
+    unwind related bugs.  Closes: #278836
+  * 122_m68k_undefweak_symbols: new patch from Andreas Schwab to fix undef
+    weak symbols with non-default visibilty on m68k.  Closes: #278388
+
+ -- James Troup <james@nocrew.org>  Thu, 25 Nov 2004 00:13:28 +0000
+
+binutils (2.15-4) unstable; urgency=low
+
+  * 120_mips_xgot_multigot_workaround.dpatch: new patch from Thiemo Seufer
+    to make multigot/xgot handling exclusive and fix mozilla builds on
+    mipsen.  Closes: #272149
+
+ -- James Troup <james@nocrew.org>  Thu, 23 Sep 2004 22:44:03 +0100
+
+binutils (2.15-3) unstable; urgency=low
+
+  * 112_fix_reloc_sizing.dpatch: update patch based on revised change from
+    Alan Modra.
+
+  * 116_ar_nonexistent_files.dpatch: new patch from Nick Clifton to fix
+    ar's handling of non-existent files.  Closes: #267139
+
+  * 117_mips_symbolic_link.dpatch: new patch from Thiemo Seufer to fix the
+    "final link failed: Bad value" error on mips.  Closes: #270619
+
+  * 118_arm_pass_all.dpatch: new kludge patch to fix broken libtool pass_all
+    handling on arm and other arches.
+
+  * 119_fix_gas_double_negative.dpatch: new patch from Alan Modra via
+    Daniel Jacobowitz to fix gas' handling of -- and ++.  Closes: #266772
+
+ -- James Troup <james@nocrew.org>  Thu,  9 Sep 2004 22:24:08 +0100
+
+binutils (2.15-2) unstable; urgency=low
+
+  * 112_fix_reloc_sizing.dpatch: new patch from Daniel Jacobowitz to fix
+    objcopy relocation sections.  Closes: #252719
+
+  * 113_elf_backend_hide_symbol.dpatch: new patch from Alan Modra to fix
+    ld internal error on hppa.  Closes: #254549
+
+  * 114_mips_delay_slots_in_branch.dpatch: new patch from Thiemo Seufer to
+    handle delay slots in branch correctly on mips.  Closes: #266660
+
+  * 115_fix_sparc_fmov.dpatch: new patch from Jakub Jelinek via Dave
+    Miller to fix bogus fmov* SPARC opcodes.  Closes: #267824
+
+ -- James Troup <james@nocrew.org>  Tue, 31 Aug 2004 22:45:13 +0100
+
+binutils (2.15-1) unstable; urgency=low
+
+  * New upstream release.  Closes: #248990, #259458
+   * Fixes -Wl,-z,defs to correctly abort builds with unresolved
+     symbols.  Closes: #256481
+   * Better error message for truncation of bignums in as.  
+     Closes: #219933
+   * strip(1) no longer corrupts binaries for architectures it doesn't
+     recognise.  Closes: #211052
+   * nm -C /usr/lib/libcrypto++.a no longer segfaults.  Closes: #247917
+  
+  * 105_alpha_rpcc_opcode_fix.dpatch, 106_arm_pic.dpatch,
+    107_powerpc_ld_segfault.dpatch, 108_m68k_fmoveml_fix.dpatch,
+    109_objcopy_keep_debug.dpatch, 110_hppa64_local_symbols.dpatch,
+    111_objcopy_vs_unstripped.dpatch, 906_hjl_libtool_dso.dpatch: merged
+    upstream - removed.
+  * 012_check_ldrunpath_length.dpatch: resynced with wiggle(1).
+
+  * debian/binutils.shlibs, debian/binutils-hppa64.shlibs,
+    debian/binutils-multiarch.shlibs: update for 2.15.
+
+  * debian/rules (install): remove gas.info hack as no longer needed
+    (fixed properly upstream).
+  * debian/rules (clean): remove gas/doc/as.info which doesn't seem to be
+    in the upstream tar ball.
+
+  * debian/rules (binary-arch): install $pkg/ChangeLog.linux only if they
+    exist (because they don't in GNU releases).
+
+ -- James Troup <james@nocrew.org>  Thu, 29 Jul 2004 22:44:04 +0100
+
+binutils (2.14.90.0.7-8) unstable; urgency=low
+
+  * debian/rules: don't use gcc-2.95 on m68k.  Thanks to Adam Conrad for
+    pointing this out.
+
+ -- James Troup <james@nocrew.org>  Wed, 19 May 2004 10:35:44 +0100
+
+binutils (2.14.90.0.7-7) unstable; urgency=low
+
+  * 111_objcopy_vs_unstripped.dpatch: new patch from Alan Modra via Daniel
+    Jacobowitz to fix objcopy on unstripped libraries on alpha and arm.
+    Closes: #234021
+
+  * debian/control (Build-Depends): remove m68k specific build-depends on
+    gcc-2.95 and libc6-dev (<< 2.3).  Many thanks to Michael Schmitz for
+    testing this.
+
+ -- James Troup <james@nocrew.org>  Tue, 30 Mar 2004 18:00:54 +0100
+
+binutils (2.14.90.0.7-6) unstable; urgency=low
+
+  * 110_hppa64_local_symbols.dpatch: new patch from Randolph Chung to fix
+    dynamic name generation of local symbols on hppa64 - needed to build
+    64-bit hppa kernels. Closes: #238176
+
+ -- James Troup <james@nocrew.org>  Fri, 26 Mar 2004 15:52:27 +0000
+
+binutils (2.14.90.0.7-5) unstable; urgency=low
+
+  * 109_objcopy_keep_debug.dpatch: new patch from Daniel Jacobowitz
+    <dan@debian.org>, objcopy --only-keep-debug and readelf SHT_NOBITS
+    fixes.
+
+ -- James Troup <james@nocrew.org>  Mon, 26 Jan 2004 16:25:25 +0000
+
+binutils (2.14.90.0.7-4) unstable; urgency=low
+
+  * debian/control: add binutils-hppa64 package.
+  * debian/rules: add support for binutils-hppa64 package and don't enable
+    hppa64-linux for binutils or binutils-multiarch.
+  * debian/binutils-hppa64.postinst: new file.
+  * debian/binutils-hppa64.postrm: likewise.
+  * debian/binutils-hppa64.shlibs: likewise.
+  * Above changes largely based on a patch from Matthias Klose
+    <doko@cs.tu-berlin.de>.  Closes: #225892
+
+  * debian/control (Build-Depends): drop bzip2.
+
+  * debian/rules (install-stamp): remove empty /usr/include directory in
+    binutils.
+  * debian/rules (install-stamp): remove /usr/share/info/dir* to
+    workaround install-info brain damage (cf #213524).
+
+ -- James Troup <james@nocrew.org>  Thu, 22 Jan 2004 21:32:44 +0000
+
+binutils (2.14.90.0.7-3) unstable; urgency=low
+
+  * 108_m68k_fmoveml_fix.dpatch: new patch from H.J. Lu
+    <hongjiu.lu@intel.com> to fix fmoveml disassembly and associated
+    testsuite regression on m68k.
+
+ -- James Troup <james@nocrew.org>  Tue, 18 Nov 2003 14:35:23 +0000
+
+binutils (2.14.90.0.7-2) unstable; urgency=low
+
+  * 107_powerpc_ld_segfault.dpatch: new patch from Alan Modra
+    <amodra@bigpond.net.au> to fix ld segfault on powerpc.  Thanks to
+    Josselin Mouette <joss@debian.org> for the report.  Closes: #219187
+
+ -- James Troup <james@nocrew.org>  Wed,  5 Nov 2003 13:32:17 +0000
+
+binutils (2.14.90.0.7-1) unstable; urgency=low
+
+  * New upstream release.
+  * 100_null_owner_ld_fix.dpatch, 101_ppc_as_shf_and_rel_fix.dpatch,
+    102_alpha_null_got_ld_fix.dpatch,
+    103_static_linking_elf_eh_frame.dpatch,
+    104_elf_eh_frame_alpha_fix.dpatch: removed; merged upstream.
+  * debian/rules: update version number.
+  * debian/binutils.shlibs: likewise.
+  * debian/binutils-multiarch.shlibs: likewise.
+
+  * 009_signed_char_fix.dpatch: removed; this was fixed upstream correctly
+    (http://sources.redhat.com/ml/binutils/2003-05/msg00304.html) and this
+    patch is breaking that fix.  Thanks to Daniel Jacobowitz
+    <dan@debian.org>.
+
+  * 003_gmon_manpage_fix.dpatch -> 002_gprof_profile_arcs.dpatch.
+  * 014_gprof_manpage_fix.dpatch -> 003_gprof_see_also_monitor.dpatch.
+
+  * 300_alpha_rpcc_opcode_fix.dpatch -> 105_alpha_rpcc_opcode_fix.dpatch
+    (committed to trunk).
+
+  * debian/rules (configure-multi-stamp): also enable mips64{el,}-linux
+    for binutils-multiarch.  Alphabetize target list.
+
+  * 106_arm_pic: new patch from Phil Blundell <pb@debian.org> and Daniel
+    Jacobowitz <dan@debian.org> which implements GC for GOT and PLT relocs
+    in the elf32-arm backend.
+
+  * debian/rules (install-stamp): work around upstream bug which causes
+    as.info and as.1 to disappear by explicitly calling "make
+    install-info-am install-am" in builddir-single/gas/doc.
+
+ -- James Troup <james@nocrew.org>  Sat,  1 Nov 2003 18:14:04 +0000
+
+binutils (2.14.90.0.6-5) unstable; urgency=low
+
+  * 104_elf_eh_frame_alpha_fix.dpatch: new patch from H.J. Lu
+    <hongjiu.lu@intel.com> to fix regressions on alpha caused by
+    103_static_linking_elf_eh_frame.  Thanks to Thimo Neubauer
+    <thimo@debian.org> for the original report.  Closes: #215636
+
+ -- James Troup <james@nocrew.org>  Fri, 17 Oct 2003 00:02:09 +0100
+
+binutils (2.14.90.0.6-4) unstable; urgency=low
+
+  * 103_static_linking_elf_eh_frame.dpatch: new patch from H.J. Lu
+    <hongjiu.lu@intel.com> to fix static linking of C++ binaries.
+
+  * 200_alpha_null_got_ld_fix.dpatch: renamed...
+  * 102_alpha_null_got_ld_fix.dpatch: to this.
+
+  * debian/rules: patch from Guido Guenther <agx@debian.org> to enable
+    mips64 support.  Closes: #213448
+
+ -- James Troup <james@nocrew.org>  Sun, 12 Oct 2003 14:26:26 +0100
+
+binutils (2.14.90.0.6-3) unstable; urgency=low
+
+  * 100_null_owner_ld_fix.dpatch: new patch from Alan Modra
+    <amodra@bigpond.net.au> to fix an ld crash with null owner sections.
+    Closes: #212029
+
+  * debian/rules: don't compile with gcc-2.95 on arm; the only failures
+    are a) testsuite-only (i.e. don't appear to affect real world
+    applications) and b) fixed by upcoming gcc patches by Phil Blundell
+    <pb@debian.org> in any event.
+  * debian/control (Build-Depends): likewise don't build-depend on
+    gcc-2.95 for arm.
+
+  * 101_ppc_as_shf_and_rel_fix.dpatch: new patch from Alan Modra
+    <amodra@bigpond.net.au> to fix an as regression where it refused to
+    compile utils.S from Linux/PPC 2.6.  Closes: #211668
+
+ -- James Troup <james@nocrew.org>  Tue, 23 Sep 2003 01:32:08 +0100
+
+binutils (2.14.90.0.6-2) unstable; urgency=low
+
+  * debian/rules (CONFLICTS): remove spurious "--", left over from
+    debhelper based-rules.  Fixes build failure on sparc.
+
+  * 200_alpha_null_got_ld_fix.dpatch: new patch from Daniel Jacobowitz
+    <dan@debian.org> to fix an ld crash on alpha with null .got sections.
+    Closes: #204615
+
+  * scripts/dpkg-arch.mk: remove.
+  * debian/rules: define DEB_BUILD_GNU_TYPE, DEB_HOST_ARCH and
+    DEB_HOST_GNU_TYPE here instead.
+
+  * debian/rules (binary-indep): use ':' as a separator to chown, rather
+    than '.' which is a legal character for a username.
+  * debian/rules (binary-arch): likewise.
+
+  * debian/rules: further trivial cleanups.
+
+ -- James Troup <james@nocrew.org>  Thu, 18 Sep 2003 22:13:36 +0100
+
+binutils (2.14.90.0.6-1) unstable; urgency=low
+
+  * New "upstream" release.
+   * Fixes core dump of nm -C on certain object files. Closes: #205616
+
+  * New maintainer.
+  * debian/control (Maintainer): adjust accordingly.
+  * debian/copyright: likewise.  Update copyright years, URL.
+  * debian/control (Standards-Version): bump to 3.6.1.0.
+
+  * 011_disable_combreloc_ARM_ONLY.diff: dropped on request of Phil
+    Blundell <pb@debian.org> - this is obsolete, it was working around a
+    bug in ld since fixed by Daniel Jacobowitz <dan@debian.org> upstream.
+
+  * 890-elf64_alpha_segfault.diff: dropped as bogus
+    (http://sources.redhat.com/ml/binutils/2003-04/msg00399.html); rth's
+    correct fix is already in the upstream source.
+
+  * debian/README.Debian: migrate nearly-obsolete debconf notes to here.
+  * debian/control (Depends): drop debconf.
+  * binutils.config, binutils.templates, binutils.templates.ca,
+    binutils.templates.fr, binutils.templates.ja,
+    binutils.templates.pt_BR, postrm.debhelper: obsolete, removed.
+    Closes: #189641, #198222
+
+  * Migrated from dbs...
+  * debian/README.build: obsolete; removed.
+  * debian/rules: remove $(BUILD_TREE)/, $(STAMP_DIR)/, $(unpacked), $(patched) and other references
+    to DBS.
+  * debian/rules (clean): remove build tree directories.
+  * debian/scripts/dbs-build.mk: unused, remove.
+  * debian/scripts/file2cat: likewise.
+
+  * ... to dpatch.
+  * debian/rules: include /usr/share/dpatch/dpatch.make.
+  * debian/rules (configure-single-stamp): depend on patch-stamp.
+  * debian/rules (configure-multi-stamp): likewise.
+  * debian/rules (clean): depend on unpatch.  Remove debian/patched.
+  * debian/control (Build-Depends): add dpatch.
+
+  * binutils-doc.postinst, binutils-doc.prerm,
+    binutils-multiarch.postinst, binutils-multiarch.postrm,
+    binutils-multiarch.preinst, binutils-multiarch.shlibs,
+    binutils.postinst, binutils.postrm, binutils.shlibs: new files based
+    on .deb and packages.d/.
+  * scripts/dh_split: obsolete, removed.
+  * debian/packages.d/binutils-dev.in, debian/packages.d/binutils-doc.in,
+    debian/packages.d/binutils-multiarch.in,
+    debian/packages.d/binutils.in: likewise.
+
+  * debian/rules: rewritten, de-debhelper-ized.
+  * debian/control (Build-Depends): drop debhelper and add file.
+
+ -- James Troup <james@nocrew.org>  Thu, 11 Sep 2003 22:08:18 +0100
+
+binutils (2.14.90.0.5-0.2) unstable; urgency=low
+
+  * NMU.
+  * Rebuild using fixed gcc on sparc (closes: #202924).
+
+ -- Matthias Klose <doko@debian.org>  Mon, 28 Jul 2003 20:12:00 +0200
+
+binutils (2.14.90.0.5-0.1) unstable; urgency=low
+
+  * NMU.
+  * New upstream version.
+  * Remove patches applied upstream:
+    - debian/patches/500_s390_gas.diff
+    - debian/patches/905-hppa_visibility.diff
+    - debian/patches/906-mips_ld_fix.diff
+  * Updated patch:
+    - debian/patches/906-hjl_libtool_dso.diff
+
+ -- Matthias Klose <doko@debian.org>  Wed, 23 Jul 2003 20:09:51 +0200
+
+binutils (2.14.90.0.4-0.1) unstable; urgency=low
+
+  * NMU
+  * New upstream version.
+    1. Work around the brain dead libtool.
+  * New patches:
+    - debian/patches/500_s390_gas.diff (closes: #194929).
+    - debian/patches/905-hppa_visibility.diff (closes: #195203).
+    - debian/patches/906-mips_ld_fix.diff (closes: #195207).
+    - debian/patches/906-hjl_libtool_dso.diff
+
+ -- Matthias Klose <doko@debian.org>  Sat, 31 May 2003 12:12:10 +0200
+
+binutils (2.14.90.0.3-0.1) unstable; urgency=low
+
+  * NMU
+  * New upstream version.
+    1. Update from binutils 2003 0523.
+    2. Fix 2 ELF visibility bugs.
+    3. Fix ELF/ppc linker bugs.
+  * Remove patches applied upstream:
+    - debian/patches/903-hjl_ld-dso-test.diff
+    - debian/patches/904_hjl_hppa_whitespace.diff
+
+ -- Matthias Klose <doko@debian.org>  Sat, 24 May 2003 09:02:54 +0200
+
+binutils (2.14.90.0.2-0.1) unstable; urgency=low
+
+  * NMU
+  * New upstream version.
+    1. Update from binutils 2003 0515.
+    2. Fix various ELF visibility bugs.
+    3. Fix some ia64 linker bugs.
+    4. Add more IAS compatibilities to ia64 assembler.
+  * New patches:
+    - debian/patches/903-hjl_ld-dso-test.diff (closes: #193505).
+    - debian/patches/904_hjl_hppa_whitespace.diff.
+  * Remove patches applied upstream:
+    - debian/patches/900_binutils-2.14.90.0.1-empty-test.diff
+    - debian/patches/901-hjl_weaksymfix.diff
+
+ -- Matthias Klose <doko@debian.org>  Sun, 18 May 2003 10:50:00 +0200
+
+binutils (2.14.90.0.1-0.1) unstable; urgency=low
+
+  * NMU
+  * New upstream version.
+    - Fix: MIPS branch-to-global bug (closes: #189031).
+    - Fix: Crash on alpha with --gdwarf2 and bad file number (closes: #187211).
+    - Fix: objdump -R BFD ICE on prelinked binaries (closes: #180088).
+  * New patches:
+    - debian/patches/900_binutils-2.14.90.0.1-empty-test.diff
+    - debian/patches/901-hjl_weaksymfix.diff
+  * Remove patches applied upstream:
+    - debian/patches/002_ldlex_inflexible_transition.diff
+    - debian/patches/013_objdump_doc_fix.diff
+    - debian/patches/850_hppa_stub_fix.diff
+    - debian/patches/860_m68k_elf.diff
+    - debian/patches/861_m68k_elf.diff
+    - debian/patches/870-sparc64-update.diff
+    - debian/patches/880-alpha-update.diff
+  * Remove obsolete patch:
+    - debian/patches/patches/800_hjl_mips_fixes.diff
+  * Add x86_64 for the i386 binutils package and the binutils-multiarch
+    package (closes: #189350).
+  * Set CFLAGS to -g -O2 for build (closes: #181268).
+
+ -- Matthias Klose <doko@debian.org>  Tue,  6 May 2003 09:58:14 +0200
+
+binutils (2.13.90.0.18-1.7) unstable; urgency=high
+
+  * NMU
+  * Fixed ld segv (replaced yy_current_buffer by YY_CURRENT_BUFFER)
+    (Closes: #188876, 188900, 188912)
+
+ -- Julien LEMOINE <speedblue@debian.org>  Mon, 14 Apr 2003 04:45:03 +0200
+
+binutils (2.13.90.0.18-1.6) unstable; urgency=high
+
+  * NMU
+  * [002_ldlex_inflexible_transition.diff] New. Make ld buildable again with
+    sid's current flex.
+
+ -- J.H.M. Dassen (Ray) <jdassen@debian.org>  Sun, 13 Apr 2003 16:54:46 +0200
+
+binutils (2.13.90.0.18-1.5) unstable; urgency=medium
+
+  * NMU
+  * [890-elf64_alpha_segfault.diff] Patch from Julien LEMOINE
+    <speedblue@debian.org> to fix the segfault encountered while building
+    gal on alpha. (Closes: #185556)
+  * sid's current flex breaks the building of several packages, including this
+    one; see #188665. The i386 upload is built using a pbuilder sid chroot
+    with flex downgraded to the sarge version.
+
+ -- J.H.M. Dassen (Ray) <jdassen@debian.org>  Sun, 13 Apr 2003 13:44:17 +0200
+
+binutils (2.13.90.0.18-1.4) unstable; urgency=low
+
+  * NMU
+  * ld/emulparams/elf64_sparc.sh: Set LIBPATH_SUFFIX instead of suffix
+    for emulation. Patch from current CVS suggested by Clint Adams,
+    needed for sparc64 glibc build.
+  * bfd/elf64-alpha.c: Patch from current CVS suggested by Falk Hueffner,
+    needed to build xstow, kdegames (#181623), sfs.
+  * Explicitely fail, when trying to build with glibc-2.3 on arm and
+    m68k. See #184048 for m68k ld failures.
+
+ -- Matthias Klose <doko@debian.org>  Tue,  8 Apr 2003 23:27:46 +0200
+
+binutils (2.13.90.0.18-1.3) unstable; urgency=low
+
+  * NMU
+  * Another fix for ELF/m68k (__bb_exit_func initialization).
+
+ -- Matthias Klose <doko@debian.org>  Tue, 18 Mar 2003 00:05:47 +0100
+
+binutils (2.13.90.0.18-1.2) unstable; urgency=high
+
+  * NMU
+  * Apply upstream fix for ELF/m68k.  Closes: #182313.
+  * Use gcc-2.95 on m68k-linux. Built on testing (glibc-2.2).
+
+ -- Matthias Klose <doko@debian.org>  Sun,  9 Mar 2003 01:02:39 +0100
+
+binutils (2.13.90.0.18-1.1) unstable; urgency=low
+
+  * NMU
+  * Apply upstream fix for hppa stubs.  Closes: #181397
+
+ -- LaMont Jones <lamont@debian.org>  Wed, 19 Feb 2003 12:34:58 -0700
+
+binutils (2.13.90.0.18-1) unstable; urgency=low
+
+  * New upstream version (synced with CVS 2002-01-21)
+  * Upstream: Fix an ia64 gas bug
+  * Upstream: Fix some TLS bugs
+  * Upstream: Fix ELF/ppc bugs
+  * Upstream: Fix an ELF/m68k bug
+  * Corrected ARM combreloc disabling patch
+    (closes: Bug#175204)
+  * Upstream fixes take care of TEXTREL bug
+    on powerpc (closes: Bug#176084)
+  * Fixed shellutils dependency problem
+    (closes: Bug#175673)
+  * Removed mention of the monitor manpage
+    from the gprof manpage (closes: Bug#160654)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Sun, 2 Feb 2003 23:17:29 -0500
+
+binutils (2.13.90.0.16-1) unstable; urgency=low
+
+  * New upstream version (synced with CVS 2002-11-26)
+  * Upstream: Include /usr/bin/c++filt
+  * Upstream: Fix "ld -r" with exception handling
+
+ -- Christopher C. Chimelis <chris@debian.org>  Mon, 9 Dec 2002 19:14:02 -0500
+
+binutils (2.13.90.0.14-1) unstable; urgency=low
+
+  * New upstream version (synced with CVS 2002-11-14)
+  * Upstream: Fix ELF/alpha bugs
+  * Upstream: Fix an ELF/i386 assembler bug
+  * Updated package MIPS patch from HJ Lu
+  * Added s390 patches from Gerhard Tonn.
+    Actually, the patches to support s390x were
+    already included upstream, so I just enabled
+    it in the rules script (closes: Bug#168074, Bug#168974)
+  * Since powerpc64-linux support was already
+    added in a prior upload, I'm closing the
+    wishlist bug for it (closes: Bug#156955)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Tue, 20 Nov 2002 05:36:21 -0500
+
+binutils (2.13.90.0.10-2) unstable; urgency=low
+
+  * Added two patches from upstream to fix alpha BFD.
+    (closes: Bug#165633)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Sun, 27 Oct 2002 14:21:51 -0400
+
+binutils (2.13.90.0.10-1) unstable; urgency=low
+
+  * New upstream version (synced with CVS 2002-10-10)
+  * Upstream: More ELF/PPC linker bug fixes.
+  * Upstream: Fix an ELF/alpha linker bug.
+  * Upstream: Fix an ELF/sparc linker bug to support
+    Solaris.
+  * Upstream: More TLS updates.
+  * Updated m68k gcc 3.1 patch since it wasn't applying
+    cleanly. Is this still needed?
+  * Added patches to allow building with new bison
+    (closes: Bug#164436, Bug#164042)
+  * Should be better for prelink support, which is coming
+    soon (closes: Bug#161427)
+  * Removed windres manpage from all packages
+    (closes: Bug#157415)
+  * Fixed download location in copyright file
+    (closes: Bug#158028)
+  * Added i386-gnu to multiarch build targets
+    (closes: Bug#157057)
+  * Add alpha opcode patch from Falk Hueffner
+    (closes: Bug#164201)
+  * Remove .la files from packages
+    (closes: Bug#160455)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Mon, 15 Oct 2002 20:22:29 -0400
+
+binutils (2.13.90.0.4-1) unstable; urgency=low
+
+  * New upstream version (synced with CVS 2002-08-)
+  * Upstream: Update from binutils 2002 0814
+  * Upstream: Fix symbol versioning bugs for gcc 3.2
+  * Upstream: Fix mips gas
+  * Upstream: Fix an x86 TLS bfd bug
+  * Upstream: Fix an x86 PIC gas bug
+
+ -- Christopher C. Chimelis <chris@debian.org>  Thu, 15 Aug 2002 20:13:44 -0400
+
+binutils (2.12.90.0.15-2) unstable; urgency=low
+
+  * Fix combreloc disabling patch for ARM
+    (closes: Bug#156315)
+  * Remove S390 patch since it is no longer
+    needed (thanks to Gerhard Tonn for checking
+    this out)
+  * Fix BFD version string escaping
+    (closes: Bug#154989)
+  * Add SH patch from Yaegashi Takeshi
+    (closes: Bug#156230)
+  * Added conflicts for older modutils
+    (closes: Bug#155324)
+  * Forgot to apply MIPS patch from HJ Lu
+    (apologies to MIPS folks)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Wed, 14 Aug 2002 13:09:12 -0400
+
+binutils (2.12.90.0.15-1) unstable; urgency=low
+
+  * New upstream version (synced with CVS 2002-07-17)
+  * Upstream: Fix an ia64 assembler bug
+  * Upstream: Fix a symbol versioning bug
+  * Upstream: You have to apply the modutils patch
+    enclosed here in order to support System.map
+    generated by the new nm (bug filed)
+  * The symbol visibility patch is included
+    upstream, as is the alpha PLT/GOT patch, so
+    both removed from my packaging.
+  * Included patch from upstream to fix RELA targets
+    (closes: Bug#153729)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Thu, 2 Aug 2002 02:24:29 -0400
+
+binutils (2.12.90.0.14-2) unstable; urgency=low
+
+  * The "Let's Get This Party Started Right" upload
+    (since I'm closing as many old bugs as possible)
+  * Removed sparc patch altogether
+  * Added a small alpha patch from upstream to fix
+    some obscure PLT/GOT issues.
+  * Manpages are now fixed finally -- no more
+    I<symbol> (closes: Bug#108369)
+  * Have not gotten another report of the
+    debconf message being cut off, so I'm closing
+    the debconf-related bug.  I suspect this may
+    have been a problem in the debconf front-end
+    being used, but I have not been able to reproduce
+    it (closes: Bug#149045)
+  * Closing a bug report that I had tagged moreinfo
+    a LONG time ago (over one year), but never got
+    more info on.  I have not heard of this kind
+    of problem since, nor have I been able to
+    reproduce it at any time since (closes: Bug#105986).
+    For interested parties, it revolved around
+    allowing gcc to show a linker error, but the
+    reporter didn't know about the -v option for
+    gcc.  There was a linker problem, but it appeared
+    to be either hardware failure or user error.
+  * Closing a demangler 'bug' that revolved around
+    stripping @PLT from symbol names.  Since the
+    PLT suffix is documented, I'm going to close
+    this bug.  Also, it doesn't help that the symbol
+    in the bug report uses an obsolete mangling style,
+    so I can't test this even if I wanted to
+    (closes: Bug#45889)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Mon, 22 Jul 2002 12:54:01 -0400
+
+binutils (2.12.90.0.14-1) unstable; urgency=low
+
+  * New upstream version (synced with CVS 2002-06-27)
+  * Upstream: Fix a mips assembler bug
+  * Upstream: Fix an ELF/mips SHF_MERGE bug
+  * Upstream:  Fix a linker bug which leads to the
+    incorrect Linux 2.2 kernel.
+  * PE patch removed since it is included
+    in upstream source now
+  * Includes some patches which allow for
+    more true testsuite results from gcc-3.1
+  * Fix sparc ld emulation script patches to get
+    rid of the lib/64 silliness (now uses lib64)
+  * Removed the L word from the package description
+    since Debian is no longer linux-only
+    (closes: Bug#150575)
+  * The strings dereferencing problem with
+    some Windows binaries seems to also be fixed now
+    (closes: Bug#121366)
+  * Added a patch to only generate an RPATH entry
+    if LD_RUN_PATH is not empty, for cases where
+    -rpath isn't specified (closes: Bug#151024)
+  * Fixed arch detection problem in the build
+    scripts.
+  * Fixed bad capitalisation of -g in the objdump
+    manpage (closes: Bug#152697)
+  * Added patch from HJ Lu to fix a symbol
+    visibility issue.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Wed, 17 Jul 2002 14:23:42 -0400
+
+binutils (2.12.90.0.9-1) unstable; urgency=low
+
+  * New upstream version (synced with CVS 2002-05-26).
+  * Upstream: Supports "-z muldefs"
+  * Updated PE bfd from CVS to fix auto-import
+    segfaults (closes: Bug#131407)
+  * Remove the PE-removing patch for i386 targets
+    due to the above
+
+ -- Christopher C. Chimelis <chris@debian.org>  Thu, 6 Jun 2002 15:52:29 -0400
+
+binutils (2.12.90.0.7-1) unstable; urgency=low
+
+  * New upstream version (synced with CVS 2002-04-23).
+  * Upstream: ELF EH frame bug fix
+  * Upstream: MIPS ELF visibility bug fix
+  * Upstream: Bug fixes for ELF/sparc
+  * Upstream: Bug fixes for ELF/cris
+  * Upstream: Fix linking a.out relocatable files
+    with ELF
+  * Upstream: Fix a PPC altivec assembler bug
+  * Numerous upstream changes since I have
+    deliberately not updated in awhile so that
+    I could stabilise the package for woody
+    release
+  * Fixed a glaring typo in the Debian additions
+    to the version string.
+  * Upstream incorporated --oformat
+    documentation patch; removed.
+  * Added a patch from upstream involving
+    relative relocs on Alpha
+  * Removed configure.info-[1-3] from -doc
+    (closes: Bug#146205)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Sun, 5 Apr 2002 04:52:33 -0400
+
+binutils (2.12.90.0.1-5) unstable; urgency=high
+
+  * Added a patch to m68k bits for gas to allow
+    gcc 3.1 to build
+  * Added Brazilian Portuguese translation for
+    debconf (closes: Bug#144677)
+  * Removed unneeded gasp manpage since gasp
+    was eliminated as a distinct binary
+    (closes: Bug#144583)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Mon, 29 Apr 2002 14:40:21 -0400
+
+binutils (2.12.90.0.1-4) unstable; urgency=low
+
+  * Added patch from Gerhardt Tonn
+    to fix s390 merge problem (closes: Bug#143187)
+  * Corrected DOW of my last changelog entry :-P
+
+ -- Christopher C. Chimelis <chris@debian.org>  Thu, 18 Apr 2002 13:03:49 -0400
+
+binutils (2.12.90.0.1-3) unstable; urgency=low
+
+  * Oops...I used dpkg-architecture from dpkg-dev
+    in the postinst and didn't add a dependency
+    for it.  It was a bad choice anyway and I'm
+    going to use uname -s instead
+    (closes: Bug#142744, Bug#142915)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Mon, 15 Apr 2002 12:41:10 -0400
+
+binutils (2.12.90.0.1-2) unstable; urgency=low
+
+  * Added Catalan debconf translation
+    (closes: Bug#139740)
+  * Ensure that info entries are removed from the
+    texinfo dirfile when binutils-doc is removed
+    (closes: Bug#126557)
+  * Ensure that the kernel link debconf warning
+    only shows up on linux systems
+    (closes: Bug#142360)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Thu, 13 Mar 2002 01:30:22 -0400
+
+binutils (2.12.90.0.1-1) unstable; urgency=high
+
+  * New upstream version (synced with CVS 2002-03-07).
+  * Upstream: Add the .preinit_array/.init_array/.fini_array
+    support.
+  * Upstream: Fix eh_frame.
+  * Upstream: Turn on combreloc by default.
+  * Upstream: Enable gprof for Linux/mips.
+  * Turn combreloc off for ARM explicitely until
+    I can confirm that PIC is not still broken
+    by using it.
+  * Remove IA-64 unwind patch and objcopy fix
+    since they are included in the upstream sources
+    now.
+  * Re-enable testsuite run since Randolph did the NMU
+    on dejagnu (thank you!).
+  * Appears to fix sparc64 linking problems.  I'm
+    still looking into exactly what was going on with
+    that (closes: Bug#137850)
+  * Enabled hppa64-linux support in main binutils
+    package (closes: Bug#137955)
+  * Added Japanese debconf template.  Thanks to
+    Tomohiro KUBOTA for supplying that
+    (closes: Bug#138112)
+  * Added patch for ld to fix dosemu problems
+    (closes: Bug#126863)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Mon, 11 Mar 2002 14:02:45 -0500
+
+binutils (2.11.93.0.2-3) unstable; urgency=high
+
+  * Split translated debconf templates out.
+    I apparently misunderstood the instructions
+    on integrating the French translation since
+    this is my first real attempt at using
+    debconf (closes: Bug#136295)
+  * Disable combreloc default on ARM since it
+    breaks PIC, apparently (closes: Bug#134241)
+    Please test other ARM bugs against this
+    version and inform me of the results!
+
+ -- Christopher C. Chimelis <chris@debian.org>  Fri, 8 Mar 2002 19:10:10 -0500
+
+binutils (2.11.93.0.2-2) unstable; urgency=high
+
+  * Include a patch from upstream to fix stripping
+    archives containing multiple files with the
+    same name (like libgcj, unfortunately).
+    (closes: Bug#107812)
+  * Include IA64 unwind fix from CVS to fix kernel
+    linking on IA64. (closes: Bug#135143)
+  * Added French translation of the debconf
+    bits.  Thanks to Denis Barbier for the
+    work on that. (closes: Bug#134626)
+  * Disabled testsuite run until dejagnu is
+    fixed.  I'm leaving the build-dep for dejagnu
+    in, though, since I know I'll forget to
+    reinsert it when I do re-enable the testsuite
+    run.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Fri, 22 Feb 2002 14:05:22 -0500
+
+binutils (2.11.93.0.2-1) unstable; urgency=high
+
+  * New upstream version (synced with CVS 2002-02-07).
+  * Upstream: Fix a weak symbol alpha linker bug for glibc.
+  * Upstream: More support for gcc 3.1.
+  * Keep on disabling efi-app-ia32 type targets
+    since the segfault is still unfixed in CVS and
+    I haven't had the time to go back and really
+    debug and fix this.
+  * Updated standards version.
+  * Corrected some of the lintian problems (all except
+    the ones involving Changelog.linux, the .comment
+    section, and the missing manpages for
+    binutils-multiarch's binaries since that package
+    depends on binutils, which provides those).
+
+ -- Christopher C. Chimelis <chris@debian.org>  Wed, 13 Feb 2002 13:41:47 -0500
+
+binutils (2.11.92.0.12.3-7) unstable; urgency=high
+
+  * The "Remind Me To Think Next Time" upload.
+  * Fix the postinst to only compare versions on
+    upgrade rather than during configure.
+    (closes: Bug#133349, Bug#133514)
+  * Still working on the other bugs...if only
+    I could get a day off of work...
+
+ -- Christopher C. Chimelis <chris@debian.org>  Tue, 12 Feb 2002 06:15:02 -0500
+
+binutils (2.11.92.0.12.3-6) unstable; urgency=high
+
+  * The "Make The Bad Man Stop" upload.
+  * Revert patch to bfd/elf32-sparc.c (already
+    reverted upstream) that broke UA32 relocs on sparc
+    and caused bus errors with C++/Java binaries
+    (closes: Bug#126162)
+  * Remove i486-mingw32 target from the enabled
+    in multiarch and removed efi-app-ia32 from the
+    BFD config for Intel linux targets until I can find
+    and fixthe segfaults that seem to keep coming up when
+    reading Windows files and viruses with objdump or
+    strings.  This is only temporary, so I'm not closing
+    the bugs until the problem gets fixed, but
+    I am going to bump them down to wishlist, merge
+    them, and note the above in them.
+    (debian/patches/010_disable_efi_app_ia32_TEMPORARY.diff
+    disables the efi-app-ia32 BFD in case someone
+    wants to revert this change easily)
+  * Added debconf warning about the kernel linking
+    situation since it keeps coming up and people
+    keep initially disagreeing with me about this
+    being a kernel bug.  Also, merged prior warning
+    about -oformat change into the same debconf warning
+    (it's two, two, two warnings in one).  This makes
+    the DEBIAN_FRONTEND case bug moot (closes: Bug#131801)
+  * Added powerpc64-linux target to multiarch since
+    work is progressing on that target and the machines
+    are due to hit the shelves Very Soon(TM).
+
+ -- Christopher C. Chimelis <chris@debian.org>  Fri, 1 Feb 2002 17:06:29 -0500
+
+binutils (2.11.92.0.12.3-5) unstable; urgency=high
+
+  * Fix signed char assumption in i386 disassembly bits
+    (closes: Bug#126993)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Mon, 8 Jan 2002 17:27:17 -0500
+
+binutils (2.11.92.0.12.3-4) unstable; urgency=high
+
+  * Go back to enabling archs by enumeration for
+    multiarch.  Apparently, a few aren't enabled
+    with --enable-targets=all (sparc64-linux, namely).
+    Besides, multiarch was incredibly large, which
+    was probably unneeded.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Wed, 26 Dec 2001 13:53:49 -0500
+
+binutils (2.11.92.0.12.3-3) unstable; urgency=high
+
+  * Include patch from Alan Modra to fix more
+    refcount problems on hppa.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Fri, 7 Dec 2001 05:42:04 -0500
+
+binutils (2.11.92.0.12.3-2) unstable; urgency=high
+
+  * Include patch from Alan Modra to fix hppa linking
+    woes wrt undefined symbols (closes: Bug#121993)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Wed, 5 Dec 2001 04:14:51 -0500
+
+binutils (2.11.92.0.12.3-1) unstable; urgency=high
+
+  * New upstream version (synced with CVS 2001-11-21)
+  * Upstream: Fix a linker symbol version bug
+    for common symbols.
+  * Upstream: Update handling relocations against
+    the discarded sections. You may need to apply
+    the kernel patch enclosed here to your kernel
+    source.
+  * Upstream: Support "-march=xxx -mipsN" for mips
+    gas if they are compatible.
+  * Upstream: Fix a regression when linking with
+    non-ELF object files.
+  * Includes Alan Modra's patch to reduce stub sizes
+    on HPPA.  Should help C++ on HPPA.
+  * Once again includes a mips patch from HJ Lu.
+  * My documentation changes were cleaned up and
+    accepted upstream, so the gas manpage fixes go
+    away (hurray!).
+  * Stopped iterating targets for binutils-multiarch
+    and started enabling all of them.  This saves
+    maintenance time since new targets will be
+    automatically supported in future uploads
+    and existing targets that I didn't include
+    before will be supported from now on.  This may
+    grow build time and the libbfd in the multiarch
+    package, but it's worth it.
+  * Also, started using the --enable-64-bit-bfd
+    flag for configuring multiarch.  I don't know
+    why I didn't realise this wasn't there before
+    since I test with it all of the time.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Fri, 30 Nov 2001 20:11:42 -0500
+
+binutils (2.11.92.0.10-4) unstable; urgency=high
+
+  * The "Fingers crossed" upload.
+  * Enable combreloc by default for s390 again.
+    Rumour has it that it worked before, but there
+    was a misunderstanding in the s390 developer
+    community, hence the disabling in the past.
+  * Fix the ld texinfo file to not mention the old
+    oformat invocation (closes: Bug#116182)
+  * Next upload should include the mips updates and
+    some powerpc updates.  I just need time to test
+    those out first.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Fri, 23 Nov 2001 23:23:22 -0500
+
+binutils (2.11.92.0.10-3) unstable; urgency=high
+
+  * Replace HPPA reloc patch with patches from Alan
+    Modra upstream.
+  * Add upstream patch to fix quoted -rpath bug
+    (closes: Bug#107214)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Sat, 10 Nov 2001 18:19:05 -0400
+
+binutils (2.11.92.0.10-2) unstable; urgency=high
+
+  * Disable -z combreloc enable patch on S/390
+    since it's not supported there yet
+    (closes: Bug#117087)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Fri, 26 Oct 2001 00:07:01 -0400
+
+binutils (2.11.92.0.10-1) unstable; urgency=high
+
+  * New upstream version (synced with CVS 2001-10-21)
+  * Upstream: Fix the ELF/PPC linker.
+  * Upstream: Fix the ELF/cris linker.
+  * Upstream: Fix ELF strip.
+  * Includes beginnings of Altivec support
+    (closes: Bug#98617)
+  * Fixes use of BookE instruction format on 4xx
+    PowerPC (closes: Bug#116627)
+  * Includes patches from Alan Modra to fix hppa
+    relocations.
+  * Forgot to close the previous PPC bug with last
+    upload (closes: Bug#116454)
+  * Moved to enclosing a bzipped tarball rather than
+    a gzipped one to save download time for everyone
+    involved.  Build-deps adjusted accordingly.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Tue, 23 Oct 2001 03:29:49 -0400
+
+binutils (2.11.92.0.7-2) unstable; urgency=high
+
+  * Include a patch from H.J Lu to fix a powerpc
+    issue not shown in the testsuite results.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Fri, 19 Oct 2001 00:49:04 -0400
+
+binutils (2.11.92.0.7-1) unstable; urgency=high
+
+  * New upstream release (synced with CVS 2001-10-16)
+  * Upstream:  Fix all breakages introduced in 2.11.92.0.5
+  * No mips/ dir patches need to be applied with this one.
+    Woohoo!
+  * Removed patches from debian/patches that are already
+    applied upstream.
+  * Patched version strings to reflect that this is a
+    Debian release at the request of upstream (to prevent
+    confusion, apparently).
+  * Applied patch from H.J. Lu to fix mips section
+    misalignment.
+  * Applied patch from Jakub Jelinek to fix kernel linking
+    on i386 and possibly other archs (closes: Bug#116041)
+  * Fixed postinst and prerm for binutils-doc to test that
+    the files exist before calling install-info.  This should
+    fix the odd circumstance when binutils-doc is packaged on
+    an arch that doesn't support gprof (or any other dir for
+    that matter) and, therefore, the docs that are usually
+    made in that dir aren't made.  This is particularly true
+    with gprof on mips.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Wed, 17 Oct 2001 18:56:51 -0400
+
+binutils (2.11.92.0.5-3) unstable; urgency=high
+
+  * Enable -z combreloc on all targets. This will make
+    prelinking possible with the prelink package.  Please
+    test this on all archs prior to upload.  If it fails, file
+    a bug immediately and I'll disable the patch for that
+    platform.
+  * Added patches from Alan Modra (from CVS) to fix other
+    archs after the refcount patch broke them.  This supercedes
+    the powerpc patch, so I replaced that with this.
+    (closes: Bug#115218)
+  * Added patch from H.J. Lu (from CVS) to fix IA64 linker
+    problems as well.
+  * Added patch from David Kimdon to specify which filename is
+    causing an error if that filename is a dir (closes: Bug#45832).
+  * Removed workaround patch for stabs problem on Alpha since
+    it appears to be causing problems on mips and is no longer
+    needed on Alpha anyway.
+  * Now runs the testsuite and includes the results in the
+    binutils package for reference.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Sat, 13 Oct 2001 15:10:20 -0400
+
+binutils (2.11.92.0.5-2) unstable; urgency=high
+
+  * Applied fix from H.J. Lu to fix PowerPC target
+    (closes: Bug#115285).  Thanks to Jack Howarth
+    for forcing the issue upstream.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Fri, 12 Oct 2001 23:14:51 -0400
+
+binutils (2.11.92.0.5-1) unstable; urgency=high
+
+  * New upstream release (synced with CVS 2001-10-05)
+  * Upstream: Support gcc 3.1 for IA64.
+  * Upstream: Support prelink for ELF/PPC.
+  * Upstream: Fix an ELF/x86 linker bug for Oracle
+    (closes: Bug#113614)
+  * Upstream: Fix a weak symbol bug.
+  * Upstream: Support locale.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Tue, 9 Oct 2001 19:53:49 -0400
+
+binutils (2.11.90.0.31-2) unstable; urgency=high
+
+  * Applied IA64 patch from CVS to fix gcc issues
+    on IA64.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Mon, 24 Sep 2001 12:45:29 -0400
+
+binutils (2.11.90.0.31-1) unstable; urgency=high
+
+  * New upstream source (synced with CVS 2001-08-30)
+  * Upstream: Fix a MIPS linker bug.
+  * Now applying mips diffs from H.J. Lu (upstream)
+    for better MIPS and MIPS64 support.
+  * Applied patch from Christopher Cramer to fix
+    gasp .REG issue (closes: Bug#110560)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Sat, 1 Sep 2001 23:42:22 -0400
+
+binutils (2.11.90.0.29-1) unstable; urgency=high
+
+  * New upstream source (synced with CVS 2001-08-27)
+  * Upstream: Fix an Alpha assembler bug.
+  * Upstream: Fix an IA64 linker bug.
+  * Upstream: Fix a MIPS linker bug.
+  * Upstream: Support '-z combreloc|nocombreloc' in linker.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Thu, 30 Aug 2001 04:48:04 -0400
+
+binutils (2.11.90.0.27-4) unstable; urgency=high
+
+  * Argh.  Really remove the manpages from multiarch
+    this time (closes: Bug#110410)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Tue, 28 Aug 2001 14:32:34 -0400
+
+binutils (2.11.90.0.27-3) unstable; urgency=high
+
+  * Include hppa patch to force error
+    (closes: Bug#109173)
+  * Fix manpages - seems that I accidentally included
+    the multiarch manpages rather than the target
+    manpages (sorry).
+  * Partial update to as manpage to denote arch options
+    and added options for the rest of the targets
+    Still need to elaborate on them, though.  More
+    changes are forthcoming (closes: Bug#110127)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Mon, 27 Aug 2001 10:13:27 -0400
+
+binutils (2.11.90.0.27-2) unstable; urgency=high
+
+  * Remove bash dependency...ash's behaviour has
+    already been modified, so it should be able
+    to build binutils now (closes: Bug#106992)
+  * Includes new S/390 patch (closes: Bug#109300)
+  * Could never reproduce objdump segfault and
+    never got a reply on the bug report
+    (closes: Bug#93884)
+  * Can't reproduce m68k segfault either
+    (closes: Bug#87714)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Mon, 20 Aug 2001 23:07:30 -0400
+
+binutils (2.11.90.0.27-1) unstable; urgency=high
+
+  * New upstream source (synced with 20010810 CVS)
+  * Upstream: Fixed x86 linker bug.
+  * Reverted a patch to gas to dodge a bug in STABS output
+    on Alpha using gcc 2.95.4, so alpha can be in sync
+    with the rest of the archs now.
+  * Fixes strip problems with busybox (closes: Bug#106593)
+  * Kernels should compile ok again on i386
+    (closes: Bug#107190)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Thu, 16 Aug 2001 08:24:49 -0400
+
+binutils (2.11.90.0.25-1) unstable; urgency=high
+
+  * New upstream source (synced with 20010726 CVS)
+  * Upstream: fix i386 assembler bug.
+  * Upstream: "make check" has 2 failures in the
+    ld-selective test in ld on Linux/alpha. They
+    should be marked xfail. Fixed in the next release.
+  * Removed m68k patch (closes: Bug#106431)
+  * Man pages appear to be correctly generated now
+    (closes: Bug#98569, Bug# 98938)
+  * Added bash build dependency (closes: Bug#106992)
+  * Should compile ok on powerpc (the last one did
+    also...don't know why voltaire's build daemon failed).
+    I won't close this bug until I build it myself
+    on voltaire or hear back from the autobuilder folks
+    on PPC.
+  * Looking into the whole LD_LIBRARY_PATH issue that
+    keeps being brought up.  I think the docs are wrong
+    because the templates say that it shouldn't obey that
+    at all.  Can we please stop filing duplicate bugs for
+    this?  I would greatly appreciate it...
+
+ -- Christopher C. Chimelis <chris@debian.org>  Wed, 1 Aug 2001 07:06:52 -0400
+
+binutils (2.11.90.0.24-1) unstable; urgency=high
+
+  * New upstream source (synced with 20010714 CVS)
+  * DO NOT COMPILE FOR ALPHA.  I need to fix gcc 2.95.4
+    prior to this release working on Alpha correctly
+    (long story).
+  * Upstream: Avoid COPY relocs on i386
+  * Upstream: Fix IA64 assembler (please try this and let me know)
+  * Upstream: Fix a static linking the PIC object files on ia32
+  * Upstream: Add the version script support for --export-dynamic
+  * Upstream: Fix sparc/elf for linux/sparc
+  * Upstream: Fix alpha/elf for gcc 3.0
+  * Supposedly required for gcc-3.0 usage on many platforms
+  * Add s390 to multiarch list (closes: Bug#98095)
+  * Supposedly good on mips, but please check.  I emailed Ryan
+    to see if bug 98095 still happens, but never got a reply.
+    If I get around it, I'll check it myself since my mips
+    lives once again.
+  * Retake my package from Matt (next time we agree to an NMU,
+    please don't change the maintainer name...no wonder I didn't
+    get any bug reports!)
+  * Cross-compilation support will be added in the next upload
+    (I'll be uploading alpha debs with the next release as well,
+    the alpha problem outweighs cross-compilation support in
+    priority right now).
+
+ -- Christopher C. Chimelis <chris@debian.org>  Thu, 19 Jul 2001 05:12:05 -0400
+
+binutils (2.11.90.0.7-2) unstable; urgency=high
+
+  * Applied patch from Alan Modra to fix m68k
+    assertion problems (closes: Bug#96352)
+  * Applied srec patch from Richard Henderson for
+    alpha.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Wed, 9 May 2001 03:11:19 -0400
+
+binutils (2.11.90.0.7-1) unstable; urgency=high
+
+  * New upstream source (synced with 20010425 CVS)
+  * Upstream: Fix the -Bsymbolic bug introduced in
+    binutils 2.11.90.0.5 (closes: Bug#95168)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Sun, 29 Apr 2001 20:03:22 -0400
+
+binutils (2.11.90.0.5-1) unstable; urgency=high
+
+  * New upstream source (synced with 20010414 CVS)
+  * Upstream: Fix in IA64 assembler
+  * Upstream: Change Linux/MIPS to use SVR4 MIPS ABI
+    rather than IRIX ABI.
+  * The above change may cause problems for MIPS.
+    If so, please file a bug and I'll revert those
+    changes if need be.  I suspect that glibc, gcc,
+    and the kernel may eventually follow suit, though
+    to fit in with this change (it makes sense...
+    see the symbol ordering problems threads on the
+    binutils list for more info).
+  * Upstream: IA32 gas bug fixed...no further details
+    provided, unfortunately.
+  * Reportedly fixes core dumping when trying to link
+    object files from other platforms (now warns)
+    (closes: Bug#60502)
+  * Includes Philip Blundell's ARM PLT patch finally...
+    sorry for the delay (closes: Bug#94181)
+  * m68k problems should be fixed by now.  Wish I had
+    gotten more feedback, but I didn't so I'm assuming it
+    works at this point (closes: Bug#74396)
+  * Stopped compiling cross-compiler packages until we
+    work out a better system for the entire toolchain.
+    Sorry, but it was taking far too long on even fast
+    machines and I've gotten more complaints about the
+    current arrangement than I have positive feedback.
+    (closes: Bug#91120, Bug#91119, Bug#91118, Bug#91117,
+     Bug#91116, Bug#88311, Bug#78028, Bug#90177)
+  * Fixed readelf manpage so that it no longer says that
+    it is a preprocessor for assembly programs
+    (closes: Bug#90798)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Tue, 17 Apr 2001 20:07:14 -0400
+
+binutils (2.11.90.0.1-1) unstable; urgency=high
+
+  * New upstream source (synced with 20010309
+    CVS).
+  * Fixed misapplied m68k ld patch.
+    I am hoping that this almost totally fixes
+    m68k ELF for now.
+  * Fixed typo in mips patch and applied another
+    mips patch from Daniel Jacobowitz.
+  * Should no longer build same-arch cross
+    packages.  Please let me know if this fix
+    worked so that I can close the bugs (I have
+    no access to such an arch at the moment)
+  * Made urgency high since m68k really needs
+    this if the bugs are truly fixed.  Even if
+    not, this version is infinitely better on
+    at least two platforms than prior ones were.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Thu, 15 Mar 2001 16:29:32 -0500
+
+binutils (2.10.91.0.2-4) unstable; urgency=low
+
+  * Applied m68k ld and bfd patches from
+    Michael Fedrowitz to hopefully make things
+    better on m68k.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Sun, 11 Mar 2001 20:16:44 -0500
+
+binutils (2.10.91.0.2-3) unstable; urgency=low
+
+  * Adjusted the priority of binutils-doc to
+    optional.
+  * Added debhelper build-depends (closes: Bug#87690)
+  * Fixed postinst problem for new binutils
+    installations (closes: Bug#87911)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Thu, 1 Mar 2001 15:06:50 -0500
+
+binutils (2.10.91.0.2-2) unstable; urgency=low
+
+  * Add support for SH and IA64 to binutils-multiarch.
+  * Applied m68k gas patch from Michael Fedrowitz
+    in hopes that this will fix the grave bug that
+    has been such a pain to m68k folks.  I'll leave
+    the bug open until it's verified that it works
+    ok.
+  * Applied IA-64 printf patch (closes: Bug#82702)
+  * Kernels appear to be building fine with this
+    release on all archs available to me
+    (closes: Bug#77610)
+  * Added text during postinst that informs users
+    to modify their i386 kernel Makefiles for the
+    --oformat change (closes: Bug#86995)
+  * Incorporated remaining mips diffs that weren't
+    already applied upstream (closes: Bug#81280)
+  * Sparc/sparc64 patch seems to be doing fine, so
+    closing the bug (closes: Bug#86781)
+  * Added non-linux cross- package support to rules
+    (closes: Bug#79948)
+  * Close misc bugs:
+    Missing info file in binutils-doc (closes: Bug#78754)
+
+ -- Christopher C. Chimelis <chris@debian.org>  Thu, 22 Feb 2001 19:36:12 -0500
+
+binutils (2.10.91.0.2-1) unstable; urgency=low
+
+  * New upstream version.
+  * Added weak symbol relocation patch for sparc/sparc64.
+  * Included m68k ELF fix from Michael Fedrowitz.
+  * BIG NOTE: any i386 kernels compiled with this will need
+    to be patched to change the ld option '-oformat' to
+    '--oformat' (extra hyphen).
+
+ -- Christopher C. Chimelis <chris@debian.org>  Tue, 20 Feb 2001 21:32:44 -0500
+
+binutils (2.10.1.0.2-1) unstable; urgency=low
+
+  * New upstream release (really prerel, but better than
+    using a CVS version).
+  * Should re-add Compaq demangling style to all
+    tools (alpha-only).
+  * Again, hopefully fixes m68k ELF support...still have
+    no idea why or how this was broken before.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Mon, 20 Nov 2000 16:25:44 -0500
+
+binutils (2.10.0.27-0.cvs20001011.2) unstable; urgency=low
+
+  * Applied another PowerPC patch to correct the
+    implementation of .protected and .hidden in the
+    linker.  This should also aid in the glibc
+    transition on PowerPC.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Tue, 17 Oct 2000 13:23:40 -0400
+
+binutils (2.10.0.27-0.cvs20001011.1) unstable; urgency=low
+
+  * Applied PowerPC weak symbol patch from CVS to aid
+    in glibc transition on that platform.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Sun, 15 Oct 2000 19:12:22 -0400
+
+binutils (2.10.0.27-0.cvs20001011) unstable; urgency=low
+
+  * Grabbed a new CVS version since it backs out a
+    change that prevented current gcc snapshots from
+    linking properly to libstdc++v3.  This may also
+    solve some other problems related to global
+    section symbols (feedback appreciated).
+  * Finally changed my email address in the control
+    file (how I overlooked this after all of this
+    time I'll never know).
+
+ -- Christopher C. Chimelis <chris@debian.org>  Wed, 11 Oct 2000 08:59:36 -0400
+
+binutils (2.10.0.27-0.cvs20001008) unstable; urgency=low
+
+  * Removed configure.info.gz from binutils-doc since
+    it didn't really belong there. (closes: Bug#72746)
+  * Update for hppa/hppa64 targets (included testsuite
+    changes committed on 07-Oct-2000). (closes: Bug#71524)
+  * Upstream change to elflink.h to hopefully stop
+    segfaults on some archs when linking binaries to
+    shared libs.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Sun,  8 Oct 2000 16:14:08 -0400
+
+binutils (2.10.0.27-0.cvs20000923.1) unstable; urgency=low
+
+  * Fixed rules file so that builds don't fail when compiling the
+    binary-arch target (added binary-cross to binary-arch).
+  * Fixed harmless attempt at removing builddir-avr twice.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Thu, 28 Sep 2000 10:39:12 -0400
+
+binutils (2.10.0.27-0.cvs20000923) unstable; urgency=low
+
+  * CVS snapshot from 2000-09-23.
+  * Should fix some (most) HPPA issues.
+  * Adds binutils-m68k cross-assembler.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Sun, 24 Sep 2000 10:19:20 -0400
+
+binutils (2.10.0.26-2) unstable; urgency=low
+
+  * Added the avr target for Amtel's AVR MCU's
+  * Applied Frank I. Smith <smith@amirix.com> to generate packages for
+         multiple cross targets:
+           + Bump rev number, NOP.
+      + Testing out bumping up the rev number.
+      + Added powerpc, arm, mipsel cross binutils packages.
+       
+ -- Christopher C. Chimelis <chris@debian.org>  Fri, 22 Sep 2000 17:31:44 -0400
+
+binutils (2.10.0.26-1) unstable; urgency=low
+
+  * New upstream source.
+  * Added mips-linux, hppa-linux, and hppa64-linux to multiarch targets
+
+ -- Christopher C. Chimelis <chris@debian.org>  Sun, 17 Sep 2000 01:05:49 -0400
+
+binutils (2.10.0.24-1) unstable; urgency=low
+
+  * New upstream source.
+  * Fixes ia32 assembler buglet.
+  * (Hopefully) fixes PPC visibility problems with
+    glibc 2.2
+
+ -- Christopher C. Chimelis <chris@debian.org>  Thu, 24 Aug 2000 16:52:44 -0400
+
+binutils (2.10.0.18-3) unstable; urgency=low
+
+  * Added build depends stuff.
+
+ -- Christopher C. Chimelis <chris@debian.org>  Sat, 5 Aug 2000 21:09:04 -0400
+
+binutils (2.10.0.18-2) unstable; urgency=low
+
+  * Added proviso to control file saying that -multiarch
+    should not be installed by the average user.
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Sat, 29 Jul 2000 20:07:15 -0400
+
+binutils (2.10.0.18-1) unstable; urgency=low
+
+  * New upstream source.
+  * Should address some needed things for glibc 2.2
+    (added new DT_XXXX dynamic tags and fixes DT_NEEDED
+    link bug)
+  * Reapplied the now-infamous "ObjC patch" until
+    we can figure out why we still have this problem
+    (hint hint hint...we really need to do this).
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Sat, 22 Jul 2000 13:18:27 -0400
+
+binutils (2.10.0.9-4) unstable; urgency=low
+
+  * Applied a patch from Ben Collins to fix sparc64
+    linker scripts
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Sat, 8 Jul 2000 07:24:10 -0400
+
+binutils (2.10.0.9-3) unstable; urgency=low
+
+  * Applied a patch from the libstdc++ mailing list to
+    make sure that the linker doesn't eat the eh_frame
+    section.
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Fri, 7 Jul 2000 10:26:59 -0400
+
+binutils (2.10.0.9-2) unstable; urgency=low
+
+  * Wow, already a bug fix.
+  * binutils-dev now provides libiberty.h
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Fri, 23 Jun 2000 19:54:39 -0400
+
+binutils (2.10.0.9-1) unstable; urgency=low
+
+  * New upstream version (more linux-specific).
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Fri, 23 Jun 2000 14:31:04 -0400
+
+binutils (2.10-1) unstable; urgency=low
+
+  * New upstream version (finally, a real release!)
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Wed, 21 Jun 2000 19:08:14 -0400
+
+binutils (2.9.5.0.46-1) unstable; urgency=low
+
+  * New upstream source.
+  * ELF visibility attribute should work correctly now.
+  * ia32 "jmp" instructions are now assembled differently
+    to use relocation for global jumps (affects PIC asm
+    code).
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Thu, 8 Jun 2000 21:34:42 -0400
+
+binutils (2.9.5.0.42-1) unstable; urgency=low
+
+  * New upstream source.
+  * Includes a testcase for hidden symbol support.
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Fri, 19 May 2000 20:48:52 -0400
+
+binutils (2.9.5.0.41-1) unstable; urgency=high
+
+  * New upstream source.
+  * Now includes patch to enable hidden symbol support
+    needed for gcc 3.0 testing.
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Fri,  5 May 2000 20:38:41 -0400
+
+binutils (2.9.5.0.37-1) frozen unstable; urgency=high
+
+  * Was forced to bring the current frozen version up to
+    upstream 2.9.5.0.37 in order to fix a rather nasty
+    i386 gas bug and also since the existing ARM patch
+    applied in 2.9.5.0.31-3 has been superceded upstream
+    (closes:Bug#62119)
+  * Includes proper demangler support for Compaq compiler
+    usage on Alpha (may be superceded upstream shortly,
+    but is good enough for potato and for Compaq's usage)
+    (closes:Bug#62079)
+  * Added cross-compilation support for individual use.
+    Please note that the binary packages do not support
+    this.  If you require this feature, you need to compile
+    the source package changing debian/rules.  Also, if
+    you do this, YMMV since things on this front are changing
+    rapidly upstream and also because cross-compiling from
+    certain platforms to others may not work (i386->alpha,
+    for example).  (closes:Bug#59246)
+  * Fixed replaces statement in binutils-multiarch
+    (closes:Bug#62496)
+  * Release Manager: I once again beg that this be included
+    in potato.  I've freed up some time to deal with bug
+    reports quickly if needed.
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Sat, 29 Apr 2000 04:03:39 -0400
+
+binutils (2.9.5.0.31-3) frozen unstable; urgency=high
+
+  * Applied patch to fix broken ARM code generation (closes:Bug#61977)
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Fri,  7 Apr 2000 15:50:42 -0400
+
+binutils (2.9.5.0.31-2) frozen unstable; urgency=high
+
+  * Remove ld from binutils-multiarch since it doesn't want to
+    link kernels on several archs properly (fixes severity:important bug)
+    (closes: Bug#61719, Bug#61615, Bug#51625)
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Mon,  3 Apr 2000 22:48:55 -0400
+
+binutils (2.9.5.0.31-1) frozen unstable; urgency=high
+
+  * Yet another patch (this time from H.J. Lu upstream) to fix
+    the unlink race condition bug.  This is VERY important and
+    needs to be in potato.  It also fixes the temp file creation
+    problem with objcopy on PPC (closes: Bug#60934)
+  * New upstream release.  Fixes a serious Alpha bug along
+    with a demangler bug and several others (closes: Bug#61121)
+  * Should fix apt-get upgrade problem...please test
+    (closes: Bug#56175)
+  * Release manager: can we squeeze this in?  I know it's a
+    new version, but the ELF bug on Alpha really needs to
+    be fixed along with the rest of the above and some others
+    not mentioned here.
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Wed, 22 Mar 2000 05:05:12 -0500
+
+binutils (2.9.5.0.22-5) frozen unstable; urgency=high
+
+  * Applied fixed patch from Colin Phipps to seal the unlink
+    race condition in bfd/cache.c (closes: Bug#58865, Bug#57831)
+  * Installed a proper changelog in binutils-doc
+    (closes: Bug#58522)
+  * Closes other older bug (closes: Bug#55801)
+  * Included bbconv.pl in binutils main package in the doc dir
+    under the gprof subdir (closes: Bug#57521)
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Tue, 14 Mar 2000 10:32:52 -0500
+
+binutils (2.9.5.0.22-4) frozen unstable; urgency=high
+
+  * Patched gprof/hertz.h to allow binutils to actually
+    build and work on Hurd (closes: Bug#57564)
+  * Patched bfd/cache.c to avoid a rare, but possible
+    security problem when as is creating/opening temp
+    files (closes: Bug#57831)
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Thu, 17 Feb 2000 10:31:05 -0500
+
+binutils (2.9.5.0.22-3) frozen unstable; urgency=high
+
+  * Removed standards.info...do we really need seven
+    bugs filed for the same problem
+    (closes: Bug#54521, Bug#54546, Bug#54614, Bug#54682, Bug#55402, Bug#55582, Bug#55602)
+  * Changed binutils-multiarch extended description
+    to mention that a cross-assembling gas is not
+    included (closes: Bug#49308)
+  * Closing a bug because it related to lack of disk space
+    (closes: Bug#52714)
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Wed, 19 Jan 2000 19:28:09 -0500
+
+binutils (2.9.5.0.22-2) unstable; urgency=high
+
+  * Added getopt.h include that was omitted in the -taso patch
+    (closes: Bug#52380)
+  * Fixed table misalignment when calling objdump --info
+    (closes: Bug#51517)
+  * Added Debian changelog to binutils-doc (closes: Bug#52574)
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Wed, 15 Dec 1999 19:14:05 -0500
+
+binutils (2.9.5.0.22-1) unstable; urgency=high
+
+  * New upstream version.
+  * More MIPS fixes.
+  * Added support for -taso linker flag for Alpha.
+  * Reapplied all previous patches.
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Wed,  7 Dec 1999 01:08:51 -0600
+
+binutils (2.9.5.0.19-1) unstable; urgency=high
+
+  * New upstream version
+  * Fixes some MIPS problems
+  * Reapplied the ObjC patch (is this ever going to be fixed upstream)
+    since it's badly needed right now
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Thu, 4 Nov 1999 15:00:35 -0400
+
+binutils (2.9.5.0.16-3) unstable; urgency=low
+
+  * Added support for mipsel-linux in binutils-multiarch
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Thu, 4 Nov 1999 15:00:35 -0400
+
+binutils (2.9.5.0.16-2) unstable; urgency=low
+
+  * Added a replaces field in the control file to fix
+    previous file overwrite problems (closes: Bug#47518, Bug#47938)
+  * Verified manpages are up to date (closes: Bug#18483)
+  * Added m68k-rtems to targets in -multiarch in hopes
+    that it will actually work as advertised (closes: Bug#47468)
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Mon, 25 Oct 1999 15:58:55 -0400
+
+binutils (2.9.5.0.16-1) unstable; urgency=low
+
+  * New upstream version.
+  * Massive bugfix upload on the Debian side:
+  * Fixes changelog problems between all of the binutils
+    debs (closes: Bug#47133, Bug#47208, Bug#47211)
+  * Fixes other overwrite problems (closes: Bug#46991, Bug#47024, Bug#46074)
+  * Multiarch should now make good diversions when
+    upgrading (closes: Bug#47359)
+  * Applied patch from Kevin Buhr to fix ld segfaults with
+    empty archives (closes: Bug#47019)
+  * Should have fixed info install problems by now
+    (closes: Bug#35935)
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Fri,  15 Oct 1999 03:18:55 -0400
+
+binutils (2.9.5.0.14-1) unstable; urgency=low
+
+  * New upstream version.
+  * Thanks to Matthias Klose for the following:
+  * Separate documentation to binutils-doc package.
+  * debian/rules:
+    - Remove extra /usr/share/doc/binutils/changelog.gz file.
+    - Move bfd docs to binutils-dev package.
+    - Move upstream changelogs to binutils-doc package.
+    - Remove standard GNU info files left in /usr/share/info.
+    - Call dh_installdocs for all packages.
+  * debian/*{dirs,files}: Remove. Mention explicitely in debian/rules.
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Wed,  6 Oct 1999 03:18:55 -0400
+
+binutils (2.9.5.0.12-2) unstable; urgency=low
+
+  * Applied patch from Matthias Klose to fix many issues including architecture detection.
+  * Rules file is now much prettier and easier to manage.
+  * Binutils is now built for i386 rather than i486 in the rules file (oops).
+  * Added diversion for readelf in binutils-multiarch.
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Tue, 21 Sep 1999 03:39:08 -0400
+
+binutils (2.9.5.0.12-1) unstable; urgency=low
+
+  * Massive bugfix release.
+  * New upstream source (finally) (closes: Bug#44934)
+  * Fixes upstream bugs on many platforms.
+  * Gives powerpc a working binutils again. (closes: Bug#45052)
+  * Now provides .code16 support on i386 (please test)
+  * Manpage for objdump should now be complete (closes: Bug#27039)
+  * Put together manpages for gasp and the new binary readelf (closes: Bug#21918)
+  * Fixes nm core dump problem (closes: Bug#41999)
+  * Applied patches from Ben Collins to add sparc64 support (closes: Bug#44426)
+  * Update Standards version
+  * FHS compliance
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Sat, 18 Sep 1999 01:21:05 -0400
+
+binutils (2.9.5.0.12-0.2) experimental; urgency=low
+
+  * Added Sparc/Sparc64 changes from Ben Collins (I really need a Sparc one of these days).
+  * Again, this should be the last experimental before a new release.
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Fri, 17 Aug 1999 16:32:05 -0400
+
+binutils (2.9.5.0.12-0.1) experimental; urgency=low
+
+  * New upstream version.
+  * Should be the last experimental before a new release.
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Thu, 9 Aug 1999 23:12:52 -0400
+
+binutils (2.9.5.0.10-0.1) experimental; urgency=low
+
+  * New upstream version.
+  * Didn't apply PPC patches...let me know if still needed
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Thu, 9 Aug 1999 23:12:52 -0400
+
+binutils (2.9.5.0.6-0.1) experimental; urgency=low
+
+  * New upstream version.
+  * Didn't apply PPC patches...let me know if still needed
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Thu, 9 Aug 1999 23:12:52 -0400
+
+binutils (2.9.4.0.8-0.1) unstable; urgency=low
+
+  * New upstream version.
+  * Applied as much of the PPC patches as I could.
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Thu, 15 Jul 1999 12:46:45 -0400
+
+binutils (2.9.4.0.3-0.1) unstable; urgency=low
+
+  * New upstream version.
+  * Apply patch from Richard Henderson to fix PPC's libpath.
+  * Apply patch from Franz Sirl to fix Richard Henderson.
+
+ -- Daniel Jacobowitz <dan@debian.org>  Sun, 6 Jun 1999 01:27:10 -0400
+
+binutils (2.9.4.0.2-0.1) unstable; urgency=low
+
+  * New upstream version.  2.9.4.0.1 was hurriedly recalled.
+
+ -- Daniel Jacobowitz <dan@debian.org>  Sun, 6 Jun 1999 01:27:10 -0400
+
+binutils (2.9.4.0.1-0.1) unstable; urgency=low
+
+  * New upstream version.
+
+ -- Daniel Jacobowitz <dan@debian.org>  Sun, 6 Jun 1999 01:27:10 -0400
+
+binutils (2.9.1.0.25-2) unstable; urgency=low
+
+  * Added ObjC patch AGAIN...sorry about that
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Sun, 23 May 1999 15:14:35 -0400
+
+binutils (2.9.1.0.25-1) unstable; urgency=low
+
+  * New upstream version - Fixes a PIII asm optimisation bug
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Sun, 23 May 1999 00:36:55 -0400
+
+binutils (2.9.1.0.24-2) unstable; urgency=low
+
+  * Reapplied ObjC patch...apparently it's still needed.
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Mon, 10 May 1999 19:53:15 -0400
+
+binutils (2.9.1.0.24-1) unstable; urgency=low
+
+  * New upstream release - fixes too many little things to mention.
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Tue,  3 May 1999 16:35:08 -0400
+
+binutils (2.9.1.0.23-1) unstable; urgency=low
+
+  * New upstream release - incorporates sparc64 and arm patches.
+  * Added RPATH patch from Joel Klecker since my last upload failed.
+  * Removed ObjC patch.  Let me know if it is still needed (doubtful, but
+    still might be).
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Mon,  5 Apr 1999 13:26:55 -0500
+
+binutils (2.9.1.0.22b-2) unstable; urgency=low
+
+  * Added patch from Joel Klecker to finally (properly) fix the rpath issue
+    (Thanks, Joel!).
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Fri,  2 Apr 1999 18:14:05 -0600
+
+binutils (2.9.1.0.22b-1) unstable; urgency=low
+
+  * Converted package to CVS (so bear with any delays in handling
+    bug fixes; I'm new to CVS ironically)
+  * New upstream version (sparc64 and ARM patches again added).
+  * Added support for mingw32 target in binutils-multiarch
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Fri, 12 Mar 1999 03:51:44 -0600
+
+binutils (2.9.1.0.19a-4) frozen unstable; urgency=high
+  * Added sparc64 patches from Steve Dunham to fix sparc64 targets
+  * Modified rules to add support for gcc/egcs by arch.
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Mon,  1 Feb 1999 15:51:19 -0600
+
+binutils (2.9.1.0.19a-3) frozen unstable; urgency=high
+
+  * Reverted a patch to elflink.h that caused problems for
+    Obj-C code (symbols weren't exported with a size or
+    type).
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Thu, 21 Jan 1999 19:25:17 -0600
+
+binutils (2.9.1.0.19a-2) frozen unstable; urgency=low
+
+  * Added arm-linux as multiarch target (sorry Jim).
+  * Uploaded to frozen to fix strange intermittant kernel
+    compilation problems (Fixes #31434).
+  * Fixed multiarch's postinst script to check for
+    c++filt.single before trying to remove it to prevent
+    warning messages if using g++ from egcs.
+  * Fixed typo in multiarch's postrm (addr2line) (Fixes: #31533)
+  * Added links to .so's for clean removal in the future (Fixes: #31536)
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Fri,  8 Jan 1999 15:28:32 -0600
+
+binutils (2.9.1.0.19a-1) unstable; urgency=low
+
+  * New upstream version; fixes some Alpha problems and other archs
+    should benefit also.
+  * Added ARM target patch from Corel again (still not in upstream).
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Mon,  4 Jan 1999 20:24:36 -0600
+
+binutils (2.9.1.0.16-1) unstable; urgency=low
+
+  * New upstream version; merges some ARM patches for Netwinders
+  * Added patch for ARM target from Corel (thanks Jim Pick)
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Mon, 30 Nov 1998 16:59:25 -0600
+
+binutils (2.9.1.0.15-5) frozen unstable; urgency=low
+
+  * Reuploaded to frozen (why it wasn't there earlier....)
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Mon, 30 Nov 1998 16:37:08 -0600
+
+binutils (2.9.1.0.15-4) unstable frozen; urgency=low
+
+  * Removed c++filt diversion in -multiarch to prevent conflicting
+    diversions when using egcs' g++ (which also wants to divert c++filt)
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Wed, 25 Nov 1998 18:06:17 -0600
+
+binutils (2.9.1.0.15-3) unstable frozen; urgency=low
+
+  * Made Roman's changes "official" (thanks Roman).
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Mon, 2 Nov 1998 05:46:56 -0600
+
+binutils (2.9.1.0.15-2.1) unstable; urgency=low
+
+  * Non-maintainer upload with agreement from Chris.
+  * Use a different soname for multi-arch libbfd and libopcodes; this
+    fixes the problem that the single-arch binaries (as and the diverted
+    ones) will all dump core because they're runtime-linked against the
+    multi-arch libs. (Fixes: #28656)
+  * Due to the above, binutils-multiarch also needs ldconfig in postinst
+    now.
+  * Fixup diversions once again: Do not even package the ldscripts for the
+    native architecture, so diversions for files in /usr/lib/ldscripts
+    aren't necessary.
+  * Also remove diversions on abort-install.
+  * Remove now obsolete diversions in preinst.
+  * Also symlink /usr/doc/binutils-multiarch to binutils, and do not
+    put /usr/doc/binutils in the package again.
+  * Put the symlinks libbfd.so and libopcode.so into binutils-dev, so one
+    can link to them.
+
+ -- Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>  Sat, 31 Oct 1998 11:31:14 +0100
+
+binutils (2.9.1.0.15-2) unstable; urgency=low
+
+  * Fixed binutils-multiarch diversions
+  * Reverted elf.c to .13 version to fix bug in strip
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Tue, 27 Oct 1998 05:26:28 -0600
+
+binutils (2.9.1.0.15-1) unstable; urgency=low
+
+  * New upstream version.
+  * Moved over to debhelper and updated standards version to 2.4.1.4.
+  * Adds 3DNow instruction support for AMD processors.
+  * Fixes MANY Alpha bugs and a few for Sparc, PPC, and m68k reportedly.
+  * Added binutils-multiarch package to allow for multiple-arch support
+    (fixes bug #19471).
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Thu, 14 Oct 1998 19:30:10 -0500
+
+binutils (2.9.1.0.13-1) unstable; urgency=low
+
+  * New upstream version, fixes bug #25354.
+  * Hopefully, all requested docs are included, fixes bug #21325.
+  * Fixes MANY Alpha problems.
+  * Reportedly may fix MIPS and Sparc problems also...see changelogs.
+  * Has been tested on x86's with great success.
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Mon,  5 Oct 1998 23:02:08 -0500
+
+binutils (2.9.1-0.2) frozen unstable; urgency=low
+
+  * Fixed binutils-dev dependencies.
+
+ -- Joel Klecker <jk@espy.org>  Tue, 05 May 1998 09:24:04 -0700
+
+binutils (2.9.1-0.1) frozen unstable; urgency=medium
+
+  * Non-maintainer release.
+  * New upstream release.
+  * Moved docs into subdirs where appropriate.
+  * Integrated the following changes from J.H.M. Dassen:
+    * Updated FSF address in copyright file. (lintian).
+    * Reported lack of "gasp" manpage (# ....), and link it to
+      undocumented(7). (lintian).
+    * Added a TODO list.
+
+ -- Joel Klecker <jk@espy.org>  Thu, 30 Apr 1998 10:43:42 -0700
+
+binutils (2.9-0.3) frozen unstable; urgency=medium
+
+  * Added upstream patch which fixes a problem with strip
+    and netscape (#17971).
+
+ -- Joel Klecker <jk@espy.org>  Tue, 28 Apr 1998 08:58:27 -0700
+
+binutils (2.9-0.2) frozen unstable; urgency=low
+
+  * Added more of the upstream docs (#21325).
+  * Put a changelog.gz symlink in /usr/doc/binutils
+    to satisfy policy.
+
+ -- Joel Klecker <jk@espy.org>  Tue, 21 Apr 1998 09:02:22 -0700
+
+binutils (2.9-0.1) frozen unstable; urgency=low
+
+  * Non-maintainer release.
+  * New upstream release (bugfixes only).
+
+ -- Joel Klecker <jk@espy.org>  Sun, 12 Apr 1998 04:11:07 -0700
+
+binutils (2.8.1.0.23-1) unstable; urgency=low
+
+  * New upstream version
+  * -dev replaces libc5-dev (#17840)
+  * No longer possible to link against shared libbbfd/opcodes (#18121)
+
+ -- Galen Hazelwood <galenh@micron.net>  Sat, 14 Mar 1998 18:19:10 -0700
+
+binutils (2.8.1.0.19-1) unstable; urgency=low
+
+  * New upstream version (#17296)
+  * Fixed typo in description (#16481)
+  * Fully replaces libbfd-dev (#16619)
+
+ -- Galen Hazelwood <galenh@micron.net>  Sun, 25 Jan 1998 15:37:03 -0700
+
+binutils (2.8.1.0.17-1) unstable; urgency=low
+
+  * New upstream version
+  * Rejoined libbfd and binutils packages (#15486)
+  * Added "SHELL=bash" to rules file (#14528)
+  * bfd info docs seem to be broken, don't install for now
+
+ -- Galen Hazelwood <galenh@micron.net>  Sat,  6 Dec 1997 14:55:26 -0700
+
+binutils (2.8.1.0.15-1) unstable; urgency=low
+
+  * New upstream version (#14250)
+  * Updated to Standard 2.3.0.0
+  * Restored ansidecl.h to libbfd-dev (#14116)
+
+ -- Galen Hazelwood <galenh@micron.net>  Thu, 30 Oct 1997 20:04:24 -0700
+
+binutils (2.8.1-2) unstable; urgency=low
+
+  * Added 2.8.1.0.4 patch
+
+ -- Galen Hazelwood <galenh@micron.net>  Thu, 12 Jun 1997 20:49:57 -0600
+
+binutils (2.8.1-1) unstable; urgency=low
+
+  * New upstream version
+  * Added 2.8.1.0.1 patch
+
+ -- Galen Hazelwood <galenh@micron.net>  Fri,  30 May 1997 14:48:42 -0600
+
+binutils (2.8-1) unstable; urgency=low
+
+  * New upstream version
+  * Smarter debian build environment (automatic version handling)
+  * Added 2.8.0.3 patch
+  * Built with libc6
+
+ -- Galen Hazelwood <galenh@micron.net>  Sun, 4 May 1997 11:16:12 -0600
+
+binutils (2.7.0.9-3) frozen unstable; urgency=low
+
+  * Patched for alpha support
+  * Distribute libiberty.a with -dev package (#8376)
+  * libbfd[x]-dev now has standard Provides/Conflicts behavior (#8377)
+
+ -- Galen Hazelwood <galenh@micron.net>  Fri, 28 Mar 1997 11:45:58 -0700
+
+binutils (2.7.0.9-2) unstable; urgency=low
+
+  * Moved 2.7.0.9 out of experimental (no longer unreleased beta)
+
+ -- Galen Hazelwood <galenh@micron.net>  Sun, 9 Mar 1997 23:43:19 -0700
+
+binutils (2.7.0.9-1) experimental; urgency=low
+
+  * New upstream beta version (fixes bug #7336)
+  * Split shared libraries (bfd) out of binutils (fixes bug #7244)
+  * No longer builds aout-binutils
+
+ -- Galen Hazelwood <galenh@micron.net>  Thu, 13 Feb 1997 00:27:18 -0700
+
+binutils (2.7-6) unstable; urgency=low
+
+  * Uses dpkg --print-gnu-build-architecture for build
+  * Demoted aout-binutils to priority "extra"
+
+ -- Galen Hazelwood <galenh@micron.net>  Mon, 27 Jan 1997 13:34:08 -0700
+
+binutils (2.7-5) unstable; urgency=low (HIGH for m68k)
+
+  * Added patch for m68k, will now compile X68 and kernel 2.1.15
+
+ -- Galen Hazelwood <galenh@micron.net>  Tue, 31 Dec 1996 22:15:03 -0700
+
+binutils (2.7-4) unstable; urgency=low
+
+  * New maintainer
+  * Updated to new source format
+  * Fixed typo in script.1 (Fixes bug #4558)
+  * Fixed typo in as.1 (Fixes bug #5567)
+  * Postinst now calls ldconfig without explicit pathname (Fixes bug #6151)
+
+ -- Galen Hazelwood <galenh@micron.net>  Mon, 30 Dec 1996 12:10:25 -0700
+
+binutils (2.7-3):
+
+Remove lib*.so links so the libs are not used for develpment.
+gzip manpages
+
+Changes made by Michael Meskes <meskes@debian.org> in consent with David Engel.
+
+binutils (2.7-2):
+
+Include shared libraries
+Strip shared libraries
+Also update AOUT version
+Minor changes to debian.rules
+
+binutils (2.7-1):
+
+Updated to new upstream version.
+
+Added a simple extended description (Bug#3574).
+
+Don't call ldconfig from postrm script (Bug#4246).
+    
+   LocalWords:  Aurelien Jarno
+  
diff --git a/control b/control
new file mode 100644 (file)
index 0000000..f349be0
--- /dev/null
+++ b/control
@@ -0,0 +1,1056 @@
+Source: binutils
+Section: devel
+Priority: optional
+Maintainer: Matthias Klose <doko@debian.org>
+Uploaders: James Troup <binutils@elmo.tasta.io>
+Standards-Version: 4.5.1
+Build-Depends: autoconf (>= 2.64), dpkg-dev (>= 1.19.0.5),
+  bison, flex, gettext, texinfo, dejagnu, quilt, chrpath, dwz,
+  python3:any, file, xz-utils, lsb-release, zlib1g-dev, procps,
+  g++-aarch64-linux-gnu [amd64 i386 x32] <!nocheck>,
+  g++-arm-linux-gnueabi [amd64 arm64 i386 x32] <!nocheck>,
+  g++-arm-linux-gnueabihf [amd64 arm64 i386 x32] <!nocheck>,
+  g++-powerpc64le-linux-gnu [amd64 arm64 i386 ppc64 x32] <!nocheck>,
+  g++-s390x-linux-gnu [amd64 arm64 i386 ppc64el x32] <!nocheck>,
+  g++-alpha-linux-gnu [amd64 i386 x32] <!nocheck>,
+  g++-hppa-linux-gnu [amd64 i386 x32] <!nocheck>,
+  g++-m68k-linux-gnu [amd64 i386 x32] <!nocheck>,
+  g++-powerpc-linux-gnu [amd64 i386 ppc64el x32] <!nocheck>,
+  g++-powerpc64-linux-gnu [amd64 i386 x32] <!nocheck>,
+  g++-riscv64-linux-gnu [amd64 arm64 i386 ppc64el x32] <!nocheck>,
+  g++-sh4-linux-gnu [amd64 i386 x32] <!nocheck>,
+  g++-sparc64-linux-gnu [amd64 i386 x32] <!nocheck>,
+  g++-i686-linux-gnu [amd64 arm64 ppc64el x32] <!nocheck>,
+  g++-x86-64-linux-gnu [arm64 i386 ppc64el] <!nocheck>,
+  g++-x86-64-linux-gnux32 [amd64 arm64 i386 ppc64el] <!nocheck>,
+Build-Conflicts: libelf-dev
+Homepage: https://www.gnu.org/software/binutils/
+Vcs-Browser: //salsa.debian.org/toolchain-team/binutils/tree/binutils-2.35
+Vcs-Git: https://salsa.debian.org/toolchain-team/binutils.git
+XS-Testsuite: autopkgtest
+
+Package: binutils-for-host
+Architecture: any
+Depends: ${binutils:native}:any (>= ${binutils:minver}),
+  binutils-common (= ${binary:Version}),
+Multi-Arch: same
+Description: GNU assembler, linker and binary utilities for the host architecture
+ The programs in this package are used to assemble, link and manipulate
+ binary and object files for the architecture of this package.  They may be
+ used in conjunction with a matching compiler and various libraries to build
+ programs. When using binutils through this metapackage, all tools must be
+ used with an architecture prefix.
+
+Package: binutils-for-build
+Architecture: all
+Depends: binutils (>= ${binutils:minver}),
+  binutils-common (>= ${binutils:minver})
+Multi-Arch: foreign
+Description: GNU assembler, linker and binary utilities for the build architecture
+ The programs in this package are used to assemble, link and manipulate
+ binary and object files for the native architecture.  They may be used in
+ conjunction with a build architecture compiler and various libraries to build
+ programs. When using binutils through this metapackage, tools without an
+ architecture prefix must be used.
+
+Package: binutils
+Architecture: any
+Depends: ${shlibs:Depends}, binutils-common (= ${binary:Version}),
+  libbinutils (= ${binary:Version}), ${binutils:native} (= ${binary:Version})
+Conflicts: modutils (<< 2.4.19-1), ${extraConflicts},
+  binutils-multiarch (<< 2.27-8)
+Provides: elf-binutils, ${gold:Provides}
+Suggests: binutils-doc (>= ${source:Version})
+Description: GNU assembler, linker and binary utilities
+ The programs in this package are used to assemble, link and manipulate
+ binary and object files.  They may be used in conjunction with a compiler
+ and various libraries to build programs.
+
+Package: libctf-nobfd0
+Architecture: any
+Multi-Arch: same
+Depends: ${shlibs:Depends}
+Breaks: libbinutils (<< 2.33.50.20191128-1~)
+Replaces: libbinutils (<< 2.33.50.20191128-1~)
+Description: Compact C Type Format library (runtime, no BFD dependency)
+ This package includes the libctf-nobfd shared library.  The Compact C Type
+ Format (CTF) is a way of representing information about a binary program
+
+Package: libctf-nobfd0-dbg
+Section: debug
+Architecture: any
+Multi-Arch: same
+Depends: libctf-nobfd0 (= ${binary:Version})
+Description: Compact C Type Format library (debug symbols, no BFD dependency)
+ This package includes the libctf-nobfd shared library.  The Compact C Type
+ Format (CTF) is a way of representing information about a binary program
+
+Package: libctf0
+Architecture: any
+Multi-Arch: same
+Depends: ${shlibs:Depends}, libbinutils (= ${binary:Version})
+Description: Compact C Type Format library (runtime, BFD dependency)
+ This package includes the libctf-nobfd shared library.  The Compact C Type
+ Format (CTF) is a way of representing information about a binary program
+
+Package: libctf0-dbg
+Section: debug
+Architecture: any
+Multi-Arch: same
+Depends: libctf0 (= ${binary:Version})
+Description: Compact C Type Format library (debug symbols, BFD dependency)
+ This package includes the libctf-nobfd shared library.  The Compact C Type
+ Format (CTF) is a way of representing information about a binary program
+
+Package: libbinutils
+Architecture: any
+Multi-Arch: same
+Depends: ${shlibs:Depends}, binutils-common (= ${binary:Version})
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities (private shared library)
+ This package includes the private shared libraries libbfd and libopcodes.
+
+Package: libbinutils-dbg
+Section: debug
+Architecture: any
+Multi-Arch: same
+Depends: libbinutils (= ${binary:Version})
+Description: GNU binary utilities (private shared library, debug symbols)
+ This package provides debug symbols for libbinutils.
+
+Package: binutils-dev
+Architecture: any
+Priority: optional
+Depends: binutils (= ${binary:Version}), libbinutils (= ${binary:Version}),
+  libctf0 (= ${binary:Version}), libctf-nobfd0 (= ${binary:Version})
+Conflicts: libbfd-dev
+Provides: libbfd-dev
+Replaces: libbfd-dev, libc5-dev
+Description: GNU binary utilities (BFD development files)
+ This package includes header files and static libraries necessary to build
+ programs which use the GNU BFD library, which is part of binutils.  Note
+ that building Debian packages which depend on the shared libbfd is Not
+ Allowed.
+
+Package: binutils-multiarch
+Architecture: any
+Priority: optional
+Depends: ${shlibs:Depends}, binutils (= ${binary:Version}),
+  binutils-common (= ${binary:Version})
+Description: Binary utilities that support multi-arch targets
+ The programs in this package are used to manipulate binary and object
+ files that may have been created on other architectures.  This package
+ is primarily for multi-architecture developers and cross-compilers and
+ is not needed by normal users or developers.  Note that a cross-assembling
+ version of gas is not included in this package, just the binary utilities.
+ .
+ NORMAL USERS SHOULD NOT INSTALL THIS PACKAGE.  It's meant only for those
+ requiring support for reading info from binaries from other architectures.
+
+Package: binutils-multiarch-dbg
+Section: debug
+Architecture: any
+Priority: optional
+Depends: binutils-multiarch (= ${binary:Version})
+Description: Binary utilities that support multi-arch targets (debug symbols)
+ This package provides debug symbols for binutils-multiarch.
+
+Package: binutils-multiarch-dev
+Architecture: any
+Priority: optional
+Depends: ${shlibs:Depends},
+ binutils-dev (= ${binary:Version}), binutils-multiarch (= ${binary:Version})
+Replaces: binutils-multiarch (<< 2.24-5)
+Description: GNU binary utilities that support multi-arch targets (BFD development files)
+ This package includes header files, static and shared libraries necessary
+ to build programs which use the GNU BFD library for multi-arch targets,
+ which is part of binutils. Note that building Debian packages which depend
+ on the shared libbfd is Not Allowed.
+ .
+ NORMAL USERS SHOULD NOT INSTALL THIS PACKAGE.  It's meant only for those
+ requiring support for reading info from binaries from other architectures.
+
+Package: binutils-hppa64-linux-gnu
+Architecture: amd64 i386 x32 hppa
+Depends: ${shlibs:Depends}, binutils (= ${binary:Version}),
+  binutils-common (= ${binary:Version})
+Recommends: libc6-dev
+Provides: binutils-hppa64
+Suggests: binutils-doc (>= ${source:Version})
+Breaks: binutils-hppa64 (<< 2.25.1-2)
+Replaces: binutils-hppa64 (<< 2.25.1-2)
+Description: GNU assembler, linker and binary utilities targeted for hppa64-linux
+ The programs in this package are used to assemble, link and manipulate
+ binary and object files.  They may be used in conjunction with a compiler
+ and various libraries to build programs.
+ .
+ This package is needed to build an 64-bit kernel for 64-bit hppa machines.
+
+Package: binutils-hppa64-linux-gnu-dbg
+Section: debug
+Architecture: amd64 i386 x32 hppa
+Depends: binutils-hppa64-linux-gnu (= ${binary:Version})
+Description: GNU binutils targeted for hppa64-linux (debug symbols)
+ This package provides debug symbols for binutils-hppa64-linux-gnu.
+
+Package: binutils-doc
+Section: doc
+Architecture: all
+Multi-Arch: foreign
+Priority: optional
+Suggests: binutils (= ${binary:Version})
+Description: Documentation for the GNU assembler, linker and binary utilities
+ This package consists of the documentation for the GNU assembler,
+ linker and binary utilities in info format.
+
+Package: binutils-source
+Architecture: all
+Multi-Arch: foreign
+Priority: optional
+Depends: texinfo, zlib1g-dev, make, python3
+Description: GNU assembler, linker and binary utilities (source)
+ This package contains the sources and patches which are needed to
+ build binutils.
+
+Package: binutils-common
+Architecture: any
+Multi-Arch: same
+Breaks: binutils (<< 2.29.1-3.1~)
+Replaces: binutils (<< 2.29.1-3.1~)
+Description: Common files for the GNU assembler, linker and binary utilities
+ This package contains the localization files used by binutils packages for
+ various target architectures and parts of the binutils documentation. It is
+ not useful on its own.
+
+Package: binutils-x86-64-linux-gnu
+Priority: optional
+Architecture: amd64 arm64 i386 ppc64el x32
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for x86-64-linux-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for the x86-64-linux-gnu target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for x86-64-linux-gnu and x86-64-linux-gnu is not your native platform.
+
+Package: binutils-x86-64-linux-gnu-dbg
+Section: debug
+Priority: optional
+Architecture: amd64 arm64 i386 ppc64el x32
+Multi-Arch: foreign
+Depends: binutils-x86-64-linux-gnu (= ${binary:Version})
+Description: GNU binary utilities, for x86-64-linux-gnu target (debug symbols)
+ This package provides debug symbols for binutils-x86-64-linux-gnu.
+
+Package: binutils-i686-linux-gnu
+Priority: optional
+Architecture: i386 amd64 arm64 ppc64el x32
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: binutils-i586-linux-gnu
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for i686-linux-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for the i686-linux-gnu target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for i686-linux-gnu and i686-linux-gnu is not your native platform.
+
+Package: binutils-i686-linux-gnu-dbg
+Section: debug
+Priority: optional
+Architecture: i386 amd64 arm64 ppc64el x32
+Multi-Arch: foreign
+Depends: binutils-i686-linux-gnu (= ${binary:Version})
+Description: GNU binary utilities, for i686-linux-gnu target (debug symbols)
+ This package provides debug symbols for binutils-i686-linux-gnu.
+
+Package: binutils-aarch64-linux-gnu
+Priority: optional
+Architecture: arm64 amd64 i386 x32 ppc64el
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for aarch64-linux-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for the aarch64-linux-gnu target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for aarch64-linux-gnu and aarch64-linux-gnu is not your native platform.
+
+Package: binutils-aarch64-linux-gnu-dbg
+Section: debug
+Priority: optional
+Architecture: arm64 amd64 i386 x32 ppc64el
+Multi-Arch: foreign
+Depends: binutils-aarch64-linux-gnu (= ${binary:Version})
+Description: GNU binary utilities, for aarch64-linux-gnu target (debug symbols)
+ This package provides debug symbols for binutils-aarch64-linux-gnu.
+
+Package: binutils-arm-linux-gnueabihf
+Priority: optional
+Architecture: armhf amd64 i386 x32 arm64 ppc64el
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for arm-linux-gnueabihf target
+ This package provides GNU assembler, linker and binary utilities
+ for the arm-linux-gnueabihf target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for arm-linux-gnueabihf and arm-linux-gnueabihf is not your native platform.
+
+Package: binutils-arm-linux-gnueabihf-dbg
+Section: debug
+Priority: optional
+Architecture: armhf amd64 i386 x32 arm64 ppc64el
+Multi-Arch: foreign
+Depends: binutils-arm-linux-gnueabihf (= ${binary:Version})
+Description: GNU binary utilities, for arm-linux-gnueabihf target (debug symbols)
+ This package provides debug symbols for binutils-arm-linux-gnueabihf.
+
+Package: binutils-arm-linux-gnueabi
+Priority: optional
+Architecture: armel amd64 i386 x32 arm64 ppc64el
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for arm-linux-gnueabi target
+ This package provides GNU assembler, linker and binary utilities
+ for the arm-linux-gnueabi target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for arm-linux-gnueabi and arm-linux-gnueabi is not your native platform.
+
+Package: binutils-arm-linux-gnueabi-dbg
+Section: debug
+Priority: optional
+Architecture: armel amd64 i386 x32 arm64 ppc64el
+Multi-Arch: foreign
+Depends: binutils-arm-linux-gnueabi (= ${binary:Version})
+Description: GNU binary utilities, for arm-linux-gnueabi target (debug symbols)
+ This package provides debug symbols for binutils-arm-linux-gnueabi.
+
+Package: binutils-powerpc64le-linux-gnu
+Priority: optional
+Architecture: ppc64el amd64 i386 x32 ppc64 arm64
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for powerpc64le-linux-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for the powerpc64le-linux-gnu target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for powerpc64le-linux-gnu and powerpc64le-linux-gnu is not your native platform.
+
+Package: binutils-powerpc64le-linux-gnu-dbg
+Section: debug
+Priority: optional
+Architecture: ppc64el amd64 i386 x32 ppc64 arm64
+Multi-Arch: foreign
+Depends: binutils-powerpc64le-linux-gnu (= ${binary:Version})
+Description: GNU binary utilities, for powerpc64le-linux-gnu target (debug symbols)
+ This package provides debug symbols for binutils-powerpc64le-linux-gnu.
+
+Package: binutils-s390x-linux-gnu
+Priority: optional
+Architecture: s390x amd64 i386 x32 arm64 ppc64el
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for s390x-linux-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for the s390x-linux-gnu target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for s390x-linux-gnu and s390x-linux-gnu is not your native platform.
+
+Package: binutils-s390x-linux-gnu-dbg
+Section: debug
+Priority: optional
+Architecture: s390x amd64 i386 x32 arm64 ppc64el
+Multi-Arch: foreign
+Depends: binutils-s390x-linux-gnu (= ${binary:Version})
+Description: GNU binary utilities, for s390x-linux-gnu target (debug symbols)
+ This package provides debug symbols for binutils-s390x-linux-gnu.
+
+Package: binutils-alpha-linux-gnu
+Priority: optional
+Architecture: alpha amd64 i386 x32
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for alpha-linux-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for the alpha-linux-gnu target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for alpha-linux-gnu and alpha-linux-gnu is not your native platform.
+
+Package: binutils-alpha-linux-gnu-dbg
+Section: debug
+Priority: optional
+Architecture: alpha amd64 i386 x32
+Multi-Arch: foreign
+Depends: binutils-alpha-linux-gnu (= ${binary:Version})
+Description: GNU binary utilities, for alpha-linux-gnu target (debug symbols)
+ This package provides debug symbols for binutils-alpha-linux-gnu.
+
+Package: binutils-hppa-linux-gnu
+Priority: optional
+Architecture: hppa amd64 i386 x32
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for hppa-linux-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for the hppa-linux-gnu target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for hppa-linux-gnu and hppa-linux-gnu is not your native platform.
+
+Package: binutils-hppa-linux-gnu-dbg
+Section: debug
+Priority: optional
+Architecture: hppa amd64 i386 x32
+Multi-Arch: foreign
+Depends: binutils-hppa-linux-gnu (= ${binary:Version})
+Description: GNU binary utilities, for hppa-linux-gnu target (debug symbols)
+ This package provides debug symbols for binutils-hppa-linux-gnu.
+
+Package: binutils-ia64-linux-gnu
+Priority: optional
+Architecture: ia64 amd64 i386 x32
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for ia64-linux-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for the ia64-linux-gnu target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for ia64-linux-gnu and ia64-linux-gnu is not your native platform.
+
+Package: binutils-ia64-linux-gnu-dbg
+Section: debug
+Priority: optional
+Architecture: ia64 amd64 i386 x32
+Multi-Arch: foreign
+Depends: binutils-ia64-linux-gnu (= ${binary:Version})
+Description: GNU binary utilities, for ia64-linux-gnu target (debug symbols)
+ This package provides debug symbols for binutils-ia64-linux-gnu.
+
+Package: binutils-m68k-linux-gnu
+Priority: optional
+Architecture: m68k amd64 i386 x32
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for m68k-linux-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for the m68k-linux-gnu target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for m68k-linux-gnu and m68k-linux-gnu is not your native platform.
+
+Package: binutils-m68k-linux-gnu-dbg
+Section: debug
+Priority: optional
+Architecture: m68k amd64 i386 x32
+Multi-Arch: foreign
+Depends: binutils-m68k-linux-gnu (= ${binary:Version})
+Description: GNU binary utilities, for m68k-linux-gnu target (debug symbols)
+ This package provides debug symbols for binutils-m68k-linux-gnu.
+
+Package: binutils-powerpc-linux-gnu
+Priority: optional
+Architecture: powerpc amd64 i386 x32 ppc64el
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for powerpc-linux-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for the powerpc-linux-gnu target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for powerpc-linux-gnu and powerpc-linux-gnu is not your native platform.
+
+Package: binutils-powerpc-linux-gnu-dbg
+Section: debug
+Priority: optional
+Architecture: powerpc amd64 i386 x32 ppc64el
+Multi-Arch: foreign
+Depends: binutils-powerpc-linux-gnu (= ${binary:Version})
+Description: GNU binary utilities, for powerpc-linux-gnu target (debug symbols)
+ This package provides debug symbols for binutils-powerpc-linux-gnu.
+
+Package: binutils-powerpc64-linux-gnu
+Priority: optional
+Architecture: ppc64 amd64 i386 x32 ppc64el
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for powerpc64-linux-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for the powerpc64-linux-gnu target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for powerpc64-linux-gnu and powerpc64-linux-gnu is not your native platform.
+
+Package: binutils-powerpc64-linux-gnu-dbg
+Section: debug
+Priority: optional
+Architecture: ppc64 amd64 i386 x32 ppc64el
+Multi-Arch: foreign
+Depends: binutils-powerpc64-linux-gnu (= ${binary:Version})
+Description: GNU binary utilities, for powerpc64-linux-gnu target (debug symbols)
+ This package provides debug symbols for binutils-powerpc64-linux-gnu.
+
+Package: binutils-riscv64-linux-gnu
+Priority: optional
+Architecture: riscv64 amd64 i386 x32 arm64 ppc64el
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for riscv64-linux-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for the riscv64-linux-gnu target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for riscv64-linux-gnu and riscv64-linux-gnu is not your native platform.
+
+Package: binutils-riscv64-linux-gnu-dbg
+Section: debug
+Priority: optional
+Architecture: riscv64 amd64 i386 x32 arm64 ppc64el
+Multi-Arch: foreign
+Depends: binutils-riscv64-linux-gnu (= ${binary:Version})
+Description: GNU binary utilities, for riscv64-linux-gnu target (debug symbols)
+ This package provides debug symbols for binutils-riscv64-linux-gnu.
+
+Package: binutils-sh4-linux-gnu
+Priority: optional
+Architecture: sh4 amd64 i386 x32
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for sh4-linux-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for the sh4-linux-gnu target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for sh4-linux-gnu and sh4-linux-gnu is not your native platform.
+
+Package: binutils-sh4-linux-gnu-dbg
+Section: debug
+Priority: optional
+Architecture: sh4 amd64 i386 x32
+Multi-Arch: foreign
+Depends: binutils-sh4-linux-gnu (= ${binary:Version})
+Description: GNU binary utilities, for sh4-linux-gnu target (debug symbols)
+ This package provides debug symbols for binutils-sh4-linux-gnu.
+
+Package: binutils-sparc64-linux-gnu
+Priority: optional
+Architecture: sparc64 amd64 i386 x32
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for sparc64-linux-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for the sparc64-linux-gnu target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for sparc64-linux-gnu and sparc64-linux-gnu is not your native platform.
+
+Package: binutils-sparc64-linux-gnu-dbg
+Section: debug
+Priority: optional
+Architecture: sparc64 amd64 i386 x32
+Multi-Arch: foreign
+Depends: binutils-sparc64-linux-gnu (= ${binary:Version})
+Description: GNU binary utilities, for sparc64-linux-gnu target (debug symbols)
+ This package provides debug symbols for binutils-sparc64-linux-gnu.
+
+Package: binutils-x86-64-linux-gnux32
+Priority: optional
+Architecture: x32 amd64 arm64 i386 ppc64el
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for x86-64-linux-gnux32 target
+ This package provides GNU assembler, linker and binary utilities
+ for the x86-64-linux-gnux32 target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for x86-64-linux-gnux32 and x86-64-linux-gnux32 is not your native platform.
+
+Package: binutils-x86-64-linux-gnux32-dbg
+Section: debug
+Priority: optional
+Architecture: x32 amd64 arm64 i386 ppc64el
+Multi-Arch: foreign
+Depends: binutils-x86-64-linux-gnux32 (= ${binary:Version})
+Description: GNU binary utilities, for x86-64-linux-gnux32 target (debug symbols)
+ This package provides debug symbols for binutils-x86-64-linux-gnux32.
+
+Package: binutils-i686-gnu
+Priority: optional
+Architecture: hurd-i386 amd64 i386 x32
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: binutils-i586-gnu
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for i686-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for the i686-gnu target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for i686-gnu and i686-gnu is not your native platform.
+
+Package: binutils-i686-gnu-dbg
+Section: debug
+Priority: optional
+Architecture: hurd-i386 amd64 i386 x32
+Multi-Arch: foreign
+Depends: binutils-i686-gnu (= ${binary:Version})
+Description: GNU binary utilities, for i686-gnu target (debug symbols)
+ This package provides debug symbols for binutils-i686-gnu.
+
+Package: binutils-x86-64-kfreebsd-gnu
+Priority: optional
+Architecture: kfreebsd-amd64 amd64 i386 x32
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for x86-64-kfreebsd-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for the x86-64-kfreebsd-gnu target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for x86-64-kfreebsd-gnu and x86-64-kfreebsd-gnu is not your native platform.
+
+Package: binutils-x86-64-kfreebsd-gnu-dbg
+Section: debug
+Priority: optional
+Architecture: kfreebsd-amd64 amd64 i386 x32
+Multi-Arch: foreign
+Depends: binutils-x86-64-kfreebsd-gnu (= ${binary:Version})
+Description: GNU binary utilities, for x86-64-kfreebsd-gnu target (debug symbols)
+ This package provides debug symbols for binutils-x86-64-kfreebsd-gnu.
+
+Package: binutils-i686-kfreebsd-gnu
+Priority: optional
+Architecture: kfreebsd-i386 amd64 i386 x32
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: binutils-i586-kfreebsd-gnu
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for i686-kfreebsd-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for the i686-kfreebsd-gnu target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for i686-kfreebsd-gnu and i686-kfreebsd-gnu is not your native platform.
+
+Package: binutils-i686-kfreebsd-gnu-dbg
+Section: debug
+Priority: optional
+Architecture: kfreebsd-i386 amd64 i386 x32
+Multi-Arch: foreign
+Depends: binutils-i686-kfreebsd-gnu (= ${binary:Version})
+Description: GNU binary utilities, for i686-kfreebsd-gnu target (debug symbols)
+ This package provides debug symbols for binutils-i686-kfreebsd-gnu.
+
+Package: binutils-mips-linux-gnu
+Priority: optional
+Architecture: mips
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for mips-linux-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for the mips-linux-gnu target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for mips-linux-gnu and mips-linux-gnu is not your native platform.
+
+Package: binutils-mips-linux-gnu-dbg
+Section: debug
+Priority: optional
+Architecture: mips
+Multi-Arch: foreign
+Depends: binutils-mips-linux-gnu (= ${binary:Version})
+Description: GNU binary utilities, for mips-linux-gnu target (debug symbols)
+ This package provides debug symbols for binutils-mips-linux-gnu.
+
+Package: binutils-mipsel-linux-gnu
+Priority: optional
+Architecture: mipsel
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for mipsel-linux-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for the mipsel-linux-gnu target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for mipsel-linux-gnu and mipsel-linux-gnu is not your native platform.
+
+Package: binutils-mipsel-linux-gnu-dbg
+Section: debug
+Priority: optional
+Architecture: mipsel
+Multi-Arch: foreign
+Depends: binutils-mipsel-linux-gnu (= ${binary:Version})
+Description: GNU binary utilities, for mipsel-linux-gnu target (debug symbols)
+ This package provides debug symbols for binutils-mipsel-linux-gnu.
+
+Package: binutils-mips64-linux-gnuabi64
+Priority: optional
+Architecture: mips64
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for mips64-linux-gnuabi64 target
+ This package provides GNU assembler, linker and binary utilities
+ for the mips64-linux-gnuabi64 target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for mips64-linux-gnuabi64 and mips64-linux-gnuabi64 is not your native platform.
+
+Package: binutils-mips64-linux-gnuabi64-dbg
+Section: debug
+Priority: optional
+Architecture: mips64
+Multi-Arch: foreign
+Depends: binutils-mips64-linux-gnuabi64 (= ${binary:Version})
+Description: GNU binary utilities, for mips64-linux-gnuabi64 target (debug symbols)
+ This package provides debug symbols for binutils-mips64-linux-gnuabi64.
+
+Package: binutils-mips64el-linux-gnuabi64
+Priority: optional
+Architecture: mips64el
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for mips64el-linux-gnuabi64 target
+ This package provides GNU assembler, linker and binary utilities
+ for the mips64el-linux-gnuabi64 target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for mips64el-linux-gnuabi64 and mips64el-linux-gnuabi64 is not your native platform.
+
+Package: binutils-mips64el-linux-gnuabi64-dbg
+Section: debug
+Priority: optional
+Architecture: mips64el
+Multi-Arch: foreign
+Depends: binutils-mips64el-linux-gnuabi64 (= ${binary:Version})
+Description: GNU binary utilities, for mips64el-linux-gnuabi64 target (debug symbols)
+ This package provides debug symbols for binutils-mips64el-linux-gnuabi64.
+
+Package: binutils-mips64-linux-gnuabin32
+Priority: optional
+Architecture: mipsn32
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for mips64-linux-gnuabin32 target
+ This package provides GNU assembler, linker and binary utilities
+ for the mips64-linux-gnuabin32 target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for mips64-linux-gnuabin32 and mips64-linux-gnuabin32 is not your native platform.
+
+Package: binutils-mips64-linux-gnuabin32-dbg
+Section: debug
+Priority: optional
+Architecture: mipsn32
+Multi-Arch: foreign
+Depends: binutils-mips64-linux-gnuabin32 (= ${binary:Version})
+Description: GNU binary utilities, for mips64-linux-gnuabin32 target (debug symbols)
+ This package provides debug symbols for binutils-mips64-linux-gnuabin32.
+
+Package: binutils-mips64el-linux-gnuabin32
+Priority: optional
+Architecture: mipsn32el
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for mips64el-linux-gnuabin32 target
+ This package provides GNU assembler, linker and binary utilities
+ for the mips64el-linux-gnuabin32 target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for mips64el-linux-gnuabin32 and mips64el-linux-gnuabin32 is not your native platform.
+
+Package: binutils-mips64el-linux-gnuabin32-dbg
+Section: debug
+Priority: optional
+Architecture: mipsn32el
+Multi-Arch: foreign
+Depends: binutils-mips64el-linux-gnuabin32 (= ${binary:Version})
+Description: GNU binary utilities, for mips64el-linux-gnuabin32 target (debug symbols)
+ This package provides debug symbols for binutils-mips64el-linux-gnuabin32.
+
+Package: binutils-mipsisa64r6-linux-gnuabin32
+Priority: optional
+Architecture: mipsn32r6
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for mipsisa64r6-linux-gnuabin32 target
+ This package provides GNU assembler, linker and binary utilities
+ for the mipsisa64r6-linux-gnuabin32 target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for mipsisa64r6-linux-gnuabin32 and mipsisa64r6-linux-gnuabin32 is not your native platform.
+
+Package: binutils-mipsisa64r6-linux-gnuabin32-dbg
+Section: debug
+Priority: optional
+Architecture: mipsn32r6
+Multi-Arch: foreign
+Depends: binutils-mipsisa64r6-linux-gnuabin32 (= ${binary:Version})
+Description: GNU binary utilities, for mipsisa64r6-linux-gnuabin32 target (debug symbols)
+ This package provides debug symbols for binutils-mipsisa64r6-linux-gnuabin32.
+
+Package: binutils-mipsisa64r6el-linux-gnuabin32
+Priority: optional
+Architecture: mipsn32r6el
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for mipsisa64r6el-linux-gnuabin32 target
+ This package provides GNU assembler, linker and binary utilities
+ for the mipsisa64r6el-linux-gnuabin32 target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for mipsisa64r6el-linux-gnuabin32 and mipsisa64r6el-linux-gnuabin32 is not your native platform.
+
+Package: binutils-mipsisa64r6el-linux-gnuabin32-dbg
+Section: debug
+Priority: optional
+Architecture: mipsn32r6el
+Multi-Arch: foreign
+Depends: binutils-mipsisa64r6el-linux-gnuabin32 (= ${binary:Version})
+Description: GNU binary utilities, for mipsisa64r6el-linux-gnuabin32 target (debug symbols)
+ This package provides debug symbols for binutils-mipsisa64r6el-linux-gnuabin32.
+
+Package: binutils-mipsisa32r6-linux-gnu
+Priority: optional
+Architecture: mipsr6
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for mipsisa32r6-linux-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for the mipsisa32r6-linux-gnu target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for mipsisa32r6-linux-gnu and mipsisa32r6-linux-gnu is not your native platform.
+
+Package: binutils-mipsisa32r6-linux-gnu-dbg
+Section: debug
+Priority: optional
+Architecture: mipsr6
+Multi-Arch: foreign
+Depends: binutils-mipsisa32r6-linux-gnu (= ${binary:Version})
+Description: GNU binary utilities, for mipsisa32r6-linux-gnu target (debug symbols)
+ This package provides debug symbols for binutils-mipsisa32r6-linux-gnu.
+
+Package: binutils-mipsisa32r6el-linux-gnu
+Priority: optional
+Architecture: mipsr6el
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for mipsisa32r6el-linux-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for the mipsisa32r6el-linux-gnu target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for mipsisa32r6el-linux-gnu and mipsisa32r6el-linux-gnu is not your native platform.
+
+Package: binutils-mipsisa32r6el-linux-gnu-dbg
+Section: debug
+Priority: optional
+Architecture: mipsr6el
+Multi-Arch: foreign
+Depends: binutils-mipsisa32r6el-linux-gnu (= ${binary:Version})
+Description: GNU binary utilities, for mipsisa32r6el-linux-gnu target (debug symbols)
+ This package provides debug symbols for binutils-mipsisa32r6el-linux-gnu.
+
+Package: binutils-mipsisa64r6-linux-gnuabi64
+Priority: optional
+Architecture: mips64r6
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for mipsisa64r6-linux-gnuabi64 target
+ This package provides GNU assembler, linker and binary utilities
+ for the mipsisa64r6-linux-gnuabi64 target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for mipsisa64r6-linux-gnuabi64 and mipsisa64r6-linux-gnuabi64 is not your native platform.
+
+Package: binutils-mipsisa64r6-linux-gnuabi64-dbg
+Section: debug
+Priority: optional
+Architecture: mips64r6
+Multi-Arch: foreign
+Depends: binutils-mipsisa64r6-linux-gnuabi64 (= ${binary:Version})
+Description: GNU binary utilities, for mipsisa64r6-linux-gnuabi64 target (debug symbols)
+ This package provides debug symbols for binutils-mipsisa64r6-linux-gnuabi64.
+
+Package: binutils-mipsisa64r6el-linux-gnuabi64
+Priority: optional
+Architecture: mips64r6el
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: 
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities, for mipsisa64r6el-linux-gnuabi64 target
+ This package provides GNU assembler, linker and binary utilities
+ for the mipsisa64r6el-linux-gnuabi64 target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for mipsisa64r6el-linux-gnuabi64 and mipsisa64r6el-linux-gnuabi64 is not your native platform.
+
+Package: binutils-mipsisa64r6el-linux-gnuabi64-dbg
+Section: debug
+Priority: optional
+Architecture: mips64r6el
+Multi-Arch: foreign
+Depends: binutils-mipsisa64r6el-linux-gnuabi64 (= ${binary:Version})
+Description: GNU binary utilities, for mipsisa64r6el-linux-gnuabi64 target (debug symbols)
+ This package provides debug symbols for binutils-mipsisa64r6el-linux-gnuabi64.
diff --git a/control.cross.in b/control.cross.in
new file mode 100644 (file)
index 0000000..20142c7
--- /dev/null
@@ -0,0 +1,27 @@
+
+Package: binutils-@target@
+Priority: optional
+Architecture: @host_archs@
+Multi-Arch: allowed
+Depends: binutils-common (= ${binary:Version}),
+  ${shlibs:Depends}, ${extraDepends}
+Suggests: binutils-doc (= ${source:Version})
+Provides: @binutils_alt_triplet@
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Built-Using: ${Built-Using}
+Description: GNU binary utilities, for @target@ target
+ This package provides GNU assembler, linker and binary utilities
+ for the @target@ target.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for @target@ and @target@ is not your native platform.
+
+Package: binutils-@target@-dbg
+Section: debug
+Priority: optional
+Architecture: @host_archs@
+Multi-Arch: foreign
+Depends: binutils-@target@ (= ${binary:Version})
+Description: GNU binary utilities, for @target@ target (debug symbols)
+ This package provides debug symbols for binutils-@target@.
diff --git a/control.in b/control.in
new file mode 100644 (file)
index 0000000..63cd8d5
--- /dev/null
@@ -0,0 +1,224 @@
+Source: binutils
+Section: devel
+Priority: optional
+Maintainer: Matthias Klose <doko@debian.org>
+Uploaders: James Troup <binutils@elmo.tasta.io>
+Standards-Version: 4.5.1
+Build-Depends: autoconf (>= 2.64), @dpkg_dev@
+  bison, flex, gettext, texinfo, dejagnu, quilt, chrpath, dwz,
+  python3:any, file, xz-utils, lsb-release, zlib1g-dev, procps,
+  g++-aarch64-linux-gnu [amd64 i386 x32] <!nocheck>,
+  g++-arm-linux-gnueabi [amd64 arm64 i386 x32] <!nocheck>,
+  g++-arm-linux-gnueabihf [amd64 arm64 i386 x32] <!nocheck>,
+  g++-powerpc64le-linux-gnu [amd64 arm64 i386 ppc64 x32] <!nocheck>,
+  g++-s390x-linux-gnu [amd64 arm64 i386 ppc64el x32] <!nocheck>,
+  g++-alpha-linux-gnu [amd64 i386 x32] <!nocheck>,
+  g++-hppa-linux-gnu [amd64 i386 x32] <!nocheck>,
+  g++-m68k-linux-gnu [amd64 i386 x32] <!nocheck>,
+  g++-powerpc-linux-gnu [amd64 i386 ppc64el x32] <!nocheck>,
+  g++-powerpc64-linux-gnu [amd64 i386 x32] <!nocheck>,
+  g++-riscv64-linux-gnu [amd64 arm64 i386 ppc64el x32] <!nocheck>,
+  g++-sh4-linux-gnu [amd64 i386 x32] <!nocheck>,
+  g++-sparc64-linux-gnu [amd64 i386 x32] <!nocheck>,
+  g++-i686-linux-gnu [amd64 arm64 ppc64el x32] <!nocheck>,
+  g++-x86-64-linux-gnu [arm64 i386 ppc64el] <!nocheck>,
+  g++-x86-64-linux-gnux32 [amd64 arm64 i386 ppc64el] <!nocheck>,
+Build-Conflicts: libelf-dev
+Homepage: https://www.gnu.org/software/binutils/
+Vcs-Browser: //salsa.debian.org/toolchain-team/binutils/tree/binutils-2.35
+Vcs-Git: https://salsa.debian.org/toolchain-team/binutils.git
+XS-Testsuite: autopkgtest
+
+Package: binutils-for-host
+Architecture: any
+Depends: ${binutils:native}:any (>= ${binutils:minver}),
+  binutils-common (= ${binary:Version}),
+Multi-Arch: same
+Description: GNU assembler, linker and binary utilities for the host architecture
+ The programs in this package are used to assemble, link and manipulate
+ binary and object files for the architecture of this package.  They may be
+ used in conjunction with a matching compiler and various libraries to build
+ programs. When using binutils through this metapackage, all tools must be
+ used with an architecture prefix.
+
+Package: binutils-for-build
+Architecture: all
+Depends: binutils (>= ${binutils:minver}),
+  binutils-common (>= ${binutils:minver})
+Multi-Arch: foreign
+Description: GNU assembler, linker and binary utilities for the build architecture
+ The programs in this package are used to assemble, link and manipulate
+ binary and object files for the native architecture.  They may be used in
+ conjunction with a build architecture compiler and various libraries to build
+ programs. When using binutils through this metapackage, tools without an
+ architecture prefix must be used.
+
+Package: binutils
+Architecture: any
+Depends: ${shlibs:Depends}, binutils-common (= ${binary:Version}),
+  libbinutils (= ${binary:Version}), ${binutils:native} (= ${binary:Version})
+Conflicts: modutils (<< 2.4.19-1), ${extraConflicts},
+  binutils-multiarch (<< 2.27-8)
+Provides: elf-binutils, ${gold:Provides}
+Suggests: binutils-doc (>= ${source:Version})
+Description: GNU assembler, linker and binary utilities
+ The programs in this package are used to assemble, link and manipulate
+ binary and object files.  They may be used in conjunction with a compiler
+ and various libraries to build programs.
+
+Package: libctf-nobfd0
+Architecture: any
+Multi-Arch: same
+Depends: ${shlibs:Depends}
+Breaks: libbinutils (<< 2.33.50.20191128-1~)
+Replaces: libbinutils (<< 2.33.50.20191128-1~)
+Description: Compact C Type Format library (runtime, no BFD dependency)
+ This package includes the libctf-nobfd shared library.  The Compact C Type
+ Format (CTF) is a way of representing information about a binary program
+
+Package: libctf-nobfd0-dbg
+Section: debug
+Architecture: any
+Multi-Arch: same
+Depends: libctf-nobfd0 (= ${binary:Version})
+Description: Compact C Type Format library (debug symbols, no BFD dependency)
+ This package includes the libctf-nobfd shared library.  The Compact C Type
+ Format (CTF) is a way of representing information about a binary program
+
+Package: libctf0
+Architecture: any
+Multi-Arch: same
+Depends: ${shlibs:Depends}, libbinutils (= ${binary:Version})
+Description: Compact C Type Format library (runtime, BFD dependency)
+ This package includes the libctf-nobfd shared library.  The Compact C Type
+ Format (CTF) is a way of representing information about a binary program
+
+Package: libctf0-dbg
+Section: debug
+Architecture: any
+Multi-Arch: same
+Depends: libctf0 (= ${binary:Version})
+Description: Compact C Type Format library (debug symbols, BFD dependency)
+ This package includes the libctf-nobfd shared library.  The Compact C Type
+ Format (CTF) is a way of representing information about a binary program
+
+Package: libbinutils
+Architecture: any
+Multi-Arch: same
+Depends: ${shlibs:Depends}, binutils-common (= ${binary:Version})
+Breaks: binutils (<< 2.29-6)
+Replaces: binutils (<< 2.29-6)
+Description: GNU binary utilities (private shared library)
+ This package includes the private shared libraries libbfd and libopcodes.
+
+Package: libbinutils-dbg
+Section: debug
+Architecture: any
+Multi-Arch: same
+Depends: libbinutils (= ${binary:Version})
+Description: GNU binary utilities (private shared library, debug symbols)
+ This package provides debug symbols for libbinutils.
+
+Package: binutils-dev
+Architecture: any
+Priority: optional
+Depends: binutils (= ${binary:Version}), libbinutils (= ${binary:Version}),
+  libctf0 (= ${binary:Version}), libctf-nobfd0 (= ${binary:Version})
+Conflicts: libbfd-dev
+Provides: libbfd-dev
+Replaces: libbfd-dev, libc5-dev
+Description: GNU binary utilities (BFD development files)
+ This package includes header files and static libraries necessary to build
+ programs which use the GNU BFD library, which is part of binutils.  Note
+ that building Debian packages which depend on the shared libbfd is Not
+ Allowed.
+
+Package: binutils-multiarch
+Architecture: any
+Priority: optional
+Depends: ${shlibs:Depends}, binutils (= ${binary:Version}),
+  binutils-common (= ${binary:Version})
+Description: Binary utilities that support multi-arch targets
+ The programs in this package are used to manipulate binary and object
+ files that may have been created on other architectures.  This package
+ is primarily for multi-architecture developers and cross-compilers and
+ is not needed by normal users or developers.  Note that a cross-assembling
+ version of gas is not included in this package, just the binary utilities.
+ .
+ NORMAL USERS SHOULD NOT INSTALL THIS PACKAGE.  It's meant only for those
+ requiring support for reading info from binaries from other architectures.
+
+Package: binutils-multiarch-dbg
+Section: debug
+Architecture: any
+Priority: optional
+Depends: binutils-multiarch (= ${binary:Version})
+Description: Binary utilities that support multi-arch targets (debug symbols)
+ This package provides debug symbols for binutils-multiarch.
+
+Package: binutils-multiarch-dev
+Architecture: any
+Priority: optional
+Depends: ${shlibs:Depends},
+ binutils-dev (= ${binary:Version}), binutils-multiarch (= ${binary:Version})
+Replaces: binutils-multiarch (<< 2.24-5)
+Description: GNU binary utilities that support multi-arch targets (BFD development files)
+ This package includes header files, static and shared libraries necessary
+ to build programs which use the GNU BFD library for multi-arch targets,
+ which is part of binutils. Note that building Debian packages which depend
+ on the shared libbfd is Not Allowed.
+ .
+ NORMAL USERS SHOULD NOT INSTALL THIS PACKAGE.  It's meant only for those
+ requiring support for reading info from binaries from other architectures.
+
+Package: binutils-hppa64-linux-gnu
+Architecture: amd64 i386 x32 hppa
+Depends: ${shlibs:Depends}, binutils (= ${binary:Version}),
+  binutils-common (= ${binary:Version})
+Recommends: libc6-dev
+Provides: binutils-hppa64
+Suggests: binutils-doc (>= ${source:Version})
+Breaks: binutils-hppa64 (<< 2.25.1-2)
+Replaces: binutils-hppa64 (<< 2.25.1-2)
+Description: GNU assembler, linker and binary utilities targeted for hppa64-linux
+ The programs in this package are used to assemble, link and manipulate
+ binary and object files.  They may be used in conjunction with a compiler
+ and various libraries to build programs.
+ .
+ This package is needed to build an 64-bit kernel for 64-bit hppa machines.
+
+Package: binutils-hppa64-linux-gnu-dbg
+Section: debug
+Architecture: amd64 i386 x32 hppa
+Depends: binutils-hppa64-linux-gnu (= ${binary:Version})
+Description: GNU binutils targeted for hppa64-linux (debug symbols)
+ This package provides debug symbols for binutils-hppa64-linux-gnu.
+
+Package: binutils-doc
+Section: doc
+Architecture: all
+Multi-Arch: foreign
+Priority: optional
+Suggests: binutils (= ${binary:Version})
+Description: Documentation for the GNU assembler, linker and binary utilities
+ This package consists of the documentation for the GNU assembler,
+ linker and binary utilities in info format.
+
+Package: binutils-source
+Architecture: all
+Multi-Arch: foreign
+Priority: optional
+Depends: texinfo, zlib1g-dev, make, python3
+Description: GNU assembler, linker and binary utilities (source)
+ This package contains the sources and patches which are needed to
+ build binutils.
+
+Package: binutils-common
+Architecture: any
+Multi-Arch: same
+Breaks: binutils (<< 2.29.1-3.1~)
+Replaces: binutils (<< 2.29.1-3.1~)
+Description: Common files for the GNU assembler, linker and binary utilities
+ This package contains the localization files used by binutils packages for
+ various target architectures and parts of the binutils documentation. It is
+ not useful on its own.
diff --git a/copyright b/copyright
new file mode 100644 (file)
index 0000000..6bb0089
--- /dev/null
+++ b/copyright
@@ -0,0 +1,45 @@
+This is the Debian GNU/Linux prepackaged version of the GNU assembler,
+linker, and binary utilities.
+
+This package was put together by me, James Troup <james@nocrew.org>,
+from sources, which I obtained from:
+
+  ftp://ftp.gnu.org/pub/gnu/binutils/
+
+and:
+
+  cvs://:pserver:anoncvs@sources.redhat.com:/cvs/src
+
+It was previously maintained by Christopher C. Chimelis <chris@debian.org>
+
+GNU Binutils is Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+2011, 2012, 2013, 2014, 2015, 2015, 2016, 2017, 2018, 2019 Free Software
+Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL'
+and `/usr/share/common-licenses/LGPL'.
+
+The binutils manuals and associated documentation are also Copyright
+(C) Free Software Foundation, Inc.  They are distributed under the GNU
+Free Documentation License Version 1.3 or any later version published
+by the Free Software Foundation, with no Invariant Sections, with no
+with no Front-Cover Texts, and with no Back-Cover Texts.
+On Debian GNU/Linux systems, the complete text of the GFDL can be found
+in `/usr/share/common-licenses/GFDL'.
diff --git a/dwp.1 b/dwp.1
new file mode 100644 (file)
index 0000000..2959533
--- /dev/null
+++ b/dwp.1
@@ -0,0 +1,33 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.47.16.
+.TH DWP "1" "December 2020" "GNU dwp (GNU Binutils for Debian) 2.35.1" "User Commands"
+.SH NAME
+dwp \- The DWARF packaging utility
+.SH SYNOPSIS
+.B dwp
+[\fI\,options\/\fR] [\fI\,file\/\fR...]
+.SH DESCRIPTION
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+Print this help message
+.TP
+\fB\-e\fR EXE, \fB\-\-exec\fR EXE
+Get list of dwo files from EXE (defaults output to EXE.dwp)
+.TP
+\fB\-o\fR FILE, \fB\-\-output\fR FILE
+Set output dwp file name
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+Verbose output
+.TP
+\fB\-\-verify\-only\fR
+Verify output file against exec file
+.TP
+\fB\-V\fR, \fB\-\-version\fR
+Print version number
+.SH "REPORTING BUGS"
+Report bugs to <http://www.sourceware.org/bugzilla/>
+.SH COPYRIGHT
+Copyright \(co 2020 Free Software Foundation, Inc.
+This program is free software; you may redistribute it under the terms of
+the GNU General Public License version 3 or (at your option) any later version.
+This program has absolutely no warranty.
diff --git a/gfdl.texi b/gfdl.texi
new file mode 100644 (file)
index 0000000..695e4ae
--- /dev/null
+++ b/gfdl.texi
@@ -0,0 +1,41 @@
+\input texinfo  @c -*-texinfo-*-
+@c %**start of header
+
+@settitle BFD/ld internal documentation
+
+@c Create a separate index for command line options.
+@defcodeindex op
+@c Merge the standard indexes into a single one.
+@syncodeindex fn cp
+@syncodeindex vr cp
+@syncodeindex ky cp
+@syncodeindex pg cp
+@syncodeindex tp cp
+
+@paragraphindent 1
+
+@c %**end of header
+
+@copying
+The current documentation is licensed under the same terms as the Debian packaging.
+@end copying
+@ifnottex
+@dircategory Programming
+@direntry
+* @name@: (@name@).                  BFD/ld internal documentation (@name@).
+@end direntry
+@sp 1
+@end ifnottex
+
+@summarycontents
+@contents
+@page
+
+@node Top
+@top Introduction
+@cindex introduction
+The official BFD, BFD internals and ld internals documentation is released
+under the terms of the GNU Free Documentation License with cover texts.
+This has been considered non free by the Debian Project. Thus you will find
+it in the non-free section of the Debian archive.
+@bye
diff --git a/ld.gold.1 b/ld.gold.1
new file mode 100644 (file)
index 0000000..41416b5
--- /dev/null
+++ b/ld.gold.1
@@ -0,0 +1,884 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.47.16.
+.TH GOLD "1" "December 2020" "GNU gold (GNU Binutils for Debian 2.35.1) 1.16" "User Commands"
+.SH NAME
+gold \- The GNU ELF linker
+.SH SYNOPSIS
+.B ld.gold
+[\fI\,options\/\fR] \fI\,file\/\fR...
+.SH OPTIONS
+.TP
+\fB\-\-help\fR
+Report usage information
+.TP
+\fB\-v\fR, \fB\-\-version\fR
+Report version information
+.TP
+\fB\-V\fR
+Report version and target information
+.TP
+\fB\-\-add\-needed\fR
+Not supported
+.TP
+\fB\-\-no\-add\-needed\fR
+Do not copy DT_NEEDED tags from shared libraries (default)
+.HP
+\fB\-\-allow\-multiple\-definition\fR Allow multiple definitions of symbols
+.TP
+\fB\-\-no\-allow\-multiple\-definition\fR
+Do not allow multiple definitions (default)
+.TP
+\fB\-\-allow\-shlib\-undefined\fR
+Allow unresolved references in shared libraries
+.TP
+\fB\-\-no\-allow\-shlib\-undefined\fR
+Do not allow unresolved references in shared libraries (default)
+.TP
+\fB\-\-apply\-dynamic\-relocs\fR
+Apply link\-time values for dynamic relocations (default)
+.TP
+\fB\-\-no\-apply\-dynamic\-relocs\fR
+(aarch64 only) Do not apply link\-time values for dynamic relocations
+.TP
+\fB\-\-as\-needed\fR
+Use DT_NEEDED only for shared libraries that are used
+.TP
+\fB\-\-no\-as\-needed\fR
+Use DT_NEEDED for all shared libraries (default)
+.TP
+\fB\-assert\fR [ignored]
+Ignored
+.TP
+\fB\-b\fR [elf,binary], \fB\-\-format\fR [elf,binary]
+Set input format
+.TP
+\fB\-\-be8\fR
+Output BE8 format image
+.TP
+\fB\-\-build\-id\fR [=STYLE]
+Generate build ID note
+.TP
+\fB\-\-build\-id\-chunk\-size\-for\-treehash\fR SIZE
+Chunk size for '\-\-build\-id=tree'
+.TP
+\fB\-\-build\-id\-min\-file\-size\-for\-treehash\fR SIZE
+Minimum output file size for '\-\-build\-id=tree' to work differently than '\-\-build\-id=sha1'
+.HP
+\fB\-Bdynamic\fR                   \fB\-l\fR searches for shared libraries (default)
+.HP
+\fB\-Bstatic\fR                    \fB\-l\fR does not search for shared libraries
+.TP
+\fB\-dy\fR
+alias for \fB\-Bdynamic\fR (default)
+.TP
+\fB\-dn\fR
+alias for \fB\-Bstatic\fR
+.TP
+\fB\-Bgroup\fR
+Use group name lookup rules for shared library
+.TP
+\fB\-Bshareable\fR
+Generate shared library (alias for \fB\-G\fR/\-shared)
+.TP
+\fB\-Bsymbolic\fR
+Bind defined symbols locally
+.TP
+\fB\-Bsymbolic\-functions\fR
+Bind defined function symbols locally
+.TP
+\fB\-\-check\-sections\fR
+Check segment addresses for overlaps (default)
+.TP
+\fB\-\-no\-check\-sections\fR
+Do not check segment addresses for overlaps
+.TP
+\fB\-\-compress\-debug\-sections\fR [none,zlib,zlib\-gnu,zlib\-gabi]
+Compress .debug_* sections in the output file
+.TP
+\fB\-\-copy\-dt\-needed\-entries\fR
+Not supported
+.HP
+\fB\-\-no\-copy\-dt\-needed\-entries\fR Do not copy DT_NEEDED tags from shared libraries (default)
+.TP
+\fB\-\-cref\fR
+Output cross reference table
+.TP
+\fB\-\-no\-cref\fR
+Do not output cross reference table (default)
+.TP
+\fB\-\-ctors\-in\-init\-array\fR
+Use DT_INIT_ARRAY for all constructors (default)
+.TP
+\fB\-\-no\-ctors\-in\-init\-array\fR
+Handle constructors as directed by compiler
+.TP
+\fB\-d\fR, \fB\-\-define\-common\fR
+Define common symbols
+.TP
+\fB\-\-no\-define\-common\fR
+Do not define common symbols in relocatable output (default)
+.TP
+\fB\-dc\fR
+Alias for \fB\-d\fR
+.TP
+\fB\-dp\fR
+Alias for \fB\-d\fR
+.TP
+\fB\-\-debug\fR [all,files,script,task][,...]
+Turn on debugging
+.TP
+\fB\-\-defsym\fR SYMBOL=EXPRESSION
+Define a symbol
+.TP
+\fB\-\-demangle\fR [=STYLE]
+Demangle C++ symbols in log messages
+.TP
+\fB\-\-no\-demangle\fR
+Do not demangle C++ symbols in log messages
+.TP
+\fB\-\-dependency\-file\fR FILE
+Write a dependency file listing all files read
+.TP
+\fB\-\-detect\-odr\-violations\fR
+Look for violations of the C++ One Definition Rule
+.TP
+\fB\-\-no\-detect\-odr\-violations\fR
+Do not look for violations of the C++ One Definition Rule (default)
+.TP
+\fB\-\-dynamic\-list\-data\fR
+Add data symbols to dynamic symbols
+.TP
+\fB\-\-dynamic\-list\-cpp\-new\fR
+Add C++ operator new/delete to dynamic symbols
+.HP
+\fB\-\-dynamic\-list\-cpp\-typeinfo\fR Add C++ typeinfo to dynamic symbols
+.TP
+\fB\-\-dynamic\-list\fR FILE
+Read a list of dynamic symbols
+.TP
+\fB\-\-emit\-stub\-syms\fR
+(PowerPC only) Label linker stubs with a symbol (default)
+.TP
+\fB\-\-no\-emit\-stub\-syms\fR
+(PowerPC only) Do not label linker stubs with a symbol
+.HP
+\fB\-e\fR ADDRESS, \fB\-\-entry\fR ADDRESS Set program start address
+.TP
+\fB\-\-eh\-frame\-hdr\fR
+Create exception frame header
+.TP
+\fB\-\-no\-eh\-frame\-hdr\fR
+Do not create exception frame header (default)
+.TP
+\fB\-\-enable\-new\-dtags\fR
+Enable use of DT_RUNPATH (default)
+.TP
+\fB\-\-disable\-new\-dtags\fR
+Disable use of DT_RUNPATH
+.TP
+\fB\-\-no\-enum\-size\-warning\fR
+(ARM only) Do not warn about objects with incompatible enum sizes
+.TP
+\fB\-\-exclude\-libs\fR lib,lib ...
+Exclude libraries from automatic export
+.TP
+\fB\-E\fR, \fB\-\-export\-dynamic\fR
+Export all dynamic symbols
+.TP
+\fB\-\-no\-export\-dynamic\fR
+Do not export all dynamic symbols (default)
+.TP
+\fB\-\-export\-dynamic\-symbol\fR SYMBOL
+Export SYMBOL to dynamic symbol table
+.TP
+\fB\-EB\fR
+Link big\-endian objects.
+.TP
+\fB\-EL\fR
+Link little\-endian objects.
+.HP
+\fB\-f\fR SHLIB, \fB\-\-auxiliary\fR SHLIB Auxiliary filter for shared object symbol table
+.TP
+\fB\-F\fR SHLIB, \fB\-\-filter\fR SHLIB
+Filter for shared object symbol table
+.TP
+\fB\-\-fatal\-warnings\fR
+Treat warnings as errors
+.TP
+\fB\-\-no\-fatal\-warnings\fR
+Do not treat warnings as errors (default)
+.TP
+\fB\-fini\fR SYMBOL
+Call SYMBOL at unload\-time
+.TP
+\fB\-\-fix\-arm1176\fR
+(ARM only) Fix binaries for ARM1176 erratum (default)
+.TP
+\fB\-\-no\-fix\-arm1176\fR
+(ARM only) Do not fix binaries for ARM1176 erratum
+.TP
+\fB\-\-fix\-cortex\-a8\fR
+(ARM only) Fix binaries for Cortex\-A8 erratum
+.TP
+\fB\-\-no\-fix\-cortex\-a8\fR
+(ARM only) Do not fix binaries for Cortex\-A8 erratum (default)
+.TP
+\fB\-\-fix\-cortex\-a53\-843419\fR
+(AArch64 only) Fix Cortex\-A53 erratum 843419
+.TP
+\fB\-\-no\-fix\-cortex\-a53\-843419\fR
+(AArch64 only) Do not fix Cortex\-A53 erratum 843419 (default)
+.TP
+\fB\-\-fix\-cortex\-a53\-835769\fR
+(AArch64 only) Fix Cortex\-A53 erratum 835769
+.TP
+\fB\-\-no\-fix\-cortex\-a53\-835769\fR
+(AArch64 only) Do not fix Cortex\-A53 erratum 835769 (default)
+.TP
+\fB\-\-fix\-v4bx\fR
+(ARM only) Rewrite BX rn as MOV pc, rn for ARMv4
+.TP
+\fB\-\-fix\-v4bx\-interworking\fR
+(ARM only) Rewrite BX rn branch to ARMv4 interworking veneer
+.TP
+\fB\-fuse\-ld\fR [gold,bfd]
+Ignored for GCC linker option compatibility
+.TP
+\fB\-g\fR
+Ignored
+.TP
+\fB\-\-gc\-sections\fR
+Remove unused sections
+.TP
+\fB\-\-no\-gc\-sections\fR
+Don't remove unused sections (default)
+.TP
+\fB\-\-gdb\-index\fR
+Generate .gdb_index section
+.TP
+\fB\-\-no\-gdb\-index\fR
+Do not generate .gdb_index section (default)
+.TP
+\fB\-\-gnu\-unique\fR
+Enable STB_GNU_UNIQUE symbol binding (default)
+.TP
+\fB\-\-no\-gnu\-unique\fR
+Disable STB_GNU_UNIQUE symbol binding
+.TP
+\fB\-G\fR, \fB\-shared\fR
+Generate shared library
+.TP
+\fB\-h\fR FILENAME, \fB\-soname\fR FILENAME
+Set shared library name
+.TP
+\fB\-\-hash\-bucket\-empty\-fraction\fR FRACTION
+Min fraction of empty buckets in dynamic hash
+.TP
+\fB\-\-hash\-style\fR [sysv,gnu,both]
+Dynamic hash style
+.TP
+\fB\-i\fR
+Alias for \fB\-r\fR
+.TP
+\fB\-\-icf\fR [none,all,safe]
+Identical Code Folding. '\-\-icf=safe' Folds ctors, dtors and functions whose pointers are definitely not taken
+.TP
+\fB\-\-icf\-iterations\fR COUNT
+Number of iterations of ICF (default 3)
+.TP
+\fB\-\-incremental\fR
+Do an incremental link if possible; otherwise, do a full link and prepare output for incremental linking
+.TP
+\fB\-\-no\-incremental\fR
+Do a full link (default)
+.TP
+\fB\-\-incremental\-full\fR
+Do a full link and prepare output for incremental linking
+.TP
+\fB\-\-incremental\-update\fR
+Do an incremental link; exit if not possible
+.TP
+\fB\-\-incremental\-base\fR FILE
+Set base file for incremental linking (default is output file)
+.TP
+\fB\-\-incremental\-changed\fR
+Assume files changed
+.TP
+\fB\-\-incremental\-unchanged\fR
+Assume files didn't change
+.TP
+\fB\-\-incremental\-unknown\fR
+Use timestamps to check files (default)
+.TP
+\fB\-\-incremental\-startup\-unchanged\fR
+Assume startup files unchanged (files preceding this option)
+.HP
+\fB\-\-incremental\-patch\fR PERCENT Amount of extra space to allocate for patches (default 10)
+.TP
+\fB\-init\fR SYMBOL
+Call SYMBOL at load\-time
+.TP
+\fB\-I\fR PROGRAM, \fB\-\-dynamic\-linker\fR PROGRAM
+Set dynamic linker path
+.TP
+\fB\-\-just\-symbols\fR FILE
+Read only symbol values from FILE
+.TP
+\fB\-\-keep\-files\-mapped\fR
+Keep files mapped across passes (default)
+.TP
+\fB\-\-no\-keep\-files\-mapped\fR
+Release mapped files after each pass
+.TP
+\fB\-\-keep\-unique\fR SYMBOL
+Do not fold this symbol during ICF
+.TP
+\fB\-l\fR LIBNAME, \fB\-\-library\fR LIBNAME
+Search for library LIBNAME
+.TP
+\fB\-\-ld\-generated\-unwind\-info\fR
+Generate unwind information for PLT (default)
+.TP
+\fB\-\-no\-ld\-generated\-unwind\-info\fR
+Do not generate unwind information for PLT
+.TP
+\fB\-L\fR DIR, \fB\-\-library\-path\fR DIR
+Add directory to search path
+.TP
+\fB\-\-long\-plt\fR
+(ARM only) Generate long PLT entries
+.TP
+\fB\-\-no\-long\-plt\fR
+(ARM only) Do not generate long PLT entries (default)
+.TP
+\fB\-m\fR EMULATION
+Set GNU linker emulation; obsolete
+.TP
+\fB\-\-map\-whole\-files\fR
+Map whole files to memory (default)
+.TP
+\fB\-\-no\-map\-whole\-files\fR
+Map relevant file parts to memory
+.TP
+\fB\-\-merge\-exidx\-entries\fR
+(ARM only) Merge exidx entries in debuginfo (default)
+.TP
+\fB\-\-no\-merge\-exidx\-entries\fR
+(ARM only) Do not merge exidx entries in debuginfo
+.TP
+\fB\-\-mmap\-output\-file\fR
+Map the output file for writing (default)
+.TP
+\fB\-\-no\-mmap\-output\-file\fR
+Do not map the output file for writing
+.TP
+\fB\-M\fR, \fB\-\-print\-map\fR
+Write map file on standard output
+.TP
+\fB\-Map\fR MAPFILENAME
+Write map file
+.TP
+\fB\-n\fR, \fB\-\-nmagic\fR
+Do not page align data
+.TP
+\fB\-N\fR, \fB\-\-omagic\fR
+Do not page align data, do not make text readonly
+.TP
+\fB\-\-no\-omagic\fR
+Page align data, make text readonly (default)
+.TP
+\fB\-\-no\-keep\-memory\fR
+Use less memory and more disk I/O (included only for compatibility with GNU ld)
+.TP
+\fB\-\-no\-undefined\fR
+Report undefined symbols (even with \fB\-\-shared\fR)
+.TP
+\fB\-\-noinhibit\-exec\fR
+Create an output file even if errors occur
+.TP
+\fB\-nostdlib\fR
+Only search directories specified on the command line
+.TP
+\fB\-o\fR FILE, \fB\-\-output\fR FILE
+Set output file name
+.TP
+\fB\-\-oformat\fR [binary]
+Set output format
+.TP
+\fB\-O\fR LEVEL, \fB\-optimize\fR LEVEL
+Optimize output file size
+.TP
+\fB\-\-orphan\-handling\fR [place,discard,warn,error]
+Orphan section handling
+.TP
+\fB\-p\fR
+Ignored for ARM compatibility
+.TP
+\fB\-pie\fR
+Create a position independent executable
+.TP
+\fB\-no\-pie\fR
+Do not create a position independent executable (default)
+.TP
+\fB\-\-pic\-executable\fR
+Create a position independent executable
+.TP
+\fB\-\-no\-pic\-executable\fR
+Do not create a position independent executable (default)
+.TP
+\fB\-\-pic\-veneer\fR
+Force PIC sequences for ARM/Thumb interworking veneers
+.TP
+\fB\-no\-pipeline\-knowledge\fR
+(ARM only) Ignore for backward compatibility (default)
+.TP
+\fB\-\-plt\-align\fR [=P2ALIGN]
+(PowerPC only) Align PLT call stubs to fit cache lines
+.TP
+\fB\-\-plt\-localentry\fR
+(PowerPC64 only) Optimize calls to ELFv2 localentry:0 functions
+.TP
+\fB\-\-no\-plt\-localentry\fR
+(PowerPC64 only) Don't optimize ELFv2 calls (default)
+.TP
+\fB\-\-plt\-static\-chain\fR
+(PowerPC64 only) PLT call stubs should load r11
+.TP
+\fB\-\-no\-plt\-static\-chain\fR
+(PowerPC64 only) PLT call stubs should not load r11 (default)
+.TP
+\fB\-\-plt\-thread\-safe\fR
+(PowerPC64 only) PLT call stubs with load\-load barrier
+.TP
+\fB\-\-no\-plt\-thread\-safe\fR
+(PowerPC64 only) PLT call stubs without barrier (default)
+.TP
+\fB\-\-plugin\fR PLUGIN
+Load a plugin library
+.TP
+\fB\-\-plugin\-opt\fR OPTION
+Pass an option to the plugin
+.TP
+\fB\-\-posix\-fallocate\fR
+Use posix_fallocate to reserve space in the output file (default)
+.TP
+\fB\-\-no\-posix\-fallocate\fR
+Use fallocate or ftruncate to reserve space
+.TP
+\fB\-\-power10\-stubs\fR [=auto,no,yes]
+(PowerPC64 only) stubs use power10 insns
+.TP
+\fB\-\-no\-power10\-stubs\fR
+(PowerPC64 only) stubs do not use power10 insns
+.TP
+\fB\-\-preread\-archive\-symbols\fR
+Preread archive symbols when multi\-threaded
+.TP
+\fB\-\-print\-gc\-sections\fR
+List removed unused sections on stderr
+.TP
+\fB\-\-no\-print\-gc\-sections\fR
+Do not list removed unused sections (default)
+.TP
+\fB\-\-print\-icf\-sections\fR
+List folded identical sections on stderr
+.TP
+\fB\-\-no\-print\-icf\-sections\fR
+Do not list folded identical sections (default)
+.TP
+\fB\-\-print\-output\-format\fR
+Print default output format
+.TP
+\fB\-\-print\-symbol\-counts\fR FILENAME
+Print symbols defined and used for each input
+.TP
+\fB\-\-push\-state\fR
+Save the state of flags related to input files
+.TP
+\fB\-\-pop\-state\fR
+Restore the state of flags related to input files
+.TP
+\fB\-q\fR, \fB\-\-emit\-relocs\fR
+Generate relocations in output
+.TP
+\fB\-Qy\fR
+Ignored for SVR4 compatibility
+.TP
+\fB\-r\fR, \fB\-relocatable\fR
+Generate relocatable output
+.TP
+\fB\-\-relax\fR
+Relax branches on certain targets
+.TP
+\fB\-\-no\-relax\fR
+Do not relax branches (default)
+.TP
+\fB\-\-retain\-symbols\-file\fR FILE
+keep only symbols listed in this file
+.TP
+\fB\-\-rosegment\fR
+Put read\-only non\-executable sections in their own segment
+.TP
+\fB\-\-no\-rosegment\fR
+Do not put read\-only non\-executable sections in their own segment (default)
+.TP
+\fB\-\-rosegment\-gap\fR OFFSET
+Set offset between executable and read\-only segments
+.TP
+\fB\-R\fR DIR
+Add DIR to runtime search path
+.TP
+\fB\-rpath\fR DIR
+Add DIR to runtime search path
+.TP
+\fB\-\-rpath\-link\fR DIR
+Add DIR to link time shared library search path
+.TP
+\fB\-s\fR, \fB\-\-strip\-all\fR
+Strip all symbols
+.TP
+\fB\-S\fR, \fB\-\-strip\-debug\fR
+Strip debugging information
+.TP
+\fB\-\-strip\-debug\-non\-line\fR
+Emit only debug line number information
+.TP
+\fB\-\-strip\-debug\-gdb\fR
+Strip debug symbols that are unused by gdb (at least versions <= 7.4)
+.TP
+\fB\-\-strip\-lto\-sections\fR
+Strip LTO intermediate code sections (default)
+.TP
+\fB\-\-section\-ordering\-file\fR FILENAME
+Layout sections in the order specified
+.TP
+\fB\-\-section\-start\fR SECTION=ADDRESS
+Set address of section
+.TP
+\fB\-\-secure\-plt\fR
+(PowerPC only) Use new\-style PLT (default)
+.TP
+\fB\-\-sort\-common\fR [={ascending,descending}]
+Sort common symbols by alignment
+.TP
+\fB\-\-sort\-section\fR [none,name]
+Sort sections by name.  '\-\-no\-text\-reorder' will override '\-\-sort\-section=name' for .text
+.TP
+\fB\-\-spare\-dynamic\-tags\fR COUNT
+Dynamic tag slots to reserve (default 5)
+.TP
+\fB\-\-stub\-group\-size\fR SIZE
+(ARM, PowerPC only) The maximum distance from instructions in a group of sections to their stubs. Negative values mean stubs are always after the group. 1 means use default size
+.TP
+\fB\-\-stub\-group\-multi\fR
+(PowerPC only) Allow a group of stubs to serve multiple output sections (default)
+.TP
+\fB\-\-no\-stub\-group\-multi\fR
+(PowerPC only) Each output section has its own stubs
+.TP
+\fB\-\-split\-stack\-adjust\-size\fR SIZE
+Stack size when \fB\-fsplit\-stack\fR function calls non\-split
+.TP
+\fB\-static\fR
+Do not link against shared libraries
+.TP
+\fB\-\-start\-lib\fR
+Start a library
+.TP
+\fB\-\-end\-lib\fR
+End a library
+.TP
+\fB\-\-stats\fR
+Print resource usage statistics
+.TP
+\fB\-\-sysroot\fR DIR
+Set target system root directory
+.TP
+\fB\-t\fR, \fB\-\-trace\fR
+Print the name of each input file
+.TP
+\fB\-\-target1\-abs\fR
+(ARM only) Force R_ARM_TARGET1 type to R_ARM_ABS32
+.TP
+\fB\-\-target1\-rel\fR
+(ARM only) Force R_ARM_TARGET1 type to R_ARM_REL32
+.TP
+\fB\-\-target2\fR [rel, abs, got\-rel
+(ARM only) Set R_ARM_TARGET2 relocation type
+.TP
+\fB\-\-text\-reorder\fR
+Enable text section reordering for GCC section names (default)
+.TP
+\fB\-\-no\-text\-reorder\fR
+Disable text section reordering for GCC section names
+.TP
+\fB\-\-threads\fR
+Run the linker multi\-threaded
+.TP
+\fB\-\-no\-threads\fR
+Do not run the linker multi\-threaded (default)
+.TP
+\fB\-\-thread\-count\fR COUNT
+Number of threads to use
+.TP
+\fB\-\-thread\-count\-initial\fR COUNT
+Number of threads to use in initial pass
+.HP
+\fB\-\-thread\-count\-middle\fR COUNT Number of threads to use in middle pass
+.TP
+\fB\-\-thread\-count\-final\fR COUNT
+Number of threads to use in final pass
+.TP
+\fB\-\-tls\-optimize\fR
+(PowerPC/64 only) Optimize GD/LD/IE code to IE/LE (default)
+.TP
+\fB\-\-no\-tls\-optimize\fR
+(PowerPC/64 only) Don'''t try to optimize TLS accesses
+.TP
+\fB\-\-tls\-get\-addr\-optimize\fR
+(PowerPC/64 only) Use a special __tls_get_addr call (default)
+.TP
+\fB\-\-no\-tls\-get\-addr\-optimize\fR
+(PowerPC/64 only) Don't use a special __tls_get_addr call
+.TP
+\fB\-\-toc\-optimize\fR
+(PowerPC64 only) Optimize TOC code sequences (default)
+.TP
+\fB\-\-no\-toc\-optimize\fR
+(PowerPC64 only) Don't optimize TOC code sequences
+.TP
+\fB\-\-toc\-sort\fR
+(PowerPC64 only) Sort TOC and GOT sections (default)
+.TP
+\fB\-\-no\-toc\-sort\fR
+(PowerPC64 only) Don't sort TOC and GOT sections
+.TP
+\fB\-T\fR FILE, \fB\-\-script\fR FILE
+Read linker script
+.TP
+\fB\-Tbss\fR ADDRESS
+Set the address of the bss segment
+.TP
+\fB\-Tdata\fR ADDRESS
+Set the address of the data segment
+.TP
+\fB\-Ttext\fR ADDRESS
+Set the address of the text segment
+.TP
+\fB\-Ttext\-segment\fR ADDRESS
+Set the address of the text segment
+.TP
+\fB\-Trodata\-segment\fR ADDRESS
+Set the address of the rodata segment
+.TP
+\fB\-u\fR SYMBOL, \fB\-\-undefined\fR SYMBOL
+Create undefined reference to SYMBOL
+.TP
+\fB\-\-unresolved\-symbols\fR ignore\-all,report\-all,ignore\-in\-object\-files,ignore\-in\-shared\-libs
+How to handle unresolved symbols
+.TP
+\fB\-\-verbose\fR
+Alias for \fB\-\-debug\fR=\fI\,files\/\fR
+.TP
+\fB\-\-version\-script\fR FILE
+Read version script
+.TP
+\fB\-\-warn\-common\fR
+Warn about duplicate common symbols
+.TP
+\fB\-\-no\-warn\-common\fR
+Do not warn about duplicate common symbols (default)
+.TP
+\fB\-\-warn\-constructors\fR
+Ignored
+.TP
+\fB\-\-no\-warn\-constructors\fR
+Ignored
+.TP
+\fB\-\-warn\-drop\-version\fR
+Warn when discarding version information
+.TP
+\fB\-\-no\-warn\-drop\-version\fR
+Do not warn when discarding version information (default)
+.TP
+\fB\-\-warn\-execstack\fR
+Warn if the stack is executable
+.TP
+\fB\-\-no\-warn\-execstack\fR
+Do not warn if the stack is executable (default)
+.TP
+\fB\-\-no\-warn\-mismatch\fR
+Don't warn about mismatched input files
+.TP
+\fB\-\-warn\-multiple\-gp\fR
+Ignored
+.TP
+\fB\-\-warn\-search\-mismatch\fR
+Warn when skipping an incompatible library (default)
+.TP
+\fB\-\-no\-warn\-search\-mismatch\fR
+Don't warn when skipping an incompatible library
+.TP
+\fB\-\-warn\-shared\-textrel\fR
+Warn if text segment is not shareable
+.TP
+\fB\-\-no\-warn\-shared\-textrel\fR
+Do not warn if text segment is not shareable (default)
+.TP
+\fB\-\-warn\-unresolved\-symbols\fR
+Report unresolved symbols as warnings
+.TP
+\fB\-\-error\-unresolved\-symbols\fR
+Report unresolved symbols as errors (default)
+.TP
+\fB\-z\fR buildd
+Dummy z option
+.TP
+\fB\-\-no\-wchar\-size\-warning\fR
+(ARM only) Do not warn about objects with incompatible wchar_t sizes
+.TP
+\fB\-\-weak\-unresolved\-symbols\fR
+Convert unresolved symbols to weak references
+.TP
+\fB\-\-whole\-archive\fR
+Include all archive contents
+.TP
+\fB\-\-no\-whole\-archive\fR
+Include only needed archive contents (default)
+.TP
+\fB\-\-wrap\fR SYMBOL
+Use wrapper functions for SYMBOL
+.TP
+\fB\-x\fR, \fB\-\-discard\-all\fR
+Delete all local symbols
+.TP
+\fB\-X\fR, \fB\-\-discard\-locals\fR
+Delete all temporary local symbols
+.TP
+\fB\-\-discard\-none\fR
+Keep all local symbols
+.TP
+\fB\-y\fR SYMBOL, \fB\-\-trace\-symbol\fR SYMBOL
+Trace references to symbol
+.TP
+\fB\-\-undefined\-version\fR
+Allow unused version in script (default)
+.TP
+\fB\-\-no\-undefined\-version\fR
+Do not allow unused version in script
+.TP
+\fB\-Y\fR PATH
+Default search path for Solaris compatibility
+.TP
+\-(, \fB\-\-start\-group\fR
+Start a library search group
+.TP
+\-), \fB\-\-end\-group\fR
+End a library search group
+.TP
+\fB\-z\fR bndplt
+(x86\-64 only) Generate a BND PLT for Intel MPX
+.TP
+\fB\-z\fR nobndplt
+Generate a regular PLT (default)
+.TP
+\fB\-z\fR combreloc
+Sort dynamic relocs (default)
+.TP
+\fB\-z\fR nocombreloc
+Do not sort dynamic relocs
+.TP
+\fB\-z\fR common\-page\-size=SIZE
+Set common page size to SIZE
+.TP
+\fB\-z\fR defs
+Report undefined symbols (even with \fB\-\-shared\fR)
+.TP
+\fB\-z\fR execstack
+Mark output as requiring executable stack
+.TP
+\fB\-z\fR global
+Make symbols in DSO available for subsequently loaded objects
+.TP
+\fB\-z\fR initfirst
+Mark DSO to be initialized first at runtime
+.TP
+\fB\-z\fR interpose
+Mark object to interpose all DSOs but executable
+.TP
+\fB\-z\fR lazy
+Mark object for lazy runtime binding (default)
+.TP
+\fB\-z\fR loadfltr
+Mark object requiring immediate process
+.TP
+\fB\-z\fR max\-page\-size=SIZE
+Set maximum page size to SIZE
+.TP
+\fB\-z\fR muldefs
+Allow multiple definitions of symbols
+.TP
+\fB\-z\fR nocopyreloc
+Do not create copy relocs
+.TP
+\fB\-z\fR nodefaultlib
+Mark object not to use default search paths
+.TP
+\fB\-z\fR nodelete
+Mark DSO non\-deletable at runtime
+.TP
+\fB\-z\fR nodlopen
+Mark DSO not available to dlopen
+.TP
+\fB\-z\fR nodump
+Mark DSO not available to dldump
+.TP
+\fB\-z\fR noexecstack
+Mark output as not requiring executable stack
+.TP
+\fB\-z\fR now
+Mark object for immediate function binding
+.TP
+\fB\-z\fR origin
+Mark DSO to indicate that needs immediate $ORIGIN processing at runtime
+.TP
+\fB\-z\fR relro
+Where possible mark variables read\-only after relocation (default)
+.TP
+\fB\-z\fR norelro
+Don't mark variables read\-only after relocation
+.TP
+\fB\-z\fR stack\-size=SIZE
+Set PT_GNU_STACK segment p_memsz to SIZE
+.TP
+\fB\-z\fR start\-stop\-visibility=[default,internal,hidden,protected]
+ELF symbol visibility for synthesized __start_* and __stop_* symbols
+.TP
+\fB\-z\fR text
+Do not permit relocations in read\-only segments
+.TP
+\fB\-z\fR notext
+Permit relocations in read\-only segments (default)
+.TP
+\fB\-z\fR textoff
+Permit relocations in read\-only segments (default)
+.TP
+\fB\-z\fR text\-unlikely\-segment
+Move .text.unlikely sections to a separate segment.
+.TP
+\fB\-z\fR notext\-unlikely\-segment
+Do not move .text.unlikely sections to a separate segment. (default)
+.HP
+\fB\-z\fR keep\-text\-section\-prefix Keep .text.hot, .text.startup, .text.exit and .text.unlikely as separate sections in the final binary.
+.TP
+\fB\-z\fR nokeep\-text\-section\-prefix
+Merge all .text.* prefix sections. (default)
+.PP
+debian/tmp/usr/bin/ld.gold: supported targets: elf32\-x86\-64 elf32\-x86\-64\-freebsd elf32\-x86\-64\-nacl elf64\-x86\-64 elf64\-x86\-64\-freebsd elf64\-x86\-64\-nacl elf32\-iamcu elf32\-i386 elf32\-i386\-freebsd elf32\-i386\-nacl
+debian/tmp/usr/bin/ld.gold: supported emulations: elf32_x86_64 elf32_x86_64_nacl elf_x86_64 elf_x86_64_nacl elf_iamcu elf_i386 elf_i386_nacl
+.SH "REPORTING BUGS"
+Report bugs to <http://www.sourceware.org/bugzilla/>
+.SH COPYRIGHT
+Copyright \(co 2020 Free Software Foundation, Inc.
+This program is free software; you may redistribute it under the terms of
+the GNU General Public License version 3 or (at your option) a later version.
+This program has absolutely no warranty.
diff --git a/libbinutils.overrides b/libbinutils.overrides
new file mode 100644 (file)
index 0000000..67e71e7
--- /dev/null
@@ -0,0 +1,5 @@
+# the API of the shared libs is not public, don't care about the name
+libbinutils binary: package-name-doesnt-match-sonames
+
+# the upstream name, we don't care
+libbinutils binary: dev-pkg-without-shlib-symlink
diff --git a/libbinutils.shlibs.in b/libbinutils.shlibs.in
new file mode 100644 (file)
index 0000000..6964e29
--- /dev/null
@@ -0,0 +1,2 @@
+libbfd @VER@-system@DATE_EXT@ libbinutils (>= @DEB_UVER@), libbinutils (<< @DEB_NVER@)
+libopcodes @VER@-system@DATE_EXT@ libbinutils (>= @DEB_UVER@), libbinutils (<< @DEB_NVER@)
diff --git a/libctf-nobfd0.symbols b/libctf-nobfd0.symbols
new file mode 100644 (file)
index 0000000..87fc40a
--- /dev/null
@@ -0,0 +1,2 @@
+libctf-nobfd.so.0 libctf-nobfd0 #MINVER#
+ (symver)LIBCTF_1.0 2.33.50
diff --git a/libctf0.symbols b/libctf0.symbols
new file mode 100644 (file)
index 0000000..8e9e548
--- /dev/null
@@ -0,0 +1,2 @@
+libctf.so.0 libctf0 #MINVER#
+ (symver)LIBCTF_1.0 2.33.50
diff --git a/patches/001_ld_makefile_patch.patch b/patches/001_ld_makefile_patch.patch
new file mode 100644 (file)
index 0000000..0709a8c
--- /dev/null
@@ -0,0 +1,27 @@
+Author: 
+Description: Description: correct where ld scripts are installed
+Author: Chris Chimelis <chris@debian.org>
+Upstream status: N/A
+Date: ??
+--- a/ld/Makefile.am
++++ b/ld/Makefile.am
+@@ -50,7 +50,7 @@ AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
+ # We put the scripts in the directory $(scriptdir)/ldscripts.
+ # We can't put the scripts in $(datadir) because the SEARCH_DIR
+ # directives need to be different for native and cross linkers.
+-scriptdir = $(tooldir)/lib
++scriptdir = $(libdir)
+ EMUL = @EMUL@
+ EMULATION_OFILES = @EMULATION_OFILES@
+--- a/ld/Makefile.in
++++ b/ld/Makefile.in
+@@ -555,7 +555,7 @@ AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
+ # We put the scripts in the directory $(scriptdir)/ldscripts.
+ # We can't put the scripts in $(datadir) because the SEARCH_DIR
+ # directives need to be different for native and cross linkers.
+-scriptdir = $(tooldir)/lib
++scriptdir = $(libdir)
+ BASEDIR = $(srcdir)/..
+ BFDDIR = $(BASEDIR)/bfd
+ INCDIR = $(BASEDIR)/include
diff --git a/patches/002_gprof_profile_arcs.patch b/patches/002_gprof_profile_arcs.patch
new file mode 100644 (file)
index 0000000..a97f4db
--- /dev/null
@@ -0,0 +1,29 @@
+Author: Chris Chimelis <chris@debian.org>
+Description: Add more documentation about profiling and -fprofile-arcs.
+Index: b/gprof/gprof.texi
+===================================================================
+--- a/gprof/gprof.texi
++++ b/gprof/gprof.texi
+@@ -145,6 +145,10 @@
+ If more than one profile file is specified, the @code{gprof}
+ output shows the sum of the profile information in the given profile files.
++If you use gcc 2.95.x or 3.0 to compile your binaries, you may need
++to add the @samp{-fprofile-arcs} to the compile command line in order
++for the call graphs to be properly stored in gmon.out.
++
+ @code{Gprof} calculates the amount of time spent in each routine.
+ Next, these times are propagated along the edges of the call graph.
+ Cycles are discovered, and calls into a cycle are made to share the time
+@@ -276,6 +280,11 @@
+ options.  The same option, @samp{-pg}, alters either compilation or linking
+ to do what is necessary for profiling.  Here are examples:
++If you use gcc 2.95.x or 3.0.x, you may need to add the
++@samp{-fprofile-arcs} option to the compile line along with @samp{-pg}
++in order to allow the call-graphs to be properly included in the gmon.out
++file.
++
+ @example
+ cc -g -c myprog.c utils.c -pg
+ cc -o myprog myprog.o utils.o -pg
diff --git a/patches/003_gprof_see_also_monitor.patch b/patches/003_gprof_see_also_monitor.patch
new file mode 100644 (file)
index 0000000..38f9156
--- /dev/null
@@ -0,0 +1,15 @@
+Author: Chris Chimelis <chris@debian.org>
+Description: Don't mention monitor(3) which doesn't exist in Debian. (#160654)
+Index: b/gprof/gprof.texi
+===================================================================
+--- a/gprof/gprof.texi
++++ b/gprof/gprof.texi
+@@ -193,7 +193,7 @@
+ @c man end
+ @c man begin SEEALSO
+-monitor(3), profil(2), cc(1), prof(1), and the Info entry for @file{gprof}.
++cc(1), prof(1), and the Info entry for @file{gprof}.
+ ``An Execution Profiler for Modular Programs'',
+ by S. Graham, P. Kessler, M. McKusick;
diff --git a/patches/006_better_file_error.patch b/patches/006_better_file_error.patch
new file mode 100644 (file)
index 0000000..408921e
--- /dev/null
@@ -0,0 +1,19 @@
+Author: David Kimdon <dwhedon@gordian.com>
+Description: Specify which filename is causing an error if the filename is a
+directory. (#45832)
+--- a/bfd/opncls.c
++++ b/bfd/opncls.c
+@@ -220,6 +220,13 @@ bfd_fopen (const char *filename, const c
+ {
+   bfd *nbfd;
+   const bfd_target *target_vec;
++  struct stat s;
++
++  if (stat (filename, &s) == 0)
++    if (S_ISDIR(s.st_mode)) {
++      bfd_set_error (bfd_error_file_not_recognized);
++      return NULL;
++    }
+   nbfd = _bfd_new_bfd ();
+   if (nbfd == NULL)
diff --git a/patches/013_bash_in_ld_testsuite.patch b/patches/013_bash_in_ld_testsuite.patch
new file mode 100644 (file)
index 0000000..435f225
--- /dev/null
@@ -0,0 +1,13 @@
+Author: Matthias Klose <doko@ubuntu.com>
+Description: Explicitly use bash for the ld testsuite.
+--- a/ld/testsuite/config/default.exp
++++ b/ld/testsuite/config/default.exp
+@@ -163,7 +163,7 @@ load_lib ld-lib.exp
+ proc get_target_emul {} {
+     global target_triplet
+     global srcdir
+-    set status [catch "exec sh -c \"targ='$target_triplet' && . $srcdir/../configure.tgt && echo \\\$targ_emul\"" result]
++    set status [catch "exec bash -c \"targ='$target_triplet' && . $srcdir/../configure.tgt && echo \\\$targ_emul\"" result]
+     if $status { error "Error getting emulation name: $result" }
+     return $result
+ }
diff --git a/patches/014_hash_style-both.patch b/patches/014_hash_style-both.patch
new file mode 100644 (file)
index 0000000..61c3e61
--- /dev/null
@@ -0,0 +1,30 @@
+# DP: Default to --hash-style=both in ld.bfd and ld.gold.
+
+--- a/ld/ldmain.c
++++ b/ld/ldmain.c
+@@ -287,6 +288,14 @@
+   emulation = get_emulation (argc, argv);
+   ldemul_choose_mode (emulation);
+   default_target = ldemul_choose_target (argc, argv);
++
++  /* Default to --hash-style=gnu */
++  if (strcmp (default_target, "elf32-tradbigmips") != 0
++      && strcmp (default_target, "elf32-tradlittlemips") != 0)
++    {
++      link_info.emit_gnu_hash = TRUE;
++    }
++
+   config.maxpagesize = bfd_emul_get_maxpagesize (default_target);
+   config.commonpagesize = bfd_emul_get_commonpagesize (default_target);
+   lang_init ();
+--- a/gold/options.h
++++ b/gold/options.h
+@@ -794,7 +794,7 @@
+               N_("Min fraction of empty buckets in dynamic hash"),
+               N_("FRACTION"));
+-  DEFINE_enum(hash_style, options::TWO_DASHES, '\0', "sysv",
++  DEFINE_enum(hash_style, options::TWO_DASHES, '\0', "both",
+             N_("Dynamic hash style"), N_("[sysv,gnu,both]"),
+             {"sysv", "gnu", "both"});
diff --git a/patches/014_hash_style-gnu.patch b/patches/014_hash_style-gnu.patch
new file mode 100644 (file)
index 0000000..b43b718
--- /dev/null
@@ -0,0 +1,31 @@
+# DP: Default to --hash-gnu=both in ld.bfd and ld.gold.
+
+--- a/ld/ldmain.c
++++ b/ld/ldmain.c
+@@ -287,6 +288,15 @@
+   emulation = get_emulation (argc, argv);
+   ldemul_choose_mode (emulation);
+   default_target = ldemul_choose_target (argc, argv);
++
++  /* Default to --hash-style=gnu */
++  if (strcmp (default_target, "elf32-tradbigmips") != 0
++      && strcmp (default_target, "elf32-tradlittlemips") != 0)
++    {
++      link_info.emit_gnu_hash = TRUE;
++      link_info.emit_hash = FALSE;
++    }
++
+   config.maxpagesize = bfd_emul_get_maxpagesize (default_target);
+   config.commonpagesize = bfd_emul_get_commonpagesize (default_target);
+   lang_init ();
+--- a/gold/options.h
++++ b/gold/options.h
+@@ -794,7 +794,7 @@
+               N_("Min fraction of empty buckets in dynamic hash"),
+               N_("FRACTION"));
+-  DEFINE_enum(hash_style, options::TWO_DASHES, '\0', "sysv",
++  DEFINE_enum(hash_style, options::TWO_DASHES, '\0', "gnu",
+             N_("Dynamic hash style"), N_("[sysv,gnu,both]"),
+             {"sysv", "gnu", "both"});
diff --git a/patches/127_x86_64_i386_biarch.patch b/patches/127_x86_64_i386_biarch.patch
new file mode 100644 (file)
index 0000000..b75ac82
--- /dev/null
@@ -0,0 +1,20 @@
+Author: 
+Description: Description: Add (/usr)/lib32 to the search paths on x86_64.
+Author: Aurelien Jarno <aurel32.debian.org>
+Upstream status: Debian specific
+--- a/ld/emulparams/elf_i386.sh
++++ b/ld/emulparams/elf_i386.sh
+@@ -13,3 +13,13 @@
+ NO_SMALL_DATA=yes
+ SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 12 ? 12 : 0"
+ IREL_IN_PLT=
++
++# Linux modify the default library search path to first include
++# a 32-bit specific directory.
++case "$target" in
++  x86_64*-linux* | i[3-7]86*-linux* | x86_64*-kfreebsd*-gnu | i[3-7]86*-kfreebsd*-gnu)
++    case "$EMULATION_NAME" in
++      *i386*) LIBPATH_SUFFIX=32 ;;
++    esac
++    ;;
++esac
diff --git a/patches/128_build_id.patch b/patches/128_build_id.patch
new file mode 100644 (file)
index 0000000..cba02de
--- /dev/null
@@ -0,0 +1,42 @@
+Author: 
+Description: Description: Fix ld corrupt build ID generation
+Author: Nick Clifton
+Upstream status: Taken from Fedora (BZ 501582)
+--- a/bfd/compress.c
++++ b/bfd/compress.c
+@@ -174,7 +174,7 @@
+     case COMPRESS_SECTION_NONE:
+       if (p == NULL)
+       {
+-        p = (bfd_byte *) bfd_malloc (sz);
++        p = (bfd_byte *) bfd_zmalloc (sz);
+         if (p == NULL)
+           return FALSE;
+         need_free = TRUE;
+--- a/bfd/elfcode.h
++++ b/bfd/elfcode.h
+@@ -1158,6 +1158,24 @@
+       if (i_shdr.contents)
+       (*process) (i_shdr.contents, i_shdr.sh_size, arg);
++      else
++      {
++        asection *sec;
++
++        sec = bfd_section_from_elf_index (abfd, count);
++        if (sec != NULL)
++          {
++            if (sec->contents == NULL)
++              {
++                /* Force rereading from file.  */
++                sec->flags &= ~SEC_IN_MEMORY;
++                if (! bfd_malloc_and_get_section (abfd, sec, & sec->contents))
++                  continue;
++              }
++            if (sec->contents != NULL)
++              (*process) (sec->contents, i_shdr.sh_size, arg);
++          }
++      }
+     }
+   return TRUE;
diff --git a/patches/128_ppc64_powerpc_biarch.patch b/patches/128_ppc64_powerpc_biarch.patch
new file mode 100644 (file)
index 0000000..a72fb51
--- /dev/null
@@ -0,0 +1,17 @@
+Index: b/ld/emulparams/elf32ppccommon.sh
+===================================================================
+--- a/ld/emulparams/elf32ppccommon.sh
++++ b/ld/emulparams/elf32ppccommon.sh
+@@ -56,3 +56,12 @@ case `echo "$target" | sed -e 's/-.*//'`
+   *:*64*) LIBPATH_SUFFIX=64 ;;
+   *:*32*) LIBPATH_SUFFIX=32 ;;
+ esac
++
++# On 64bit, look for 32 bit target libraries in /lib32, /usr/lib32 etc., first.
++case "$target" in
++  powerpc64-*-linux* | ppc64-*-linux*)
++    case "$EMULATION_NAME" in
++      *32*) LIBPATH_SUFFIX=32 ;;
++    esac
++    ;;
++esac
diff --git a/patches/129_multiarch_libpath.patch b/patches/129_multiarch_libpath.patch
new file mode 100644 (file)
index 0000000..5edd51d
--- /dev/null
@@ -0,0 +1,341 @@
+# DP: Add multiarch directories to linker search path for ld and gold.
+
+--- a/ld/genscripts.sh
++++ b/ld/genscripts.sh
+@@ -235,6 +235,104 @@ append_to_lib_path()
+   fi
+ }
++# set the multiarch tuples
++multiarch_name=
++multiarch_name_32=
++multiarch_name_64=
++multiarch_name_n32=
++multiarch_name_x32=
++
++if true; then
++  # based on TOOL_LIB
++  multiarch_name=$DEB_TARGET_MULTIARCH
++  multiarch_name_32=$DEB_TARGET_MULTIARCH32
++  multiarch_name_64=$DEB_TARGET_MULTIARCH64
++  multiarch_name_n32=$DEB_TARGET_MULTIARCHN32
++  multiarch_name_x32=$DEB_TARGET_MULTIARCHX32
++else
++  # based on the emulation name; using TOOL_LIB seems to unreliable, when
++  # configuring with --enable-targets=powerpc-linux-gnu,powerpc64-linux-gnu
++  # only the first one (?) wins.
++  # FIXME: should this go into ld/emulparams/*.sh ?
++  case "$EMULATION_NAME" in
++    aarch64linux)
++      multiarch_name=aarch64-linux-gnu
++      ;;
++    aarch64linux32)
++      multiarch_name=aarch64_ilp32-linux-gnu
++      ;;
++    aarch64linux32b)
++      multiarch_name=aarch64_be_ilp32-linux-gnu
++      ;;
++    aarch64linuxb)
++      multiarch_name=aarch64_be-linux-gnu
++      ;;
++    armelf_linux_eabi)
++      # FIXME: TOOL_LIB can be arm-linux-gnueabi, arm-linux-gnueabihf, aarch64-linux-gnu
++      multiarch_name=arm-linux-gnueabi
++      ;;
++    armelfb_linux_eabi)
++      # FIXME: TOOL_LIB can be arm-linux-gnueabi, arm-linux-gnueabihf, aarch64-linux-gnu
++      multiarch_name=armeb-linux-gnueabi
++      ;;
++    elf32_sparc)
++      multiarch_name=sparc-linux-gnu
++      multiarch_name_64=sparc64-linux-gnu
++      ;;
++    elf32_x86_64)
++      multiarch_name=x86_64-linux-gnux32
++      multiarch_name_32=i386-linux-gnu
++      multiarch_name_64=x86_64-linux-gnu
++      ;;
++    elf32btsmip)
++      ;;
++    elf32btsmipn32)
++      ;;
++    elf32ltsmip)
++      ;;
++    elf32ltsmipn32)
++      ;;
++    elf32elflppc) # necessary?
++      multiarch_name=powerpcle-linux-gnu
++      multiarch_name_64=powerpc64le-linux-gnu
++      ;;
++    elf32elflppclinux)
++      multiarch_name=powerpcle-linux-gnu
++      multiarch_name_64=powerpc64le-linux-gnu
++      ;;
++    elf32ppc) # necessary?
++      multiarch_name=powerpc-linux-gnu
++      multiarch_name_64=powerpc64-linux-gnu
++      ;;
++    elf32ppclinux)
++      multiarch_name=powerpc-linux-gnu
++      multiarch_name_64=powerpc64-linux-gnu
++      ;;
++    elf64ppc)
++      multiarch_name=powerpc64-linux-gnu
++      multiarch_name_32=powerpc-linux-gnu
++      ;;
++  esac
++fi
++
++if [ "x${LIB_PATH}" = "x" ] && [ "x${USE_LIBPATH}" = xyes ] ; then
++  libs=${NATIVE_LIB_DIRS}
++  if [ "x${NATIVE}" = "xyes" ] ; then
++    case " ${libs} " in
++      *" ${libdir} "*) ;;
++      *) libs="${libdir} ${libs}" ;;
++    esac
++  fi
++  append_to_lib_path ${libs}
++fi
++
++case :${lib_path1}:${lib_path2}: in
++  *:: | ::*) LIB_PATH=${lib_path1}${lib_path2} ;;
++  *) LIB_PATH=${lib_path1}:${lib_path2} ;;
++esac
++lib_path1=
++lib_path2=
++
+ # Always search $(tooldir)/lib, aka /usr/local/TARGET/lib when native
+ # except when LIBPATH=":".
+ if [ "${LIB_PATH}" != ":" ] ; then
+@@ -253,6 +351,13 @@ if [ "${LIB_PATH}" != ":" ] ; then
+       case "${NATIVE}:${libpath_suffix}:${TOOL_LIB}" in
+       :* | *::* | *:*:*${libpath_suffix}) ;;
+       *) libs="${exec_prefix}/${target_alias}/lib${libpath_suffix}" ;;
++      *)
++        # FIXME:
++        # For the binutils-multiarch build on x86_64-linux-gnu configured
++          # with --enable-targets=powerpc-linux-gnu, /usr/x86_64-linux-gnu/lib64
++          # is added instead of /usr/powerpc64-linux-gnu/lib64. However this
++        # probably wanted for the "default" emulation. How to detect that?
++        libs="${exec_prefix}/${target_alias}/lib${libpath_suffix}" ;;
+       esac
+     done
+     libs="${exec_prefix}/${TOOL_LIB}/lib ${libs}"
+@@ -260,24 +365,124 @@ if [ "${LIB_PATH}" != ":" ] ; then
+   append_to_lib_path ${libs}
+ fi
+-if [ "x${LIB_PATH}" = "x" ] && [ "x${USE_LIBPATH}" = xyes ] ; then
+-  libs=${NATIVE_LIB_DIRS}
+-  if [ "x${NATIVE}" = "xyes" ] ; then
+-    case " ${libs} " in
+-      *" ${libdir} "*) ;;
+-      *) libs="${libdir} ${libs}" ;;
+-    esac
+-  fi
+-  append_to_lib_path ${libs}
+-fi
+-
+ case :${lib_path1}:${lib_path2}: in
+-  *:: | ::*) LIB_PATH=${lib_path1}${lib_path2} ;;
+-  *) LIB_PATH=${lib_path1}:${lib_path2} ;;
++  *:: | ::*) LIB_PATH=${LIB_PATH}:${lib_path1}${lib_path2} ;;
++  *) LIB_PATH=${LIB_PATH}:${lib_path1}:${lib_path2} ;;
+ esac
++# We use the $tool_lib variable in our multiarch mangling:
++if [ "x${TOOL_LIB}" = "x" ] ; then
++  tool_lib=${exec_prefix}/${target_alias}/lib
++else
++  tool_lib=${exec_prefix}/${TOOL_LIB}/lib
++fi
++
++# FIXME: why again? These already should be in LIBPATH
++if [ "x${APPEND_TOOLLIBDIR}" = "xyes" ] ; then
++  LIB_PATH=${LIB_PATH}:${tool_lib}
++  # For multilib targets, search both $tool_lib dirs
++  if [ "x${LIBPATH_SUFFIX}" != "x" ] ; then
++    LIB_PATH=${LIB_PATH}:${tool_lib}${LIBPATH_SUFFIX}
++  fi
++fi
++
+ LIB_SEARCH_DIRS=`echo ${LIB_PATH} | sed -e 's/:/ /g' -e 's/\([^ ][^ ]*\)/SEARCH_DIR(\\"\1\\");/g'`
++if [ -n "$multiarch_name" ]; then
++    temp_dirs=' '
++    ma_dirs=' '
++    for dir in `echo ${LIB_PATH} | sed -e 's/:/ /g'`; do
++      case "$dir" in
++          *${tool_lib}*|*/${target_alias}/*)
++              ;;
++          */lib)
++              if [ -n "$multiarch_name_32" ]; then
++                  case $EMULATION_NAME in
++                      elf_i386|elf32*)
++                          ma_dirs="${ma_dirs}${dir}/$multiarch_name_32 ";;
++                      *)
++                          ma_dirs="${ma_dirs}${dir}/$multiarch_name "
++                  esac
++              elif [ -n "$multiarch_name_64" ]; then
++                  case $EMULATION_NAME in
++                      elf*_64|elf64*)
++                          ma_dirs="${ma_dirs}${dir}/$multiarch_name_64 ";;
++                      *)
++                          ma_dirs="${ma_dirs}${dir}/$multiarch_name "
++                  esac
++              else
++                  ma_dirs="${ma_dirs}${dir}/$multiarch_name "
++              fi
++              ;;
++          */lib32)
++              if [ -n "$multiarch_name_32" ]; then
++                  dir2=$(echo $dir | sed "s,32$,,")
++                  ma_dirs="${ma_dirs}${dir2}/$multiarch_name_32 "
++              fi
++              ;;
++          */lib64)
++              case "${target}" in
++                  aarch64*-*-*|powerpc64-*-*|s390x-*-*|sparc64-*-*|x86_64-*-linux-gnu|mips64-*-gnuabi64)
++                      #dir=$(echo $dir | sed "s,64$,,")
++                      dir2=$(echo $dir | sed "s,64$,,")
++                      ma_dirs="${ma_dirs}${dir2}/$multiarch_name "
++                      ;;
++                  *)
++                      if [ -n "$multiarch_name_64" ]; then
++                          dir2=$(echo $dir | sed "s,64$,,")
++                          ma_dirs="${ma_dirs}${dir2}/$multiarch_name_64 "
++                      fi
++                      ;;
++              esac
++              ;;
++          */libx32)
++              case "${target}" in
++                  x86_64-*-linux-gnux32)
++                      dir2=$(echo $dir | sed "s,x32$,,")
++                      ma_dirs="${ma_dirs}${dir2}/$multiarch_name "
++                      ;;
++                  *)
++                      if [ -n "$multiarch_name_x32" ]; then
++                          dir2=$(echo $dir | sed "s,x32$,,")
++                          ma_dirs="${ma_dirs}${dir2}/$multiarch_name_x32 "
++                      fi
++                      ;;
++              esac
++              ;;
++          */libn32)
++              case "${target}" in
++                  mips64*-*-linux-gnuabin32)
++                      dir2=$(echo $dir | sed "s,n32$,,")
++                      ma_dirs="${ma_dirs}${dir2}/$multiarch_name "
++                      ;;
++                  *)
++                      if [ -n "$multiarch_name_n32" ]; then
++                          dir2=$(echo $dir | sed "s,n32$,,")
++                          ma_dirs="${ma_dirs}${dir2}/$multiarch_name_n32 "
++                      fi
++                      ;;
++              esac
++              ;;
++          */libilp32)
++              if [ -n "$multiarch_name_32" ]; then
++                  dir2=$(echo $dir | sed "s,ilp32$,,")
++                  ma_dirs="${ma_dirs}${dir2}/$multiarch_name_32 "
++              fi
++              ;;
++          *)
++              ;;
++      esac
++      temp_dirs="${temp_dirs}${dir} "
++    done
++    LIB_SEARCH_DIRS=
++    for dir in $ma_dirs $temp_dirs; do
++      if echo "$LIB_SEARCH_DIRS" | fgrep -q "\"$dir\""; then
++          continue
++      fi
++      LIB_SEARCH_DIRS="${LIB_SEARCH_DIRS}SEARCH_DIR(\"$dir\"); "
++    done
++fi
++
+ # We need it for testsuite.
+ set $EMULATION_LIBPATH
+ if [ "x$1" = "x$EMULATION_NAME" ]; then
+--- a/gold/Makefile.am
++++ b/gold/Makefile.am
+@@ -42,6 +42,7 @@ AM_CPPFLAGS = \
+       -I$(srcdir) -I$(srcdir)/../include -I$(srcdir)/../elfcpp \
+       -DLOCALEDIR="\"$(datadir)/locale\"" \
+       -DBINDIR="\"$(bindir)\"" -DTOOLBINDIR="\"$(tooldir)/bin\"" \
++      @MULTIARCH_DIRNAME@ $(if $(APPEND_TOOLLIBDIR),-DAPPEND_TOOLLIBDIR) \
+       -DTOOLLIBDIR="\"$(tooldir)/lib\"" @INCINTL@
+ LIBIBERTY = ../libiberty/libiberty.a
+--- a/gold/configure
++++ b/gold/configure
+@@ -625,6 +625,7 @@ LTLIBOBJS
+ MAINT
+ MAINTAINER_MODE_FALSE
+ MAINTAINER_MODE_TRUE
++MULTIARCH_DIRNAME
+ DLOPEN_LIBS
+ CXXCPP
+ HAVE_NO_USE_LINKER_PLUGIN_FALSE
+@@ -10205,6 +10206,14 @@ $as_echo "#define HAVE_LC_MESSAGES 1" >>
+   fi
++if test x$DEB_TARGET_MULTIARCH != x; then
++  multiarch=$DEB_TARGET_MULTIARCH
++  if test -n "$multiarch"; then
++    MULTIARCH_DIRNAME='-DMULTIARCH_DIRNAME=\"'$multiarch'\"'
++  fi
++fi
++
++
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+ $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+--- a/gold/configure.ac
++++ b/gold/configure.ac
+@@ -685,6 +685,14 @@ AC_CHECK_HEADERS(locale.h)
+ AC_CHECK_FUNCS(setlocale)
+ AM_LC_MESSAGES
++if test x$DEB_TARGET_MULTIARCH != x; then
++  multiarch=$DEB_TARGET_MULTIARCH
++  if test -n "$multiarch"; then
++    MULTIARCH_DIRNAME='-DMULTIARCH_DIRNAME=\"'$multiarch'\"'
++  fi
++fi
++AC_SUBST(MULTIARCH_DIRNAME)
++
+ AM_MAINTAINER_MODE
+ AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)
+--- a/gold/options.cc
++++ b/gold/options.cc
+@@ -1246,8 +1246,15 @@ General_options::finalize()
+              || this->user_set_sysroot()
+              || *TARGET_SYSTEM_ROOT != '\0')
+       {
++#ifdef MULTIARCH_DIRNAME
++        this->add_to_library_path_with_sysroot("/lib/" MULTIARCH_DIRNAME);
++        this->add_to_library_path_with_sysroot("/usr/lib/" MULTIARCH_DIRNAME);
++#endif
+         this->add_to_library_path_with_sysroot("/lib");
+         this->add_to_library_path_with_sysroot("/usr/lib");
++#ifdef APPEND_TOOLLIBDIR
++        this->add_to_library_path_with_sysroot(TOOLLIBDIR);
++#endif
+       }
+       else
+       this->add_to_library_path_with_sysroot(TOOLLIBDIR);
+--- a/gold/Makefile.in
++++ b/gold/Makefile.in
+@@ -674,6 +674,7 @@ AM_CPPFLAGS = \
+       -I$(srcdir) -I$(srcdir)/../include -I$(srcdir)/../elfcpp \
+       -DLOCALEDIR="\"$(datadir)/locale\"" \
+       -DBINDIR="\"$(bindir)\"" -DTOOLBINDIR="\"$(tooldir)/bin\"" \
++      @MULTIARCH_DIRNAME@ $(if $(APPEND_TOOLLIBDIR),-DAPPEND_TOOLLIBDIR) \
+       -DTOOLLIBDIR="\"$(tooldir)/lib\"" @INCINTL@
+ LIBIBERTY = ../libiberty/libiberty.a
diff --git a/patches/130_gold_disable_testsuite_build.patch b/patches/130_gold_disable_testsuite_build.patch
new file mode 100644 (file)
index 0000000..7e1d1af
--- /dev/null
@@ -0,0 +1,26 @@
+Author: 
+Description: Description: Disable build of gold/testsuite
+Author: Matthias Klose
+Upstream status: local
+--- a/gold/Makefile.am
++++ b/gold/Makefile.am
+@@ -19,7 +19,7 @@
+ AUTOMAKE_OPTIONS = foreign
+-SUBDIRS = po testsuite
++SUBDIRS = po
+ tooldir = $(exec_prefix)/$(target_alias)
+--- a/gold/Makefile.in
++++ b/gold/Makefile.in
+@@ -656,7 +656,7 @@ top_srcdir = @top_srcdir@
+ zlibdir = @zlibdir@
+ zlibinc = @zlibinc@
+ AUTOMAKE_OPTIONS = foreign
+-SUBDIRS = po testsuite
++SUBDIRS = po
+ tooldir = $(exec_prefix)/$(target_alias)
+ ACLOCAL_AMFLAGS = -I ../bfd -I ../config
diff --git a/patches/131_ld_bootstrap_testsuite.patch b/patches/131_ld_bootstrap_testsuite.patch
new file mode 100644 (file)
index 0000000..bbe239e
--- /dev/null
@@ -0,0 +1,45 @@
+Author: 
+Description: Description: Fix ld-bootstrap testsuite when configured with --enable-plugins
+Author: Rafael Espindola
+Upstream status: proposed patch
+--- a/ld/testsuite/ld-bootstrap/bootstrap.exp
++++ b/ld/testsuite/ld-bootstrap/bootstrap.exp
+@@ -44,6 +44,15 @@ if [check_plugin_api_available] {
+     set plugins "yes"
+ }
++remote_exec host "$nm --help" "" "/dev/null" "plugin-support"
++set tmp [file_contents "plugin-support"]
++regexp ".*\(--plugin\).*\n" $tmp foo plugins
++if [info exists plugins] then {
++    set plugins "yes"
++} else {
++    set plugins "no"
++}
++
+ # Bootstrap ld.  First link the object files together using -r, in
+ # order to test -r.  Then link the result into an executable, ld1, to
+ # really test -r.  Use ld1 to link a fresh ld, ld2.  Use ld2 to link a
+@@ -108,6 +117,11 @@ foreach flags $test_flags {
+       continue
+     }
++    if { $flags == "--static" && $plugins == "yes" } then {
++      untested $testname
++      continue
++    }
++
+     # If we only have a shared libbfd, we probably can't run the
+     # --static test.
+     if { $flags == "--static" && ! [string match "*libbfd.a*" $BFDLIB] } then {
+@@ -152,6 +166,10 @@ foreach flags $test_flags {
+       }
+     }
++    if { $plugins == "yes" } {
++      set extralibs "$extralibs -ldl"
++    }
++
+     # On Irix 5, linking with --static only works if all the files are
+     # compiled using -non_shared.
+     if {"$flags" == "--static"} {
diff --git a/patches/135_bfd_soversion.patch b/patches/135_bfd_soversion.patch
new file mode 100644 (file)
index 0000000..1b6e3b2
--- /dev/null
@@ -0,0 +1,38 @@
+--- a/bfd/Makefile.am
++++ b/bfd/Makefile.am
+@@ -947,14 +947,14 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/
+       @echo "creating $@"
+       @bfd_version=`echo "$(VERSION)" | $(SED) -e 's/\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\).*/\1.00\2.00\3.00\4.00\5/' -e 's/\([^\.]*\)\..*\(..\)\..*\(..\)\..*\(..\)\..*\(..\)$$/\1\2\3\4\5/'` ;\
+       bfd_version_string="\"$(VERSION)\"" ;\
+-      bfd_soversion="$(VERSION)" ;\
++      bfd_soversion="$(VERSION)$(BFD_SOVER_EXT)" ;\
+       bfd_version_package="\"$(PKGVERSION)\"" ;\
+       report_bugs_to="\"$(REPORT_BUGS_TO)\"" ;\
+       . $(srcdir)/development.sh ;\
+       if test "$$development" = true ; then \
+         bfd_version_date=`$(SED) -n -e 's/.*DATE //p' < $(srcdir)/version.h` ;\
+         bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
+-        bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
++        bfd_soversion="$(VERSION)$(BFD_SOVER_EXT).$${bfd_version_date}" ;\
+       fi ;\
+       $(SED) -e "s,@bfd_version@,$$bfd_version," \
+           -e "s,@bfd_version_string@,$$bfd_version_string," \
+--- a/bfd/Makefile.in
++++ b/bfd/Makefile.in
+@@ -2059,14 +2059,14 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/
+       @echo "creating $@"
+       @bfd_version=`echo "$(VERSION)" | $(SED) -e 's/\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\).*/\1.00\2.00\3.00\4.00\5/' -e 's/\([^\.]*\)\..*\(..\)\..*\(..\)\..*\(..\)\..*\(..\)$$/\1\2\3\4\5/'` ;\
+       bfd_version_string="\"$(VERSION)\"" ;\
+-      bfd_soversion="$(VERSION)" ;\
++      bfd_soversion="$(VERSION)$(BFD_SOVER_EXT)" ;\
+       bfd_version_package="\"$(PKGVERSION)\"" ;\
+       report_bugs_to="\"$(REPORT_BUGS_TO)\"" ;\
+       . $(srcdir)/development.sh ;\
+       if test "$$development" = true ; then \
+         bfd_version_date=`$(SED) -n -e 's/.*DATE //p' < $(srcdir)/version.h` ;\
+         bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
+-        bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
++        bfd_soversion="$(VERSION)$(BFD_SOVER_EXT).$${bfd_version_date}" ;\
+       fi ;\
+       $(SED) -e "s,@bfd_version@,$$bfd_version," \
+           -e "s,@bfd_version_string@,$$bfd_version_string," \
diff --git a/patches/136_bfd_pic.patch b/patches/136_bfd_pic.patch
new file mode 100644 (file)
index 0000000..f200034
--- /dev/null
@@ -0,0 +1,25 @@
+Author: Balint Reczey <balint@balintreczey.hu>
+Description: Build libbfd with -fPIC to allow linking with PIE binaries
+
+--- a/bfd/Makefile.am
++++ b/bfd/Makefile.am
+@@ -52,7 +52,7 @@ ZLIBINC = @zlibinc@
+ WARN_CFLAGS = @WARN_CFLAGS@
+ NO_WERROR = @NO_WERROR@
+-AM_CFLAGS = $(WARN_CFLAGS) $(ZLIBINC)
++AM_CFLAGS = $(WARN_CFLAGS) $(ZLIBINC) -fPIC
+ AM_CPPFLAGS = -DBINDIR='"$(bindir)"' -DLIBDIR='"$(libdir)"'
+ if PLUGINS
+ bfdinclude_HEADERS += $(INCDIR)/plugin-api.h
+--- a/bfd/Makefile.in
++++ b/bfd/Makefile.in
+@@ -478,7 +478,7 @@ libbfd_la_LDFLAGS = $(am__append_1) -rel
+ # case both are empty.
+ ZLIB = @zlibdir@ -lz
+ ZLIBINC = @zlibinc@
+-AM_CFLAGS = $(WARN_CFLAGS) $(ZLIBINC)
++AM_CFLAGS = $(WARN_CFLAGS) $(ZLIBINC) -fPIC
+ AM_CPPFLAGS = -DBINDIR='"$(bindir)"' -DLIBDIR='"$(libdir)"' @HDEFINES@ \
+       @COREFLAG@ @TDEFINES@ $(CSEARCH) $(CSWITCHES) $(HAVEVECS) \
+       @INCINTL@ $(am__empty)
diff --git a/patches/157_ar_scripts_with_tilde.patch b/patches/157_ar_scripts_with_tilde.patch
new file mode 100644 (file)
index 0000000..b1cb8b7
--- /dev/null
@@ -0,0 +1,13 @@
+Index: b/binutils/arlex.l
+===================================================================
+--- a/binutils/arlex.l
++++ b/binutils/arlex.l
+@@ -78,7 +78,7 @@ int linenumber;
+ "("             { return '('; }
+ ")"             { return ')'; }
+ ","             { return ','; }
+-[A-Za-z0-9/\\$:.\-\_]+  {
++[A-Za-z0-9/\\$:.\-\_~]+  {    
+               yylval.name =  xstrdup (yytext);
+               return FILENAME;
+               }
diff --git a/patches/158_ld_system_root.patch b/patches/158_ld_system_root.patch
new file mode 100644 (file)
index 0000000..27c07a6
--- /dev/null
@@ -0,0 +1,42 @@
+Index: b/ld/configure.ac
+===================================================================
+--- a/ld/configure.ac
++++ b/ld/configure.ac
+@@ -56,7 +56,9 @@
+  *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
+  esac
++ if test "x$TARGET_SYSTEM_ROOT" != x/; then
+  TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
++ fi
+  use_sysroot=yes
+  if test "x$prefix" = xNONE; then
+Index: b/ld/configure
+===================================================================
+--- a/ld/configure
++++ b/ld/configure
+@@ -4283,7 +4283,9 @@
+  *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
+  esac
++ if test "x$TARGET_SYSTEM_ROOT" != x/; then
+  TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
++ fi
+  use_sysroot=yes
+  if test "x$prefix" = xNONE; then
+Index: b/ld/ldmain.c
+===================================================================
+--- a/ld/ldmain.c
++++ b/ld/ldmain.c
+@@ -226,8 +226,8 @@
+     {
+       if (*TARGET_SYSTEM_ROOT == 0)
+       {
+-        einfo ("%P%F: this linker was not configured to use sysroots\n");
+         ld_sysroot = "";
++        ld_canon_sysroot = "";
+       }
+       else
+       ld_canon_sysroot = lrealpath (ld_sysroot);
diff --git a/patches/161_gold_dummy_zoption.diff b/patches/161_gold_dummy_zoption.diff
new file mode 100644 (file)
index 0000000..29f29db
--- /dev/null
@@ -0,0 +1,25 @@
+# DP: let gold accept a dummy -z buildd-<random-string> option.
+
+--- a/gold/options.h
++++ b/gold/options.h
+@@ -1394,6 +1394,9 @@ class General_options
+                   options::TWO_DASHES, '\0',
+                   N_("Report unresolved symbols as errors"),
+                   NULL, true);
++  DEFINE_bool(buildd, options::DASH_Z, '\0', false,
++            N_("Dummy z option"),
++            NULL);
+   DEFINE_bool(wchar_size_warning, options::TWO_DASHES, '\0', true, NULL,
+             N_("(ARM only) Do not warn about objects with incompatible "
+--- a/gold/options.cc
++++ b/gold/options.cc
+@@ -965,6 +965,8 @@ parse_short_option(int argc, const char*
+     {
+       int dummy_i = 0;
+       const char* dash_z_arg = *arg;
++      if (strncmp(dash_z_arg, "buildd", strlen("buildd")) == 0)
++        *arg = "buildd";
+       retval = parse_long_option(1, arg, true, arg, &dummy_i);
+       if (retval == NULL)
+       usage(_("unknown -z option"), dash_z_arg);
diff --git a/patches/164_ld_doc_remove_xref.diff b/patches/164_ld_doc_remove_xref.diff
new file mode 100644 (file)
index 0000000..ac379f9
--- /dev/null
@@ -0,0 +1,14 @@
+# DP: In ld.texi, remove cross reference to BFD internals documentation.
+
+--- a/ld/ld.texi
++++ b/ld/ld.texi
+@@ -8629,7 +8629,8 @@ may be spent optimizing algorithms for a
+ One minor artifact of the BFD solution which you should bear in
+ mind is the potential for information loss.  There are two places where
+ useful information can be lost using the BFD mechanism: during
+-conversion and during output. @xref{BFD information loss}.
++conversion and during output. See BFD information loss in the BFD
++internal documentation.
+ @menu
+ * BFD outline::                 How it works: an outline of BFD
diff --git a/patches/aarch64-libpath.diff b/patches/aarch64-libpath.diff
new file mode 100644 (file)
index 0000000..ef43bf7
--- /dev/null
@@ -0,0 +1,27 @@
+Index: b/ld/emulparams/aarch64linux.sh
+===================================================================
+--- a/ld/emulparams/aarch64linux.sh
++++ b/ld/emulparams/aarch64linux.sh
+@@ -38,12 +38,15 @@
+ # Linux modifies the default library search path to first include
+ # a 64-bit specific directory.
+-case "$target" in
+-  aarch64*-linux*)
+-    case "$EMULATION_NAME" in
+-      aarch64linux*) LIBPATH_SUFFIX=64 ;;
+-    esac
+-    ;;
+-esac
++
++# not for multiarch systems ...
++
++#case "$target" in
++#  aarch64*-linux*)
++#    case "$EMULATION_NAME" in
++#      aarch64linux*) LIBPATH_SUFFIX=64 ;;
++#    esac
++#    ;;
++#esac
+ ELF_INTERPRETER_NAME=\"/lib/ld-linux-aarch64.so.1\"
diff --git a/patches/binutils-no-development.diff b/patches/binutils-no-development.diff
new file mode 100644 (file)
index 0000000..9eba2f0
--- /dev/null
@@ -0,0 +1,10 @@
+Index: b/bfd/development.sh
+===================================================================
+--- a/bfd/development.sh
++++ b/bfd/development.sh
+@@ -16,4 +16,4 @@
+ # along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ # Controls whether to enable development-mode features by default.
+-development=true
++development=false
diff --git a/patches/branch-no-development.diff b/patches/branch-no-development.diff
new file mode 100644 (file)
index 0000000..ecbe9c3
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/bfd/development.sh
++++ b/bfd/development.sh
+@@ -16,7 +16,7 @@
+ # along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ # Controls whether to enable development-mode features by default.
+-development=true
++development=false
+ # Indicate whether this is a release branch.
+ experimental=false
diff --git a/patches/branch-updates.diff b/patches/branch-updates.diff
new file mode 100644 (file)
index 0000000..f505751
--- /dev/null
@@ -0,0 +1,12772 @@
+# DP: updates from the binutils-2.35 branch
+
+# git diff 7e46a74aa3713c563940960e361e08defda019c2 f0b8ea109fbcd6ae6d226234428061f88ebfd3cc
+
+diff --git a/bfd/ChangeLog b/bfd/ChangeLog
+index 9fac12538a5..4c629d4be63 100644
+--- a/bfd/ChangeLog
++++ b/bfd/ChangeLog
+@@ -1,3 +1,97 @@
++2021-01-01  Alan Modra  <amodra@gmail.com>
++
++      Apply from master
++      2020-08-22  H.J. Lu  <hongjiu.lu@intel.com>
++      PR ld/26382
++      * elflink.c (elf_link_output_symstrtab): Keep only one '@' for
++      versioned symbols, which are defined in shared objects, in
++      symbol string table.
++
++2020-12-04  H.J. Lu  <hongjiu.lu@intel.com>
++
++      PR ld/27016
++      * elf64-x86-64.c (elf_x86_64_convert_load_reloc): Convert load
++      to mov only for GOTPCRELX relocations.
++
++2020-10-09  Alan Modra  <amodra@gmail.com>
++
++      * elf64-ppc.c (write_plt_relocs_for_local_syms): Don't do local
++      entry offset optimisation.
++
++2020-10-07  H.J. Lu  <hongjiu.lu@intel.com>
++
++      PR ld/26711
++      * elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Merge -z ibt
++      and -z shstk only with GNU_PROPERTY_X86_FEATURE_1_AND.
++
++2020-09-28  Alan Modra  <amodra@gmail.com>
++
++      PR 26656
++      * elf64-ppc.c (ppc_build_one_stub, ppc_size_one_stub): Check for
++      NULL stub_entry->h before calling is_tls_get_addr.
++
++2020-09-26  Alan Modra  <amodra@gmail.com>
++
++      * elf64-ppc.c (GLINK_PLTRESOLVE_SIZE): Depend on has_plt_localentry0.
++      (LD_R0_0R11, ADD_R11_R0_R11): Define.
++      (ppc64_elf_tls_setup): Disable params->plt_localentry0 when power10
++      code detected.
++      (ppc64_elf_size_stubs): Update __glink_PLTresolve eh_frame.
++      (ppc64_elf_build_stubs): Move r2 save to start of __glink_PLTresolve,
++      and only emit for has_plt_localentry0.  Don't use r2 in the stub.
++
++2020-09-24  Nick Clifton  <nickc@redhat.com>
++
++      Import from mainline:
++      2020-08-29  Nick Clifton  <nickc@redhat.com>
++
++      PR 26520
++      * dwarf2.c (scan_unit_for_symbols): Add member entries to the
++      variable table.
++
++2020-09-24  Alan Modra  <amodra@gmail.com>
++
++      PR 26656
++      * elf64-ppc.c (plt_stub_size): Add "odd" param.  Use it with
++      size_power10_offset rather than calculating from start of stub.
++      Add size for notoc tls_get_addr_opt stub.
++      (plt_stub_pad): Add "odd" param, pass to plt_stub_size.
++      (build_tls_get_addr_head, build_tls_get_addr_tail): New functions.
++      (build_tls_get_addr_stub): Delete.
++      (ppc_build_one_stub): Use a temp for htab->params->stub_bfd.
++      Emit notoc tls_get_addr_opt stub.  Move eh_frame code to
++      suit.  Adjust code to use bfd_tls_get_addr_head/tail in place
++      of build_tls_get_addr_stub.
++      (ppc_size_one_stub): Size notoc tls_get_addr_opt stub.
++      Adjust plt_stub_size and plt_stub_pad calls.  Correct "odd"
++      when padding stub.  Size eh_frame for notoc stub too.
++      Correct lr_restore value.
++      (ppc64_elf_relocate_section): Don't skip over first insn of
++      notoc tls_get_addr_opt stub.
++
++2020-09-24  Alan Modra  <amodra@gmail.com>
++
++      PR 26655
++      * elf64-ppc.c (ppc64_elf_func_desc_adjust): Rename to..
++      (ppc64_elf_edit): Call params->edit.
++      (ppc64_elf_tls_setup): Don't call _bfd_elf_tls_setup.  Return a
++      bfd_boolean.
++      * elf64-ppc.h (struct ppc64_elf_params): Add "edit".
++      (ppc64_elf_tls_setup): Update declaration.
++
++2020-09-24  Alan Modra  <amodra@gmail.com>
++
++      Apply from master
++      2020-08-13  Alan Modra  <amodra@gmail.com>
++      * elf64-ppc.h (struct ppc64_elf_params): Add no_pcrel_opt.
++      * elf64-ppc.c (ppc64_elf_relocate_section): Disable GOT reloc
++      optimizations when --no-toc-optimize.  Disable R_PPC64_PCREL_OPT
++      optimization when --no-pcrel-optimize.
++
++2020-09-19  Nick Clifton  <nickc@redhat.com>
++
++      * development.sh (development): Set to true.
++
+ 2020-09-19  Nick Clifton  <nickc@redhat.com>
+       This is the 2.35.1 point release.
+diff --git a/bfd/development.sh b/bfd/development.sh
+index 32be4b9460f..6bbed41d6d4 100644
+--- a/bfd/development.sh
++++ b/bfd/development.sh
+@@ -16,7 +16,7 @@
+ # along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ # Controls whether to enable development-mode features by default.
+-development=false
++development=true
+ # Indicate whether this is a release branch.
+ experimental=false
+diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
+index b8f0008a10d..977bf43a6a1 100644
+--- a/bfd/dwarf2.c
++++ b/bfd/dwarf2.c
+@@ -3404,7 +3404,8 @@ scan_unit_for_symbols (struct comp_unit *unit)
+       else
+       {
+         func = NULL;
+-        if (abbrev->tag == DW_TAG_variable)
++        if (abbrev->tag == DW_TAG_variable
++            || abbrev->tag == DW_TAG_member)
+           {
+             size_t amt = sizeof (struct varinfo);
+             var = (struct varinfo *) bfd_zalloc (abfd, amt);
+@@ -3516,7 +3517,7 @@ scan_unit_for_symbols (struct comp_unit *unit)
+                     spec_var = lookup_var_by_offset (attr.u.val,
+                                                      unit->variable_table);
+                     if (spec_var == NULL)
+-                      {       
++                      {
+                         _bfd_error_handler (_("DWARF error: could not find "
+                                               "variable specification "
+                                               "at offset %lx"),
+diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
+index 4bf37e1d981..ec8c85eba59 100644
+--- a/bfd/elf64-ppc.c
++++ b/bfd/elf64-ppc.c
+@@ -114,7 +114,7 @@ static bfd_vma opd_entry_value
+ #define elf_backend_adjust_dynamic_symbol     ppc64_elf_adjust_dynamic_symbol
+ #define elf_backend_hide_symbol                     ppc64_elf_hide_symbol
+ #define elf_backend_maybe_function_sym              ppc64_elf_maybe_function_sym
+-#define elf_backend_always_size_sections      ppc64_elf_func_desc_adjust
++#define elf_backend_always_size_sections      ppc64_elf_edit
+ #define elf_backend_size_dynamic_sections     ppc64_elf_size_dynamic_sections
+ #define elf_backend_hash_symbol                     ppc64_elf_hash_symbol
+ #define elf_backend_init_index_section              _bfd_elf_init_2_index_sections
+@@ -211,9 +211,10 @@ static bfd_vma opd_entry_value
+ #define PLD_R12_PC    0x04100000e5800000ULL
+ #define PNOP          0x0700000000000000ULL
+-/* __glink_PLTresolve stub instructions.  We enter with the index in R0.  */
++/* __glink_PLTresolve stub instructions.  We enter with the index in
++   R0 for ELFv1, and the address of a glink branch in R12 for ELFv2.  */
+ #define GLINK_PLTRESOLVE_SIZE(htab)                   \
+-  (8u + (htab->opd_abi ? 11 * 4 : 14 * 4))
++  (8u + (htab->opd_abi ? 11 * 4 : htab->has_plt_localentry0 ? 14 * 4 : 13 * 4))
+                                       /* 0:                           */
+                                       /*  .quad plt0-1f               */
+                                       /* __glink:                     */
+@@ -229,11 +230,14 @@ static bfd_vma opd_entry_value
+                                       /*  mtctr %12                   */
+                                       /*  ld %11,16(%11)              */
+                                       /*  bctr                        */
+-#define MFLR_R0               0x7c0802a6      /*  mflr %r0                    */
+-#define MTLR_R0               0x7c0803a6      /*  mtlr %r0                    */
+-#define SUB_R12_R12_R11       0x7d8b6050      /*  subf %r12,%r11,%r12         */
+-#define ADDI_R0_R12   0x380c0000      /*  addi %r0,%r12,0             */
+-#define SRDI_R0_R0_2  0x7800f082      /*  rldicl %r0,%r0,62,2         */
++
++#define MFLR_R0               0x7c0802a6      /* mflr %r0                     */
++#define MTLR_R0               0x7c0803a6      /* mtlr %r0                     */
++#define SUB_R12_R12_R11       0x7d8b6050      /* subf %r12,%r11,%r12          */
++#define ADDI_R0_R12   0x380c0000      /* addi %r0,%r12,0              */
++#define SRDI_R0_R0_2  0x7800f082      /* rldicl %r0,%r0,62,2          */
++#define LD_R0_0R11    0xe80b0000      /* ld %r0,0(%r11)               */
++#define ADD_R11_R0_R11        0x7d605a14      /* add %r11,%r0,%r11            */
+ /* Pad with this.  */
+ #define NOP           0x60000000
+@@ -6340,13 +6344,13 @@ static const struct sfpr_def_parms save_res_funcs[] =
+   };
+ /* Called near the start of bfd_elf_size_dynamic_sections.  We use
+-   this hook to a) provide some gcc support functions, and b) transfer
+-   dynamic linking information gathered so far on function code symbol
+-   entries, to their corresponding function descriptor symbol entries.  */
++   this hook to a) run the edit functions in this file, b) provide
++   some gcc support functions, and c) transfer dynamic linking
++   information gathered so far on function code symbol entries, to
++   their corresponding function descriptor symbol entries.  */
+ static bfd_boolean
+-ppc64_elf_func_desc_adjust (bfd *obfd ATTRIBUTE_UNUSED,
+-                          struct bfd_link_info *info)
++ppc64_elf_edit (bfd *obfd ATTRIBUTE_UNUSED, struct bfd_link_info *info)
+ {
+   struct ppc_link_hash_table *htab;
+@@ -6354,6 +6358,9 @@ ppc64_elf_func_desc_adjust (bfd *obfd ATTRIBUTE_UNUSED,
+   if (htab == NULL)
+     return FALSE;
++  /* Call back into the linker, which then runs the edit functions.  */
++  htab->params->edit ();
++
+   /* Provide any missing _save* and _rest* functions.  */
+   if (htab->sfpr != NULL)
+     {
+@@ -7694,9 +7701,11 @@ ppc64_elf_inline_plt (struct bfd_link_info *info)
+   return TRUE;
+ }
+-/* Set htab->tls_get_addr and call the generic ELF tls_setup function.  */
++/* Set htab->tls_get_addr and various other info specific to TLS.
++   This needs to run before dynamic symbols are processed in
++   bfd_elf_size_dynamic_sections.  */
+-asection *
++bfd_boolean
+ ppc64_elf_tls_setup (struct bfd_link_info *info)
+ {
+   struct ppc_link_hash_table *htab;
+@@ -7704,7 +7713,7 @@ ppc64_elf_tls_setup (struct bfd_link_info *info)
+   htab = ppc_hash_table (info);
+   if (htab == NULL)
+-    return NULL;
++    return FALSE;
+   if (abiversion (info->output_bfd) == 1)
+     htab->opd_abi = 1;
+@@ -7730,6 +7739,19 @@ ppc64_elf_tls_setup (struct bfd_link_info *info)
+      --plt-localentry can cause trouble.  */
+   if (htab->params->plt_localentry0 < 0)
+     htab->params->plt_localentry0 = 0;
++  if (htab->params->plt_localentry0 && htab->has_power10_relocs)
++    {
++      /* The issue is that __glink_PLTresolve saves r2, which is done
++       because glibc ld.so _dl_runtime_resolve restores r2 to support
++       a glibc plt call optimisation where global entry code is
++       skipped on calls that resolve to the same binary.  The
++       __glink_PLTresolve save of r2 is incompatible with code
++       making tail calls, because the tail call might go via the
++       resolver and thus overwrite the proper saved r2.  */
++      _bfd_error_handler (_("warning: --plt-localentry is incompatible with "
++                          "power10 pc-relative code"));
++      htab->params->plt_localentry0 = 0;
++    }
+   if (htab->params->plt_localentry0
+       && elf_link_hash_lookup (&htab->elf, "GLIBC_2.26",
+                              FALSE, FALSE, FALSE) == NULL)
+@@ -7826,7 +7848,7 @@ ppc64_elf_tls_setup (struct bfd_link_info *info)
+                     _bfd_elf_strtab_delref (elf_hash_table (info)->dynstr,
+                                             opt_fd->dynstr_index);
+                     if (!bfd_elf_link_record_dynamic_symbol (info, opt_fd))
+-                      return NULL;
++                      return FALSE;
+                   }
+                 if (tga_fd != NULL)
+                   {
+@@ -7885,7 +7907,7 @@ ppc64_elf_tls_setup (struct bfd_link_info *info)
+       && htab->params->no_tls_get_addr_regsave == -1)
+     htab->params->no_tls_get_addr_regsave = 0;
+-  return _bfd_elf_tls_setup (info->output_bfd, info);
++  return TRUE;
+ }
+ /* Return TRUE iff REL is a branch reloc with a global symbol matching
+@@ -10834,62 +10856,60 @@ eh_advance_size (unsigned int delta)
+ static inline unsigned int
+ plt_stub_size (struct ppc_link_hash_table *htab,
+              struct ppc_stub_hash_entry *stub_entry,
+-             bfd_vma off)
++             bfd_vma off,
++             unsigned int odd)
+ {
+   unsigned size;
+   if (stub_entry->stub_type >= ppc_stub_plt_call_notoc)
+     {
+       if (htab->params->power10_stubs != 0)
+-      {
+-        bfd_vma start = (stub_entry->stub_offset
+-                         + stub_entry->group->stub_sec->output_offset
+-                         + stub_entry->group->stub_sec->output_section->vma);
+-        if (stub_entry->stub_type > ppc_stub_plt_call_notoc)
+-          start += 4;
+-        size = 8 + size_power10_offset (off, start & 4);
+-      }
++      size = 8 + size_power10_offset (off, odd);
+       else
+       size = 8 + size_offset (off - 8);
+       if (stub_entry->stub_type > ppc_stub_plt_call_notoc)
+       size += 4;
+-      return size;
+     }
+-
+-  size = 12;
+-  if (ALWAYS_EMIT_R2SAVE
+-      || stub_entry->stub_type == ppc_stub_plt_call_r2save)
+-    size += 4;
+-  if (PPC_HA (off) != 0)
+-    size += 4;
+-  if (htab->opd_abi)
++  else
+     {
+-      size += 4;
+-      if (htab->params->plt_static_chain)
++      size = 12;
++      if (ALWAYS_EMIT_R2SAVE
++        || stub_entry->stub_type == ppc_stub_plt_call_r2save)
+       size += 4;
+-      if (htab->params->plt_thread_safe
+-        && htab->elf.dynamic_sections_created
+-        && stub_entry->h != NULL
+-        && stub_entry->h->elf.dynindx != -1)
+-      size += 8;
+-      if (PPC_HA (off + 8 + 8 * htab->params->plt_static_chain) != PPC_HA (off))
++      if (PPC_HA (off) != 0)
+       size += 4;
++      if (htab->opd_abi)
++      {
++        size += 4;
++        if (htab->params->plt_static_chain)
++          size += 4;
++        if (htab->params->plt_thread_safe
++            && htab->elf.dynamic_sections_created
++            && stub_entry->h != NULL
++            && stub_entry->h->elf.dynindx != -1)
++          size += 8;
++        if (PPC_HA (off + 8 + 8 * htab->params->plt_static_chain)
++            != PPC_HA (off))
++          size += 4;
++      }
+     }
+   if (stub_entry->h != NULL
+       && is_tls_get_addr (&stub_entry->h->elf, htab)
+       && htab->params->tls_get_addr_opt)
+     {
+-      if (htab->params->no_tls_get_addr_regsave)
++      if (!htab->params->no_tls_get_addr_regsave)
+       {
+-        size += 7 * 4;
+-        if (stub_entry->stub_type == ppc_stub_plt_call_r2save)
+-          size += 6 * 4;
++        size += 30 * 4;
++        if (stub_entry->stub_type == ppc_stub_plt_call_r2save
++            || stub_entry->stub_type == ppc_stub_plt_call_both)
++          size += 4;
+       }
+       else
+       {
+-        size += 30 * 4;
+-        if (stub_entry->stub_type == ppc_stub_plt_call_r2save)
+-          size += 4;
++        size += 7 * 4;
++        if (stub_entry->stub_type == ppc_stub_plt_call_r2save
++            || stub_entry->stub_type == ppc_stub_plt_call_both)
++          size += 6 * 4;
+       }
+     }
+   return size;
+@@ -10904,7 +10924,8 @@ plt_stub_size (struct ppc_link_hash_table *htab,
+ static inline unsigned int
+ plt_stub_pad (struct ppc_link_hash_table *htab,
+             struct ppc_stub_hash_entry *stub_entry,
+-            bfd_vma plt_off)
++            bfd_vma plt_off,
++            unsigned int odd)
+ {
+   int stub_align;
+   unsigned stub_size;
+@@ -10919,7 +10940,7 @@ plt_stub_pad (struct ppc_link_hash_table *htab,
+     }
+   stub_align = 1 << -htab->params->plt_stub_align;
+-  stub_size = plt_stub_size (htab, stub_entry, plt_off);
++  stub_size = plt_stub_size (htab, stub_entry, plt_off, odd);
+   if (((stub_off + stub_size - 1) & -stub_align) - (stub_off & -stub_align)
+       > ((stub_size - 1) & -stub_align))
+     return stub_align - (stub_off & (stub_align - 1));
+@@ -11114,14 +11135,12 @@ build_plt_stub (struct ppc_link_hash_table *htab,
+ #define MR_R3_R0      0x7c030378
+ #define BCTRL         0x4e800421
+-static inline bfd_byte *
+-build_tls_get_addr_stub (struct ppc_link_hash_table *htab,
++static bfd_byte *
++build_tls_get_addr_head (struct ppc_link_hash_table *htab,
+                        struct ppc_stub_hash_entry *stub_entry,
+-                       bfd_byte *p, bfd_vma offset, Elf_Internal_Rela *r)
++                       bfd_byte *p)
+ {
+   bfd *obfd = htab->params->stub_bfd;
+-  bfd_byte *loc = p;
+-  unsigned int i;
+   bfd_put_32 (obfd, LD_R0_0R3 + 0, p),                p += 4;
+   bfd_put_32 (obfd, LD_R12_0R3 + 8, p),               p += 4;
+@@ -11130,21 +11149,43 @@ build_tls_get_addr_stub (struct ppc_link_hash_table *htab,
+   bfd_put_32 (obfd, ADD_R3_R12_R13, p),               p += 4;
+   bfd_put_32 (obfd, BEQLR, p),                        p += 4;
+   bfd_put_32 (obfd, MR_R3_R0, p),             p += 4;
+-  if (htab->params->no_tls_get_addr_regsave)
+-    {
+-      if (r != NULL)
+-      r[0].r_offset += 7 * 4;
+-      if (stub_entry->stub_type != ppc_stub_plt_call_r2save)
+-      return build_plt_stub (htab, stub_entry, p, offset, r);
++  if (!htab->params->no_tls_get_addr_regsave)
++    p = tls_get_addr_prologue (obfd, p, htab);
++  else if (stub_entry->stub_type == ppc_stub_plt_call_r2save
++         || stub_entry->stub_type == ppc_stub_plt_call_both)
++    {
+       bfd_put_32 (obfd, MFLR_R0, p);
+       p += 4;
+       bfd_put_32 (obfd, STD_R0_0R1 + STK_LINKER (htab), p);
+       p += 4;
++    }
++  return p;
++}
+-      if (r != NULL)
+-      r[0].r_offset += 2 * 4;
+-      p = build_plt_stub (htab, stub_entry, p, offset, r);
++static bfd_byte *
++build_tls_get_addr_tail (struct ppc_link_hash_table *htab,
++                       struct ppc_stub_hash_entry *stub_entry,
++                       bfd_byte *p,
++                       bfd_byte *loc)
++{
++  bfd *obfd = htab->params->stub_bfd;
++
++  if (!htab->params->no_tls_get_addr_regsave)
++    {
++      bfd_put_32 (obfd, BCTRL, p - 4);
++
++      if (stub_entry->stub_type == ppc_stub_plt_call_r2save
++        || stub_entry->stub_type == ppc_stub_plt_call_both)
++      {
++        bfd_put_32 (obfd, LD_R2_0R1 + STK_TOC (htab), p);
++        p += 4;
++      }
++      p = tls_get_addr_epilogue (obfd, p, htab);
++    }
++  else if (stub_entry->stub_type == ppc_stub_plt_call_r2save
++         || stub_entry->stub_type == ppc_stub_plt_call_both)
++    {
+       bfd_put_32 (obfd, BCTRL, p - 4);
+       bfd_put_32 (obfd, LD_R2_0R1 + STK_TOC (htab), p);
+@@ -11156,24 +11197,6 @@ build_tls_get_addr_stub (struct ppc_link_hash_table *htab,
+       bfd_put_32 (obfd, BLR, p);
+       p += 4;
+     }
+-  else
+-    {
+-      p = tls_get_addr_prologue (obfd, p, htab);
+-
+-      if (r != NULL)
+-      r[0].r_offset += 18 * 4;
+-
+-      p = build_plt_stub (htab, stub_entry, p, offset, r);
+-      bfd_put_32 (obfd, BCTRL, p - 4);
+-
+-      if (stub_entry->stub_type == ppc_stub_plt_call_r2save)
+-      {
+-        bfd_put_32 (obfd, LD_R2_0R1 + STK_TOC (htab), p);
+-        p += 4;
+-      }
+-
+-      p = tls_get_addr_epilogue (obfd, p, htab);
+-    }
+   if (htab->glink_eh_frame != NULL
+       && htab->glink_eh_frame->size != 0)
+@@ -11182,21 +11205,11 @@ build_tls_get_addr_stub (struct ppc_link_hash_table *htab,
+       base = htab->glink_eh_frame->contents + stub_entry->group->eh_base + 17;
+       eh = base + stub_entry->group->eh_size;
+-      if (htab->params->no_tls_get_addr_regsave)
+-      {
+-        unsigned int lr_used, delta;
+-        lr_used = stub_entry->stub_offset + (p - 20 - loc);
+-        delta = lr_used - stub_entry->group->lr_restore;
+-        stub_entry->group->lr_restore = lr_used + 16;
+-        eh = eh_advance (htab->elf.dynobj, eh, delta);
+-        *eh++ = DW_CFA_offset_extended_sf;
+-        *eh++ = 65;
+-        *eh++ = -(STK_LINKER (htab) / 8) & 0x7f;
+-        *eh++ = DW_CFA_advance_loc + 4;
+-      }
+-      else
++
++      if (!htab->params->no_tls_get_addr_regsave)
+       {
+-        unsigned int cfa_updt, delta;
++        unsigned int cfa_updt, delta, i;
++
+         /* After the bctrl, lr has been modified so we need to emit
+            .eh_frame info saying the return address is on the stack.  In
+            fact we must put the EH info at or before the call rather
+@@ -11235,10 +11248,27 @@ build_tls_get_addr_stub (struct ppc_link_hash_table *htab,
+         for (i = 4; i < 12; i++)
+           *eh++ = DW_CFA_restore + i;
+         *eh++ = DW_CFA_advance_loc + 2;
++        *eh++ = DW_CFA_restore_extended;
++        *eh++ = 65;
++        stub_entry->group->eh_size = eh - base;
++      }
++      else if (stub_entry->stub_type == ppc_stub_plt_call_r2save
++             || stub_entry->stub_type == ppc_stub_plt_call_both)
++      {
++        unsigned int lr_used, delta;
++
++        lr_used = stub_entry->stub_offset + (p - 20 - loc);
++        delta = lr_used - stub_entry->group->lr_restore;
++        stub_entry->group->lr_restore = lr_used + 16;
++        eh = eh_advance (htab->elf.dynobj, eh, delta);
++        *eh++ = DW_CFA_offset_extended_sf;
++        *eh++ = 65;
++        *eh++ = -(STK_LINKER (htab) / 8) & 0x7f;
++        *eh++ = DW_CFA_advance_loc + 4;
++        *eh++ = DW_CFA_restore_extended;
++        *eh++ = 65;
++        stub_entry->group->eh_size = eh - base;
+       }
+-      *eh++ = DW_CFA_restore_extended;
+-      *eh++ = 65;
+-      stub_entry->group->eh_size = eh - base;
+     }
+   return p;
+ }
+@@ -11372,6 +11402,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+   struct ppc_branch_hash_entry *br_entry;
+   struct bfd_link_info *info;
+   struct ppc_link_hash_table *htab;
++  bfd *obfd;
+   bfd_byte *loc;
+   bfd_byte *p, *relp;
+   bfd_vma targ, off;
+@@ -11379,6 +11410,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+   asection *plt;
+   int num_rel;
+   int odd;
++  bfd_boolean is_tga;
+   /* Massage our args to the form they really have.  */
+   stub_entry = (struct ppc_stub_hash_entry *) gen_entry;
+@@ -11428,6 +11460,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+       off = targ - off;
+       p = loc;
++      obfd = htab->params->stub_bfd;
+       if (stub_entry->stub_type == ppc_stub_long_branch_r2off)
+       {
+         bfd_vma r2off = get_r2off (info, stub_entry);
+@@ -11437,23 +11470,21 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+             htab->stub_error = TRUE;
+             return FALSE;
+           }
+-        bfd_put_32 (htab->params->stub_bfd, STD_R2_0R1 + STK_TOC (htab), p);
++        bfd_put_32 (obfd, STD_R2_0R1 + STK_TOC (htab), p);
+         p += 4;
+         if (PPC_HA (r2off) != 0)
+           {
+-            bfd_put_32 (htab->params->stub_bfd,
+-                        ADDIS_R2_R2 | PPC_HA (r2off), p);
++            bfd_put_32 (obfd, ADDIS_R2_R2 | PPC_HA (r2off), p);
+             p += 4;
+           }
+         if (PPC_LO (r2off) != 0)
+           {
+-            bfd_put_32 (htab->params->stub_bfd,
+-                        ADDI_R2_R2 | PPC_LO (r2off), p);
++            bfd_put_32 (obfd, ADDI_R2_R2 | PPC_LO (r2off), p);
+             p += 4;
+           }
+         off -= p - loc;
+       }
+-      bfd_put_32 (htab->params->stub_bfd, B_DOT | (off & 0x3fffffc), p);
++      bfd_put_32 (obfd, B_DOT | (off & 0x3fffffc), p);
+       p += 4;
+       if (off + (1 << 25) >= (bfd_vma) (1 << 26))
+@@ -11579,19 +11610,17 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+       }
+       p = loc;
++      obfd = htab->params->stub_bfd;
+       if (stub_entry->stub_type != ppc_stub_plt_branch_r2off)
+       {
+         if (PPC_HA (off) != 0)
+           {
+-            bfd_put_32 (htab->params->stub_bfd,
+-                        ADDIS_R12_R2 | PPC_HA (off), p);
++            bfd_put_32 (obfd, ADDIS_R12_R2 | PPC_HA (off), p);
+             p += 4;
+-            bfd_put_32 (htab->params->stub_bfd,
+-                        LD_R12_0R12 | PPC_LO (off), p);
++            bfd_put_32 (obfd, LD_R12_0R12 | PPC_LO (off), p);
+           }
+         else
+-          bfd_put_32 (htab->params->stub_bfd,
+-                      LD_R12_0R2 | PPC_LO (off), p);
++          bfd_put_32 (obfd, LD_R12_0R2 | PPC_LO (off), p);
+       }
+       else
+       {
+@@ -11603,36 +11632,32 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+             return FALSE;
+           }
+-        bfd_put_32 (htab->params->stub_bfd, STD_R2_0R1 + STK_TOC (htab), p);
++        bfd_put_32 (obfd, STD_R2_0R1 + STK_TOC (htab), p);
+         p += 4;
+         if (PPC_HA (off) != 0)
+           {
+-            bfd_put_32 (htab->params->stub_bfd,
+-                        ADDIS_R12_R2 | PPC_HA (off), p);
++            bfd_put_32 (obfd, ADDIS_R12_R2 | PPC_HA (off), p);
+             p += 4;
+-            bfd_put_32 (htab->params->stub_bfd,
+-                        LD_R12_0R12 | PPC_LO (off), p);
++            bfd_put_32 (obfd, LD_R12_0R12 | PPC_LO (off), p);
+           }
+         else
+-          bfd_put_32 (htab->params->stub_bfd, LD_R12_0R2 | PPC_LO (off), p);
++          bfd_put_32 (obfd, LD_R12_0R2 | PPC_LO (off), p);
+         if (PPC_HA (r2off) != 0)
+           {
+             p += 4;
+-            bfd_put_32 (htab->params->stub_bfd,
+-                        ADDIS_R2_R2 | PPC_HA (r2off), p);
++            bfd_put_32 (obfd, ADDIS_R2_R2 | PPC_HA (r2off), p);
+           }
+         if (PPC_LO (r2off) != 0)
+           {
+             p += 4;
+-            bfd_put_32 (htab->params->stub_bfd,
+-                        ADDI_R2_R2 | PPC_LO (r2off), p);
++            bfd_put_32 (obfd, ADDI_R2_R2 | PPC_LO (r2off), p);
+           }
+       }
+       p += 4;
+-      bfd_put_32 (htab->params->stub_bfd, MTCTR_R12, p);
++      bfd_put_32 (obfd, MTCTR_R12, p);
+       p += 4;
+-      bfd_put_32 (htab->params->stub_bfd, BCTR, p);
++      bfd_put_32 (obfd, BCTR, p);
+       p += 4;
+       break;
+@@ -11646,12 +11671,23 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+       off = (stub_entry->stub_offset
+            + stub_entry->group->stub_sec->output_offset
+            + stub_entry->group->stub_sec->output_section->vma);
++      obfd = htab->params->stub_bfd;
++      is_tga = ((stub_entry->stub_type == ppc_stub_plt_call_notoc
++               || stub_entry->stub_type == ppc_stub_plt_call_both)
++              && stub_entry->h != NULL
++              && is_tls_get_addr (&stub_entry->h->elf, htab)
++              && htab->params->tls_get_addr_opt);
++      if (is_tga)
++      {
++        p = build_tls_get_addr_head (htab, stub_entry, p);
++        off += p - loc;
++      }
+       if (stub_entry->stub_type == ppc_stub_long_branch_both
+         || stub_entry->stub_type == ppc_stub_plt_branch_both
+         || stub_entry->stub_type == ppc_stub_plt_call_both)
+       {
+         off += 4;
+-        bfd_put_32 (htab->params->stub_bfd, STD_R2_0R1 + STK_TOC (htab), p);
++        bfd_put_32 (obfd, STD_R2_0R1 + STK_TOC (htab), p);
+         p += 4;
+       }
+       if (stub_entry->stub_type >= ppc_stub_plt_call_notoc)
+@@ -11684,17 +11720,39 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+       if (htab->params->power10_stubs != 0)
+       {
+         bfd_boolean load = stub_entry->stub_type >= ppc_stub_plt_call_notoc;
+-        p = build_power10_offset (htab->params->stub_bfd, p, off, odd, load);
++        p = build_power10_offset (obfd, p, off, odd, load);
+       }
+       else
+       {
++        if (htab->glink_eh_frame != NULL
++            && htab->glink_eh_frame->size != 0)
++          {
++            bfd_byte *base, *eh;
++            unsigned int lr_used, delta;
++
++            base = (htab->glink_eh_frame->contents
++                    + stub_entry->group->eh_base + 17);
++            eh = base + stub_entry->group->eh_size;
++            lr_used = stub_entry->stub_offset + (p - loc) + 8;
++            delta = lr_used - stub_entry->group->lr_restore;
++            stub_entry->group->lr_restore = lr_used + 8;
++            eh = eh_advance (htab->elf.dynobj, eh, delta);
++            *eh++ = DW_CFA_register;
++            *eh++ = 65;
++            *eh++ = 12;
++            *eh++ = DW_CFA_advance_loc + 2;
++            *eh++ = DW_CFA_restore_extended;
++            *eh++ = 65;
++            stub_entry->group->eh_size = eh - base;
++          }
++
+         /* The notoc stubs calculate their target (either a PLT entry or
+            the global entry point of a function) relative to the PC
+            returned by the "bcl" two instructions past the start of the
+            sequence emitted by build_offset.  The offset is therefore 8
+            less than calculated from the start of the sequence.  */
+         off -= 8;
+-        p = build_offset (htab->params->stub_bfd, p, off,
++        p = build_offset (obfd, p, off,
+                           stub_entry->stub_type >= ppc_stub_plt_call_notoc);
+       }
+@@ -11706,17 +11764,19 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+                 + stub_entry->group->stub_sec->output_offset
+                 + stub_entry->group->stub_sec->output_section->vma
+                 + (p - loc));
+-        bfd_put_32 (htab->params->stub_bfd,
+-                    B_DOT | ((targ - from) & 0x3fffffc), p);
++        bfd_put_32 (obfd, B_DOT | ((targ - from) & 0x3fffffc), p);
+       }
+       else
+       {
+-        bfd_put_32 (htab->params->stub_bfd, MTCTR_R12, p);
++        bfd_put_32 (obfd, MTCTR_R12, p);
+         p += 4;
+-        bfd_put_32 (htab->params->stub_bfd, BCTR, p);
++        bfd_put_32 (obfd, BCTR, p);
+       }
+       p += 4;
++      if (is_tga)
++      p = build_tls_get_addr_tail (htab, stub_entry, p, loc);
++
+       if (info->emitrelocations)
+       {
+         bfd_vma roff = relp - stub_entry->group->stub_sec->contents;
+@@ -11747,33 +11807,6 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+               return FALSE;
+           }
+       }
+-
+-      if (htab->params->power10_stubs == 0
+-        && htab->glink_eh_frame != NULL
+-        && htab->glink_eh_frame->size != 0)
+-      {
+-        bfd_byte *base, *eh;
+-        unsigned int lr_used, delta;
+-
+-        base = (htab->glink_eh_frame->contents
+-                + stub_entry->group->eh_base + 17);
+-        eh = base + stub_entry->group->eh_size;
+-        lr_used = stub_entry->stub_offset + 8;
+-        if (stub_entry->stub_type == ppc_stub_long_branch_both
+-            || stub_entry->stub_type == ppc_stub_plt_branch_both
+-            || stub_entry->stub_type == ppc_stub_plt_call_both)
+-          lr_used += 4;
+-        delta = lr_used - stub_entry->group->lr_restore;
+-        stub_entry->group->lr_restore = lr_used + 8;
+-        eh = eh_advance (htab->elf.dynobj, eh, delta);
+-        *eh++ = DW_CFA_register;
+-        *eh++ = 65;
+-        *eh++ = 12;
+-        *eh++ = DW_CFA_advance_loc + 2;
+-        *eh++ = DW_CFA_restore_extended;
+-        *eh++ = 65;
+-        stub_entry->group->eh_size = eh - base;
+-      }
+       break;
+     case ppc_stub_plt_call:
+@@ -11842,12 +11875,20 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+           r[0].r_offset += 2;
+         r[0].r_addend = targ;
+       }
+-      if (stub_entry->h != NULL
+-        && is_tls_get_addr (&stub_entry->h->elf, htab)
+-        && htab->params->tls_get_addr_opt)
+-      p = build_tls_get_addr_stub (htab, stub_entry, loc, off, r);
+-      else
+-      p = build_plt_stub (htab, stub_entry, loc, off, r);
++      p = loc;
++      obfd = htab->params->stub_bfd;
++      is_tga = (stub_entry->h != NULL
++              && is_tls_get_addr (&stub_entry->h->elf, htab)
++              && htab->params->tls_get_addr_opt);
++      if (is_tga)
++      {
++        p = build_tls_get_addr_head (htab, stub_entry, p);
++        if (r != NULL)
++          r[0].r_offset += p - loc;
++      }
++      p = build_plt_stub (htab, stub_entry, p, off, r);
++      if (is_tga)
++      p = build_tls_get_addr_tail (htab, stub_entry, p, loc);
+       break;
+     case ppc_stub_save_res:
+@@ -12143,11 +12184,19 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+     case ppc_stub_plt_call_notoc:
+     case ppc_stub_plt_call_both:
+-      off = (stub_entry->stub_offset
+-           + stub_entry->group->stub_sec->output_offset
+-           + stub_entry->group->stub_sec->output_section->vma);
++      lr_used = 0;
++      if (stub_entry->h != NULL
++        && is_tls_get_addr (&stub_entry->h->elf, htab)
++        && htab->params->tls_get_addr_opt)
++      {
++        lr_used += 7 * 4;
++        if (!htab->params->no_tls_get_addr_regsave)
++          lr_used += 11 * 4;
++        else if (stub_entry->stub_type == ppc_stub_plt_call_both)
++          lr_used += 2 * 4;
++      }
+       if (stub_entry->stub_type == ppc_stub_plt_call_both)
+-      off += 4;
++      lr_used += 4;
+       targ = stub_entry->plt_ent->plt.offset & ~1;
+       if (targ >= (bfd_vma) -2)
+       abort ();
+@@ -12163,16 +12212,21 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+           plt = htab->pltlocal;
+       }
+       targ += plt->output_offset + plt->output_section->vma;
++      off = (stub_entry->stub_offset
++           + stub_entry->group->stub_sec->output_offset
++           + stub_entry->group->stub_sec->output_section->vma
++           + lr_used);
+       odd = off & 4;
+       off = targ - off;
+       if (htab->params->plt_stub_align != 0)
+       {
+-        unsigned pad = plt_stub_pad (htab, stub_entry, off);
++        unsigned pad = plt_stub_pad (htab, stub_entry, off, odd);
+         stub_entry->group->stub_sec->size += pad;
+         stub_entry->stub_offset = stub_entry->group->stub_sec->size;
+         off -= pad;
++        odd ^= pad & 4;
+       }
+       if (info->emitrelocations)
+@@ -12186,15 +12240,13 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+         stub_entry->group->stub_sec->flags |= SEC_RELOC;
+       }
+-      size = plt_stub_size (htab, stub_entry, off);
++      size = plt_stub_size (htab, stub_entry, off, odd);
+       if (htab->params->power10_stubs == 0)
+       {
+         /* After the bcl, lr has been modified so we need to emit
+            .eh_frame info saying the return address is in r12.  */
+-        lr_used = stub_entry->stub_offset + 8;
+-        if (stub_entry->stub_type == ppc_stub_plt_call_both)
+-          lr_used += 4;
++        lr_used += stub_entry->stub_offset + 8;
+         /* The eh_frame info will consist of a DW_CFA_advance_loc or
+            variant, DW_CFA_register, 65, 12, DW_CFA_advance_loc+2,
+            DW_CFA_restore_extended 65.  */
+@@ -12202,6 +12254,30 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+         stub_entry->group->eh_size += eh_advance_size (delta) + 6;
+         stub_entry->group->lr_restore = lr_used + 8;
+       }
++      if ((stub_entry->stub_type == ppc_stub_plt_call_notoc
++         || stub_entry->stub_type == ppc_stub_plt_call_both)
++        && stub_entry->h != NULL
++        && is_tls_get_addr (&stub_entry->h->elf, htab)
++        && htab->params->tls_get_addr_opt)
++      {
++        if (!htab->params->no_tls_get_addr_regsave)
++          {
++            unsigned int cfa_updt = stub_entry->stub_offset + 18 * 4;
++            delta = cfa_updt - stub_entry->group->lr_restore;
++            stub_entry->group->eh_size += eh_advance_size (delta);
++            stub_entry->group->eh_size += htab->opd_abi ? 36 : 35;
++            stub_entry->group->lr_restore
++              = stub_entry->stub_offset + size - 4;
++          }
++        else if (stub_entry->stub_type == ppc_stub_plt_call_both)
++          {
++            lr_used = stub_entry->stub_offset + size - 20;
++            delta = lr_used - stub_entry->group->lr_restore;
++            stub_entry->group->eh_size += eh_advance_size (delta) + 6;
++            stub_entry->group->lr_restore
++              = stub_entry->stub_offset + size - 4;
++          }
++      }
+       break;
+     case ppc_stub_plt_call:
+@@ -12227,7 +12303,7 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+       if (htab->params->plt_stub_align != 0)
+       {
+-        unsigned pad = plt_stub_pad (htab, stub_entry, off);
++        unsigned pad = plt_stub_pad (htab, stub_entry, off, 0);
+         stub_entry->group->stub_sec->size += pad;
+         stub_entry->stub_offset = stub_entry->group->stub_sec->size;
+@@ -12244,14 +12320,22 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+         stub_entry->group->stub_sec->flags |= SEC_RELOC;
+       }
+-      size = plt_stub_size (htab, stub_entry, off);
++      size = plt_stub_size (htab, stub_entry, off, 0);
+       if (stub_entry->h != NULL
+         && is_tls_get_addr (&stub_entry->h->elf, htab)
+         && htab->params->tls_get_addr_opt
+         && stub_entry->stub_type == ppc_stub_plt_call_r2save)
+       {
+-        if (htab->params->no_tls_get_addr_regsave)
++        if (!htab->params->no_tls_get_addr_regsave)
++          {
++            /* Adjustments to r1 need to be described.  */
++            unsigned int cfa_updt = stub_entry->stub_offset + 18 * 4;
++            delta = cfa_updt - stub_entry->group->lr_restore;
++            stub_entry->group->eh_size += eh_advance_size (delta);
++            stub_entry->group->eh_size += htab->opd_abi ? 36 : 35;
++          }
++        else
+           {
+             lr_used = stub_entry->stub_offset + size - 20;
+             /* The eh_frame info will consist of a DW_CFA_advance_loc
+@@ -12260,15 +12344,7 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+             delta = lr_used - stub_entry->group->lr_restore;
+             stub_entry->group->eh_size += eh_advance_size (delta) + 6;
+           }
+-        else
+-          {
+-            /* Adjustments to r1 need to be described.  */
+-            unsigned int cfa_updt = stub_entry->stub_offset + 18 * 4;
+-            delta = cfa_updt - stub_entry->group->lr_restore;
+-            stub_entry->group->eh_size += eh_advance_size (delta);
+-            stub_entry->group->eh_size += htab->opd_abi ? 36 : 35;
+-          }
+-        stub_entry->group->lr_restore = size - 4;
++        stub_entry->group->lr_restore = stub_entry->stub_offset + size - 4;
+       }
+       break;
+@@ -13814,11 +13890,11 @@ ppc64_elf_size_stubs (struct bfd_link_info *info)
+         /* Augmentation.  */
+         p += 1;
+-        *p++ = DW_CFA_advance_loc + 1;
++        *p++ = DW_CFA_advance_loc + (htab->has_plt_localentry0 ? 3 : 2);
+         *p++ = DW_CFA_register;
+         *p++ = 65;
+         *p++ = htab->opd_abi ? 12 : 0;
+-        *p++ = DW_CFA_advance_loc + (htab->opd_abi ? 5 : 7);
++        *p++ = DW_CFA_advance_loc + (htab->opd_abi ? 4 : 2);
+         *p++ = DW_CFA_restore_extended;
+         *p++ = 65;
+         p += ((24 + align - 1) & -align) - 24;
+@@ -14179,8 +14255,6 @@ write_plt_relocs_for_local_syms (struct bfd_link_info *info)
+               }
+             val = sym->st_value + ent->addend;
+-            if (ELF_ST_TYPE (sym->st_info) != STT_GNU_IFUNC)
+-              val += PPC64_LOCAL_ENTRY_OFFSET (sym->st_other);
+             if (sym_sec != NULL && sym_sec->output_section != NULL)
+               val += sym_sec->output_offset + sym_sec->output_section->vma;
+@@ -14414,23 +14488,60 @@ ppc64_elf_build_stubs (struct bfd_link_info *info,
+       }
+       else
+       {
++        unsigned int insn;
++
++        /* 0:
++           .  .quad plt0-1f           # plt0 entry relative to 1:
++           #
++           # We get here with r12 initially @ a glink branch
++           # Load the address of _dl_runtime_resolve from plt0 and
++           # jump to it, with r0 set to the index of the PLT entry
++           # to be resolved and r11 the link map.
++           __glink_PLTresolve:
++           .  std %r2,24(%r1)         # optional
++           .  mflr %r0
++           .  bcl 20,31,1f
++           1:
++           .  mflr %r11
++           .  mtlr %r0
++           .  ld %r0,(0b-1b)(%r11)
++           .  sub %r12,%r12,%r11
++           .  add %r11,%r0,%r11
++           .  addi %r0,%r12,1b-2f
++           .  ld %r12,0(%r11)
++           .  srdi %r0,%r0,2
++           .  mtctr %r12
++           .  ld %r11,8(%r11)
++           .  bctr
++           2:
++           .  b __glink_PLTresolve
++           .  ...
++           .  b __glink_PLTresolve  */
++
++        if (htab->has_plt_localentry0)
++          {
++            bfd_put_32 (htab->glink->owner, STD_R2_0R1 + 24, p);
++            p += 4;
++          }
+         bfd_put_32 (htab->glink->owner, MFLR_R0, p);
+         p += 4;
+         bfd_put_32 (htab->glink->owner, BCL_20_31, p);
+         p += 4;
+         bfd_put_32 (htab->glink->owner, MFLR_R11, p);
+         p += 4;
+-        bfd_put_32 (htab->glink->owner, STD_R2_0R1 + 24, p);
+-        p += 4;
+-        bfd_put_32 (htab->glink->owner, LD_R2_0R11 | (-16 & 0xfffc), p);
+-        p += 4;
+         bfd_put_32 (htab->glink->owner, MTLR_R0, p);
+         p += 4;
++        if (htab->has_plt_localentry0)
++          insn = LD_R0_0R11 | (-20 & 0xfffc);
++        else
++          insn = LD_R0_0R11 | (-16 & 0xfffc);
++        bfd_put_32 (htab->glink->owner, insn, p);
++        p += 4;
+         bfd_put_32 (htab->glink->owner, SUB_R12_R12_R11, p);
+         p += 4;
+-        bfd_put_32 (htab->glink->owner, ADD_R11_R2_R11, p);
++        bfd_put_32 (htab->glink->owner, ADD_R11_R0_R11, p);
+         p += 4;
+-        bfd_put_32 (htab->glink->owner, ADDI_R0_R12 | (-48 & 0xffff), p);
++        bfd_put_32 (htab->glink->owner, ADDI_R0_R12 | (-44 & 0xffff), p);
+         p += 4;
+         bfd_put_32 (htab->glink->owner, LD_R12_0R11, p);
+         p += 4;
+@@ -15880,22 +15991,25 @@ ppc64_elf_relocate_section (bfd *output_bfd,
+             addend = 0;
+             reloc_dest = DEST_STUB;
+-            if (((stub_entry->stub_type == ppc_stub_plt_call
+-                  && ALWAYS_EMIT_R2SAVE)
+-                 || stub_entry->stub_type == ppc_stub_plt_call_r2save
+-                 || stub_entry->stub_type == ppc_stub_plt_call_both)
+-                && !(h != NULL
+-                     && is_tls_get_addr (&h->elf, htab)
+-                     && htab->params->tls_get_addr_opt)
+-                && rel + 1 < relend
+-                && rel[1].r_offset == rel->r_offset + 4
+-                && ELF64_R_TYPE (rel[1].r_info) == R_PPC64_TOCSAVE)
+-              relocation += 4;
+-            else if ((stub_entry->stub_type == ppc_stub_long_branch_both
+-                      || stub_entry->stub_type == ppc_stub_plt_branch_both
+-                      || stub_entry->stub_type == ppc_stub_plt_call_both)
+-                     && r_type == R_PPC64_REL24_NOTOC)
+-              relocation += 4;
++            if ((((stub_entry->stub_type == ppc_stub_plt_call
++                   && ALWAYS_EMIT_R2SAVE)
++                  || stub_entry->stub_type == ppc_stub_plt_call_r2save
++                  || stub_entry->stub_type == ppc_stub_plt_call_both)
++                 && rel + 1 < relend
++                 && rel[1].r_offset == rel->r_offset + 4
++                 && ELF64_R_TYPE (rel[1].r_info) == R_PPC64_TOCSAVE)
++                || ((stub_entry->stub_type == ppc_stub_long_branch_both
++                     || stub_entry->stub_type == ppc_stub_plt_branch_both
++                     || stub_entry->stub_type == ppc_stub_plt_call_both)
++                    && r_type == R_PPC64_REL24_NOTOC))
++              {
++                /* Skip over the r2 store at the start of the stub.  */
++                if (!(stub_entry->stub_type >= ppc_stub_plt_call
++                      && htab->params->tls_get_addr_opt
++                      && h != NULL
++                      && is_tls_get_addr (&h->elf, htab)))
++                  relocation += 4;
++              }
+             if (r_type == R_PPC64_REL24_NOTOC
+                 && (stub_entry->stub_type == ppc_stub_plt_call_notoc
+@@ -15944,7 +16058,8 @@ ppc64_elf_relocate_section (bfd *output_bfd,
+         break;
+       case R_PPC64_GOT16_DS:
+-        if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC)
++        if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC
++            || !htab->do_toc_opt)
+           break;
+         from = TOCstart + htab->sec_info[input_section->id].toc_off;
+         if (relocation + addend - from + 0x8000 < 0x10000
+@@ -15963,7 +16078,8 @@ ppc64_elf_relocate_section (bfd *output_bfd,
+       case R_PPC64_GOT16_LO_DS:
+       case R_PPC64_GOT16_HA:
+-        if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC)
++        if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC
++            || !htab->do_toc_opt)
+           break;
+         from = TOCstart + htab->sec_info[input_section->id].toc_off;
+         if (relocation + addend - from + 0x80008000ULL < 0x100000000ULL
+@@ -15986,34 +16102,38 @@ ppc64_elf_relocate_section (bfd *output_bfd,
+         break;
+       case R_PPC64_GOT_PCREL34:
+-        if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC)
++        if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC
++            || !htab->do_toc_opt)
+           break;
+         from = (rel->r_offset
+                 + input_section->output_section->vma
+                 + input_section->output_offset);
+-        if (relocation - from + (1ULL << 33) < 1ULL << 34
+-            && SYMBOL_REFERENCES_LOCAL (info, &h->elf))
+-          {
+-            offset = rel->r_offset;
+-            pinsn = bfd_get_32 (input_bfd, contents + offset);
+-            pinsn <<= 32;
+-            pinsn |= bfd_get_32 (input_bfd, contents + offset + 4);
+-            if ((pinsn & ((-1ULL << 50) | (63ULL << 26)))
+-                 == ((1ULL << 58) | (1ULL << 52) | (57ULL << 26) /* pld */))
+-              {
+-                /* Replace with paddi.  */
+-                pinsn += (2ULL << 56) + (14ULL << 26) - (57ULL << 26);
+-                r_type = R_PPC64_PCREL34;
+-                rel->r_info = ELF64_R_INFO (r_symndx, r_type);
+-                bfd_put_32 (input_bfd, pinsn >> 32, contents + offset);
+-                bfd_put_32 (input_bfd, pinsn, contents + offset + 4);
+-                goto pcrelopt;
+-              }
+-          }
+-        break;
++        if (!(relocation - from + (1ULL << 33) < 1ULL << 34
++              && SYMBOL_REFERENCES_LOCAL (info, &h->elf)))
++          break;
++
++        offset = rel->r_offset;
++        pinsn = bfd_get_32 (input_bfd, contents + offset);
++        pinsn <<= 32;
++        pinsn |= bfd_get_32 (input_bfd, contents + offset + 4);
++        if ((pinsn & ((-1ULL << 50) | (63ULL << 26)))
++            != ((1ULL << 58) | (1ULL << 52) | (57ULL << 26) /* pld */))
++          break;
++
++        /* Replace with paddi.  */
++        pinsn += (2ULL << 56) + (14ULL << 26) - (57ULL << 26);
++        r_type = R_PPC64_PCREL34;
++        rel->r_info = ELF64_R_INFO (r_symndx, r_type);
++        bfd_put_32 (input_bfd, pinsn >> 32, contents + offset);
++        bfd_put_32 (input_bfd, pinsn, contents + offset + 4);
++        /* Fall through.  */
+       case R_PPC64_PCREL34:
+-        if (SYMBOL_REFERENCES_LOCAL (info, &h->elf))
++        if (!htab->params->no_pcrel_opt
++            && rel + 1 < relend
++            && rel[1].r_offset == rel->r_offset
++            && rel[1].r_info == ELF64_R_INFO (0, R_PPC64_PCREL_OPT)
++            && SYMBOL_REFERENCES_LOCAL (info, &h->elf))
+           {
+             offset = rel->r_offset;
+             pinsn = bfd_get_32 (input_bfd, contents + offset);
+@@ -16023,43 +16143,37 @@ ppc64_elf_relocate_section (bfd *output_bfd,
+                  == ((1ULL << 58) | (2ULL << 56) | (1ULL << 52)
+                      | (14ULL << 26) /* paddi */))
+               {
+-              pcrelopt:
+-                if (rel + 1 < relend
+-                    && rel[1].r_offset == offset
+-                    && rel[1].r_info == ELF64_R_INFO (0, R_PPC64_PCREL_OPT))
++                bfd_vma off2 = rel[1].r_addend;
++                if (off2 == 0)
++                  /* zero means next insn.  */
++                  off2 = 8;
++                off2 += offset;
++                if (off2 + 4 <= input_section->size)
+                   {
+-                    bfd_vma off2 = rel[1].r_addend;
+-                    if (off2 == 0)
+-                      /* zero means next insn.  */
+-                      off2 = 8;
+-                    off2 += offset;
+-                    if (off2 + 4 <= input_section->size)
++                    uint64_t pinsn2;
++                    bfd_signed_vma addend_off;
++                    pinsn2 = bfd_get_32 (input_bfd, contents + off2);
++                    pinsn2 <<= 32;
++                    if ((pinsn2 & (63ULL << 58)) == 1ULL << 58)
+                       {
+-                        uint64_t pinsn2;
+-                        bfd_signed_vma addend_off;
+-                        pinsn2 = bfd_get_32 (input_bfd, contents + off2);
+-                        pinsn2 <<= 32;
++                        if (off2 + 8 > input_section->size)
++                          break;
++                        pinsn2 |= bfd_get_32 (input_bfd,
++                                              contents + off2 + 4);
++                      }
++                    if (xlate_pcrel_opt (&pinsn, &pinsn2, &addend_off))
++                      {
++                        addend += addend_off;
++                        rel->r_addend = addend;
++                        bfd_put_32 (input_bfd, pinsn >> 32,
++                                    contents + offset);
++                        bfd_put_32 (input_bfd, pinsn,
++                                    contents + offset + 4);
++                        bfd_put_32 (input_bfd, pinsn2 >> 32,
++                                    contents + off2);
+                         if ((pinsn2 & (63ULL << 58)) == 1ULL << 58)
+-                          {
+-                            if (off2 + 8 > input_section->size)
+-                              break;
+-                            pinsn2 |= bfd_get_32 (input_bfd,
+-                                                  contents + off2 + 4);
+-                          }
+-                        if (xlate_pcrel_opt (&pinsn, &pinsn2, &addend_off))
+-                          {
+-                            addend += addend_off;
+-                            rel->r_addend = addend;
+-                            bfd_put_32 (input_bfd, pinsn >> 32,
+-                                        contents + offset);
+-                            bfd_put_32 (input_bfd, pinsn,
+-                                        contents + offset + 4);
+-                            bfd_put_32 (input_bfd, pinsn2 >> 32,
+-                                        contents + off2);
+-                            if ((pinsn2 & (63ULL << 58)) == 1ULL << 58)
+-                              bfd_put_32 (input_bfd, pinsn2,
+-                                          contents + off2 + 4);
+-                          }
++                          bfd_put_32 (input_bfd, pinsn2,
++                                      contents + off2 + 4);
+                       }
+                   }
+               }
+diff --git a/bfd/elf64-ppc.h b/bfd/elf64-ppc.h
+index 547971f8bec..0492fd7fad5 100644
+--- a/bfd/elf64-ppc.h
++++ b/bfd/elf64-ppc.h
+@@ -27,6 +27,7 @@ struct ppc64_elf_params
+   /* Linker call-backs.  */
+   asection * (*add_stub_section) (const char *, asection *);
+   void (*layout_sections_again) (void);
++  void (*edit) (void);
+   /* Maximum size of a group of input sections that can be handled by
+      one stub section.  A value of +/-1 indicates the bfd back-end
+@@ -57,6 +58,9 @@ struct ppc64_elf_params
+   /* Whether to use power10 instructions in linkage stubs.  */
+   int power10_stubs;
++  /* Whether R_PPC64_PCREL_OPT should be ignored.  */
++  int no_pcrel_opt;
++
+   /* Whether to canonicalize .opd so that there are no overlapping
+      .opd entries.  */
+   int non_overlapping_opd;
+@@ -77,7 +81,7 @@ bfd_boolean ppc64_elf_edit_opd
+   (struct bfd_link_info *);
+ bfd_boolean ppc64_elf_inline_plt
+   (struct bfd_link_info *);
+-asection *ppc64_elf_tls_setup
++bfd_boolean ppc64_elf_tls_setup
+   (struct bfd_link_info *);
+ bfd_boolean ppc64_elf_tls_optimize
+   (struct bfd_link_info *);
+diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
+index 311fb28a905..7eb1afe6144 100644
+--- a/bfd/elf64-x86-64.c
++++ b/bfd/elf64-x86-64.c
+@@ -1731,7 +1731,7 @@ elf_x86_64_convert_load_reloc (bfd *abfd,
+       if (opcode == 0x8b)
+       {
+-        if (abs_symbol && local_ref)
++        if (abs_symbol && local_ref && relocx)
+           to_reloc_pc32 = FALSE;
+         if (to_reloc_pc32)
+diff --git a/bfd/elflink.c b/bfd/elflink.c
+index 998b72f2281..222a4573b00 100644
+--- a/bfd/elflink.c
++++ b/bfd/elflink.c
+@@ -9636,9 +9636,29 @@ elf_link_output_symstrtab (struct elf_final_link_info *flinfo,
+     {
+       /* Call _bfd_elf_strtab_offset after _bfd_elf_strtab_finalize
+        to get the final offset for st_name.  */
++      char *versioned_name = (char *) name;
++      if (h != NULL && h->versioned == versioned && h->def_dynamic)
++      {
++        /* Keep only one '@' for versioned symbols defined in shared
++           objects.  */
++        char *version = strrchr (name, ELF_VER_CHR);
++        char *base_end = strchr (name, ELF_VER_CHR);
++        if (version != base_end)
++          {
++            size_t base_len;
++            size_t len = strlen (name);
++            versioned_name = bfd_alloc (flinfo->output_bfd, len);
++            if (versioned_name == NULL)
++              return 0;
++            base_len = base_end - name;
++            memcpy (versioned_name, name, base_len);
++            memcpy (versioned_name + base_len, version,
++                    len - base_len);
++          }
++      }
+       elfsym->st_name
+       = (unsigned long) _bfd_elf_strtab_add (flinfo->symstrtab,
+-                                             name, FALSE);
++                                             versioned_name, FALSE);
+       if (elfsym->st_name == (unsigned long) -1)
+       return 0;
+     }
+diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
+index e58ddc19cf6..143aae4b5cc 100644
+--- a/bfd/elfxx-x86.c
++++ b/bfd/elfxx-x86.c
+@@ -2417,15 +2417,19 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
+       abort ();
+       if (aprop != NULL && bprop != NULL)
+       {
+-        features = 0;
+-        if (htab->params->ibt)
+-          features = GNU_PROPERTY_X86_FEATURE_1_IBT;
+-        if (htab->params->shstk)
+-          features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK;
+         number = aprop->u.number;
+-        /* Add GNU_PROPERTY_X86_FEATURE_1_IBT and
+-           GNU_PROPERTY_X86_FEATURE_1_SHSTK.  */
+-        aprop->u.number = (number & bprop->u.number) | features;
++        aprop->u.number = number & bprop->u.number;
++        if (pr_type == GNU_PROPERTY_X86_FEATURE_1_AND)
++          {
++            features = 0;
++            if (htab->params->ibt)
++              features = GNU_PROPERTY_X86_FEATURE_1_IBT;
++            if (htab->params->shstk)
++              features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK;
++            /* Add GNU_PROPERTY_X86_FEATURE_1_IBT and
++               GNU_PROPERTY_X86_FEATURE_1_SHSTK.  */
++            aprop->u.number |= features;
++          }
+         updated = number != (unsigned int) aprop->u.number;
+         /* Remove the property if all feature bits are cleared.  */
+         if (aprop->u.number == 0)
+@@ -2437,10 +2441,13 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
+            have them.  Set IBT and SHSTK properties for -z ibt and -z
+            shstk if needed.  */
+         features = 0;
+-        if (htab->params->ibt)
+-          features = GNU_PROPERTY_X86_FEATURE_1_IBT;
+-        if (htab->params->shstk)
+-          features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK;
++        if (pr_type == GNU_PROPERTY_X86_FEATURE_1_AND)
++          {
++            if (htab->params->ibt)
++              features = GNU_PROPERTY_X86_FEATURE_1_IBT;
++            if (htab->params->shstk)
++              features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK;
++          }
+         if (features)
+           {
+             if (aprop != NULL)
+diff --git a/bfd/version.h b/bfd/version.h
+index 617fdb7a5de..7f24847f774 100644
+--- a/bfd/version.h
++++ b/bfd/version.h
+@@ -16,7 +16,7 @@
+    In releases, the date is not included in either version strings or
+    sonames.  */
+-#define BFD_VERSION_DATE 20200919
++#define BFD_VERSION_DATE 20210106
+ #define BFD_VERSION @bfd_version@
+ #define BFD_VERSION_STRING  @bfd_version_package@ @bfd_version_string@
+ #define REPORT_BUGS_TO @report_bugs_to@
+diff --git a/binutils/ChangeLog b/binutils/ChangeLog
+index 76ba6d9840a..4b6cd9f755e 100644
+--- a/binutils/ChangeLog
++++ b/binutils/ChangeLog
+@@ -1,3 +1,142 @@
++2021-01-01  Alan Modra  <amodra@gmail.com>
++
++      Apply from master
++      2020-12-31  Alan Modra  <amodra@gmail.com>
++      PR 27128
++      * nm.c (print_symname): Append version string to symbol name
++      before printing the lot under control of "form".  Append version
++      to demangled names too.
++
++      2020-08-22  H.J. Lu  <hongjiu.lu@intel.com>
++      PR ld/26382
++      * nm.c (print_symname): Display only one '@' for undefined
++      versioned symbols.
++      * doc/binutils.texi: Update nm version information.
++
++      2020-08-10  H.J. Lu  <hongjiu.lu@intel.com>
++      PR binutils/26302
++      * nm.c (with_symbol_versions): Removed.
++      (long_option_values): Add OPTION_WITH_SYMBOL_VERSIONS.
++      (long_options): Update --with-symbol-versions entry.
++      (print_symbol): Remove the with_symbol_versions check.
++      (main): Add OPTION_WITH_SYMBOL_VERSIONS for backward
++      compatibility.
++      * doc/binutils.texi: Remove --with-symbol-versions.
++
++2020-11-22  Alan Modra  <amodra@gmail.com>
++
++      PR 26929
++      Apply from mainline
++      2020-07-06  Alan Modra  <amodra@gmail.com>
++      * readelf.c (print_dynamic_symbol): Don't sprintf to buffer to
++      find string length.
++
++2020-11-16  Mark Wielaard  <mark@klomp.org>
++
++      Backport from the mainline:
++      2020-10-29  H.J. Lu  <hongjiu.lu@intel.com>
++
++      PR binutils/26808
++      * dwarf.c (abbrev_list): Add abbrev_base.
++      (new_abbrev_list): Add an abbrev_base argument and record it.
++      (find_abbrev_list_by_abbrev_offset): Add an abbrev_base argument
++      and match it.
++      (process_debug_info): Pass abbrev_base to new_abbrev_list and
++      find_abbrev_list_by_abbrev_offset.
++      (display_debug_abbrev): Pass 0 abbrev_base to new_abbrev_list
++      and find_abbrev_list_by_abbrev_offset.
++      * testsuite/binutils-all/x86-64/pr26808.dump: New file.
++      * testsuite/binutils-all/x86-64/pr26808.dwp.bz2: Likewise.
++      * testsuite/binutils-all/x86-64/x86-64.exp: Run PR binutils/26808
++      test.
++
++2020-11-15  Mark Wielaard  <mark@klomp.org>
++
++      Backport from the mainline:
++      2020-11-10  Nick Clifton  <nickc@redhat.com>
++
++      * dwarf.c (skip_attr_bytes): Correctly handle DW_FORM_ref8.
++      (get_type_abbrev_from_form): Accept DW_FORM_ref8.
++
++2020-11-15  Mark Wielaard  <mark@klomp.org>
++
++      Backport from the mainline:
++      2020-10-27  Nick Clifton  <nickc@redhat.com>
++
++      * dwarf.c (struct abbrev_list): New structure.  Used to collect
++      lists of abbreviation sets.
++      (struct abbrev_map): New structure.  Used to map CU offsets to
++      abbreviation offsets.
++      (record_abbrev_list): New function.  A new entry to an
++      abbreviation list.
++      (free_all_abbrevs): Update to free abbreviation lists.
++      (new_abbrev_list): New function.  Start a new abbreviation
++      list.
++      (find_abbrev_list_by_abbrev_offset): New function.
++      (find_abbrev_map_by_offset): New function.
++      (add_abbrev): Add abbrev_list parameter.
++      (add_abbrev_attr): Likewise.
++      (process_abbrev_section): Rename to process_abbrev_set and add
++      list parameter.
++      (get_type_abbrev_from_form): New function.  Attempts to decode the
++      forms used by DW_AT_type attributes.
++      (get_type_signedness): Display type names if operating in wide
++      mode.  Use get_type_abbrev_from_form.
++      (read_and_display_attr_value): Use get_type_abbrev_from_form.
++      (process_debug_info): Pre-parse the CU headers to collate all the
++      abbrevs before starting the main scan.
++      (process_debug_abbrev): Do not free any loaded abbrevs.
++      (free_debug_memory): Free the abbrev maps.
++
++2020-11-15  Mark Wielaard  <mark@klomp.org>
++
++      Backport from the mainline:
++      2020-10-21  Nick Clifton  <nickc@redhat.com>
++
++      * dwarf.c (skip_attr_bytes): Accept DWARF versions higher than 4
++      when processing the DW_FORM_ref_addr form.
++      Skip bytes in DW_FORM_block and DW_FORM_exprloc forms.
++      Handle DW_FORM_indirect.
++      (get_type_signedness): Allow a limited amount of recursion.
++      Do not attempt to decode types that use the DW_FORM_ref_addr form.
++      (read_and_display_attr_value):  Do not attempt to decode types
++      that use the DW_FORM_ref_addr form.
++
++2020-11-15  Mark Wielaard  <mark@klomp.org>
++
++      Backport from the mainline:
++      2020-11-11  Bernd Edlinger  <bernd.edlinger@hotmail.de>
++
++      * dwarf.c (display_debug_rnglists_list): Only bias the
++      DW_RLS_offset_pair with the base address.
++
++2020-11-15  Mark Wielaard  <mark@klomp.org>
++
++      Backport from the mainline:
++      2020-09-29  Mark Wielaard  <mark@klomp.org>
++
++      * dwarf.c (display_loclists_list): Handle DW_LLE_start_end and
++      DW_LLE_start_length. Only add base_address for DW_LLE_offset_pair.
++
++2020-11-15  Mark Wielaard  <mark@klomp.org>
++
++      Backport from the mainline:
++      2020-09-23  Mark Wielaard  <mark@klomp.org>
++
++      * dwarf.c (process_debug_info): Print Unit Type for DWARF5.
++      * testsuite/binutils-all/dw5.W: Adjust expected output.
++      * testsuite/binutils-all/dwarf-attributes.W: Likewise.
++
++2020-11-15  Mark Wielaard  <mark@klomp.org>
++
++      Backport from the mainline:
++      2020-09-23  Mark Wielaard  <mark@klomp.org>
++
++      * dwarf.c (read_and_display_attr_value): Handle DW_FORM_ref_addr
++      for dwarf_version 5 just as version 3 and 4 (only 2 is
++      different).
++      (process_debug_info): Allow DW_UT_partial.
++
+ 2020-09-19  Nick Clifton  <nickc@redhat.com>
+       This is the 2.35.1 point release.
+diff --git a/binutils/doc/binutils.texi b/binutils/doc/binutils.texi
+index f19862655bd..cf8d0ea7f1c 100644
+--- a/binutils/doc/binutils.texi
++++ b/binutils/doc/binutils.texi
+@@ -796,7 +796,7 @@ nm [@option{-A}|@option{-o}|@option{--print-file-name}] [@option{-a}|@option{--d
+    [@option{--plugin} @var{name}]
+    [@option{--no-recurse-limit}|@option{--recurse-limit}]]
+    [@option{--size-sort}] [@option{--special-syms}]
+-   [@option{--synthetic}] [@option{--with-symbol-versions}] [@option{--target=}@var{bfdname}]
++   [@option{--synthetic}] [@option{--target=}@var{bfdname}]
+    [@var{objfile}@dots{}]
+ @c man end
+ @end smallexample
+@@ -924,7 +924,13 @@ The symbol type is unknown, or object file format specific.
+ @end table
+ @item
+-The symbol name.
++The symbol name.  If a symbol has version information associated with it,
++then the version information is displayed as well.  If the versioned
++symbol is undefined or hidden from linker, the version string is displayed
++as a suffix to the symbol name, preceded by an @@ character.  For example
++@samp{foo@@VER_1}.  If the version is the default version to be used when
++resolving unversioned references to the symbol, then it is displayed as a
++suffix preceded by two @@ characters.  For example @samp{foo@@@@VER_2}.
+ @end itemize
+ @c man end
+@@ -1130,14 +1136,6 @@ Include synthetic symbols in the output.  These are special symbols
+ created by the linker for various purposes.  They are not shown by
+ default since they are not part of the binary's original source code.
+-@item --with-symbol-versions
+-Enables the display of symbol version information if any exists.  The
+-version string is displayed as a suffix to the symbol name, preceeded by
+-an @@ character.  For example @samp{foo@@VER_1}.  If the version is
+-the default version to be used when resolving unversioned references
+-to the symbol then it is displayed as a suffix preceeded by two @@
+-characters.  For example @samp{foo@@@@VER_2}.
+-
+ @item --target=@var{bfdname}
+ @cindex object code format
+ Specify an object code format other than your system's default format.
+diff --git a/binutils/dwarf.c b/binutils/dwarf.c
+index cc13fe067f0..91b61e3fdfe 100644
+--- a/binutils/dwarf.c
++++ b/binutils/dwarf.c
+@@ -849,101 +849,208 @@ fetch_indexed_value (dwarf_vma offset, dwarf_vma bytes)
+ /* FIXME:  There are better and more efficient ways to handle
+    these structures.  For now though, I just want something that
+    is simple to implement.  */
++/* Records a single attribute in an abbrev.  */
+ typedef struct abbrev_attr
+ {
+-  unsigned long attribute;
+-  unsigned long form;
+-  bfd_signed_vma implicit_const;
+-  struct abbrev_attr *next;
++  unsigned long          attribute;
++  unsigned long          form;
++  bfd_signed_vma         implicit_const;
++  struct abbrev_attr *   next;
+ }
+ abbrev_attr;
++/* Records a single abbrev.  */
+ typedef struct abbrev_entry
+ {
+-  unsigned long entry;
+-  unsigned long tag;
+-  int children;
+-  struct abbrev_attr *first_attr;
+-  struct abbrev_attr *last_attr;
+-  struct abbrev_entry *next;
++  unsigned long          number;
++  unsigned long          tag;
++  int                    children;
++  struct abbrev_attr *   first_attr;
++  struct abbrev_attr *   last_attr;
++  struct abbrev_entry *  next;
+ }
+ abbrev_entry;
+-static abbrev_entry *first_abbrev = NULL;
+-static abbrev_entry *last_abbrev = NULL;
++/* Records a set of abbreviations.  */
++typedef struct abbrev_list
++{
++  abbrev_entry *        first_abbrev;
++  abbrev_entry *        last_abbrev;
++  dwarf_vma             abbrev_base;
++  dwarf_vma             abbrev_offset;
++  struct abbrev_list *  next;
++  unsigned char *       start_of_next_abbrevs;
++}
++abbrev_list;
++
++/* Records all the abbrevs found so far.  */
++static struct abbrev_list * abbrev_lists = NULL;
++
++typedef struct abbrev_map
++{
++  dwarf_vma      start;
++  dwarf_vma      end;
++  abbrev_list *  list;
++} abbrev_map;
++
++/* Maps between CU offsets and abbrev sets.  */
++static abbrev_map *   cu_abbrev_map = NULL;
++static unsigned long  num_abbrev_map_entries = 0;
++static unsigned long  next_free_abbrev_map_entry = 0;
++
++#define INITIAL_NUM_ABBREV_MAP_ENTRIES 8
++#define ABBREV_MAP_ENTRIES_INCREMENT   8
++
++static void
++record_abbrev_list_for_cu (dwarf_vma start, dwarf_vma end, abbrev_list * list)
++{
++  if (cu_abbrev_map == NULL)
++    {
++      num_abbrev_map_entries = INITIAL_NUM_ABBREV_MAP_ENTRIES;
++      cu_abbrev_map = xmalloc (num_abbrev_map_entries * sizeof (* cu_abbrev_map));
++    }
++  else if (next_free_abbrev_map_entry == num_abbrev_map_entries)
++    {
++      num_abbrev_map_entries += ABBREV_MAP_ENTRIES_INCREMENT;
++      cu_abbrev_map = xrealloc (cu_abbrev_map, num_abbrev_map_entries * sizeof (* cu_abbrev_map));
++    }
++
++  cu_abbrev_map[next_free_abbrev_map_entry].start = start;
++  cu_abbrev_map[next_free_abbrev_map_entry].end = end;
++  cu_abbrev_map[next_free_abbrev_map_entry].list = list;
++  next_free_abbrev_map_entry ++;
++}
+ static void
+-free_abbrevs (void)
++free_all_abbrevs (void)
+ {
+-  abbrev_entry *abbrv;
++  abbrev_list *  list;
+-  for (abbrv = first_abbrev; abbrv;)
++  for (list = abbrev_lists; list != NULL;)
+     {
+-      abbrev_entry *next_abbrev = abbrv->next;
+-      abbrev_attr *attr;
++      abbrev_list *   next = list->next;
++      abbrev_entry *  abbrv;
+-      for (attr = abbrv->first_attr; attr;)
++      for (abbrv = list->first_abbrev; abbrv != NULL;)
+       {
+-        abbrev_attr *next_attr = attr->next;
++        abbrev_entry *  next_abbrev = abbrv->next;
++        abbrev_attr *   attr;
++
++        for (attr = abbrv->first_attr; attr;)
++          {
++            abbrev_attr *next_attr = attr->next;
+-        free (attr);
+-        attr = next_attr;
++            free (attr);
++            attr = next_attr;
++          }
++
++        free (abbrv);
++        abbrv = next_abbrev;
+       }
+-      free (abbrv);
+-      abbrv = next_abbrev;
++      free (list);
++      list = next;
+     }
+-  last_abbrev = first_abbrev = NULL;
++  abbrev_lists = NULL;
++}
++
++static abbrev_list *
++new_abbrev_list (dwarf_vma abbrev_base, dwarf_vma abbrev_offset)
++{
++  abbrev_list * list = (abbrev_list *) xcalloc (sizeof * list, 1);
++
++  list->abbrev_base = abbrev_base;
++  list->abbrev_offset = abbrev_offset;
++
++  list->next = abbrev_lists;
++  abbrev_lists = list;
++
++  return list;
++}
++
++static abbrev_list *
++find_abbrev_list_by_abbrev_offset (dwarf_vma abbrev_base,
++                                 dwarf_vma abbrev_offset)
++{
++  abbrev_list * list;
++
++  for (list = abbrev_lists; list != NULL; list = list->next)
++    if (list->abbrev_base == abbrev_base
++      && list->abbrev_offset == abbrev_offset)
++      return list;
++
++  return NULL;
++}
++
++/* Find the abbreviation map for the CU that includes OFFSET.
++   OFFSET is an absolute offset from the start of the .debug_info section.  */
++/* FIXME: This function is going to slow down readelf & objdump.
++   Consider using a better algorithm to mitigate this effect.  */
++
++static  abbrev_map *
++find_abbrev_map_by_offset (dwarf_vma offset)
++{
++  unsigned long i;
++
++  for (i = 0; i < next_free_abbrev_map_entry; i++)
++    if (cu_abbrev_map[i].start <= offset
++      && cu_abbrev_map[i].end > offset)
++      return cu_abbrev_map + i;
++
++  return NULL;        
+ }
+ static void
+-add_abbrev (unsigned long number, unsigned long tag, int children)
++add_abbrev (unsigned long  number,
++          unsigned long  tag,
++          int            children,
++          abbrev_list *  list)
+ {
+-  abbrev_entry *entry;
++  abbrev_entry *  entry;
+-  entry = (abbrev_entry *) malloc (sizeof (*entry));
+-  if (entry == NULL)
+-    /* ugg */
+-    return;
++  entry = (abbrev_entry *) xmalloc (sizeof (*entry));
+-  entry->entry      = number;
++  entry->number     = number;
+   entry->tag        = tag;
+   entry->children   = children;
+   entry->first_attr = NULL;
+   entry->last_attr  = NULL;
+   entry->next       = NULL;
+-  if (first_abbrev == NULL)
+-    first_abbrev = entry;
++  assert (list != NULL);
++
++  if (list->first_abbrev == NULL)
++    list->first_abbrev = entry;
+   else
+-    last_abbrev->next = entry;
++    list->last_abbrev->next = entry;
+-  last_abbrev = entry;
++  list->last_abbrev = entry;
+ }
+ static void
+-add_abbrev_attr (unsigned long attribute, unsigned long form,
+-               bfd_signed_vma implicit_const)
++add_abbrev_attr (unsigned long   attribute,
++               unsigned long   form,
++               bfd_signed_vma  implicit_const,
++               abbrev_list *   list)
+ {
+   abbrev_attr *attr;
+-  attr = (abbrev_attr *) malloc (sizeof (*attr));
+-  if (attr == NULL)
+-    /* ugg */
+-    return;
++  attr = (abbrev_attr *) xmalloc (sizeof (*attr));
+   attr->attribute = attribute;
+   attr->form      = form;
+   attr->implicit_const = implicit_const;
+   attr->next      = NULL;
+-  if (last_abbrev->first_attr == NULL)
+-    last_abbrev->first_attr = attr;
++  assert (list != NULL && list->last_abbrev != NULL);
++
++  if (list->last_abbrev->first_attr == NULL)
++    list->last_abbrev->first_attr = attr;
+   else
+-    last_abbrev->last_attr->next = attr;
++    list->last_abbrev->last_attr->next = attr;
+-  last_abbrev->last_attr = attr;
++  list->last_abbrev->last_attr = attr;
+ }
+ /* Processes the (partial) contents of a .debug_abbrev section.
+@@ -952,11 +1059,10 @@ add_abbrev_attr (unsigned long attribute, unsigned long form,
+    an abbreviation set was found.  */
+ static unsigned char *
+-process_abbrev_section (unsigned char *start, unsigned char *end)
++process_abbrev_set (unsigned char *        start,
++                  const unsigned char *  end,
++                  abbrev_list *          list)
+ {
+-  if (first_abbrev != NULL)
+-    return NULL;
+-
+   while (start < end)
+     {
+       unsigned long entry;
+@@ -966,7 +1072,7 @@ process_abbrev_section (unsigned char *start, unsigned char *end)
+       READ_ULEB (entry, start, end);
+-      /* A single zero is supposed to end the section according
++      /* A single zero is supposed to end the set according
+        to the standard.  If there's more, then signal that to
+        the caller.  */
+       if (start == end)
+@@ -980,7 +1086,7 @@ process_abbrev_section (unsigned char *start, unsigned char *end)
+       children = *start++;
+-      add_abbrev (entry, tag, children);
++      add_abbrev (entry, tag, children, list);
+       do
+       {
+@@ -1003,7 +1109,7 @@ process_abbrev_section (unsigned char *start, unsigned char *end)
+               break;
+           }
+-        add_abbrev_attr (attribute, form, implicit_const);
++        add_abbrev_attr (attribute, form, implicit_const, list);
+       }
+       while (attribute != 0);
+     }
+@@ -1868,7 +1974,7 @@ skip_attr_bytes (unsigned long          form,
+     case DW_FORM_ref_addr:
+       if (dwarf_version == 2)
+       SAFE_BYTE_GET_AND_INC (uvalue, data, pointer_size, end);
+-      else if (dwarf_version == 3 || dwarf_version == 4)
++      else if (dwarf_version > 2)
+       SAFE_BYTE_GET_AND_INC (uvalue, data, offset_size, end);
+       else
+       return NULL;
+@@ -1919,7 +2025,23 @@ skip_attr_bytes (unsigned long          form,
+       break;
+     case DW_FORM_ref8:
++      {
++      dwarf_vma high_bits;
++
++      SAFE_BYTE_GET64 (data, &high_bits, &uvalue, end);
++      data += 8;
++      if (sizeof (uvalue) > 4)
++        uvalue += high_bits << 32;
++      else if (high_bits != 0)
++        {
++          /* FIXME: What to do ?  */
++          return NULL;
++        }
++      break;
++      }
++
+     case DW_FORM_data8:
++    case DW_FORM_ref_sig8:
+       data += 8;
+       break;
+@@ -1934,6 +2056,7 @@ skip_attr_bytes (unsigned long          form,
+     case DW_FORM_block:
+     case DW_FORM_exprloc:
+       READ_ULEB (uvalue, data, end);
++      data += uvalue;
+       break;
+     case DW_FORM_block1:
+@@ -1951,12 +2074,12 @@ skip_attr_bytes (unsigned long          form,
+       data += 4 + uvalue;
+       break;
+-    case DW_FORM_ref_sig8:
+-      data += 8;
+-      break;
+-
+     case DW_FORM_indirect:
+-      /* FIXME: Handle this form.  */
++      READ_ULEB (form, data, end);
++      if (form == DW_FORM_implicit_const)
++      SKIP_ULEB (data, end);
++      return skip_attr_bytes (form, data, end, pointer_size, offset_size, dwarf_version, value_return);
++
+     default:
+       return NULL;
+     }
+@@ -1967,40 +2090,137 @@ skip_attr_bytes (unsigned long          form,
+   return data;
+ }
+-/* Return IS_SIGNED set to TRUE if the type at
+-   DATA can be determined to be a signed type.  */
++/* Given form FORM with value UVALUE, locate and return the abbreviation
++   associated with it.  */
++
++static abbrev_entry *
++get_type_abbrev_from_form (unsigned long                 form,
++                         unsigned long                 uvalue,
++                         dwarf_vma                     cu_offset,
++                         const struct dwarf_section *  section,
++                         unsigned long *               abbrev_num_return,
++                         unsigned char **              data_return,
++                         unsigned long *               cu_offset_return)
++{
++  unsigned long   abbrev_number;
++  abbrev_map *    map;
++  abbrev_entry *  entry;
++  unsigned char * data;
++
++  if (abbrev_num_return != NULL)
++    * abbrev_num_return = 0;
++  if (data_return != NULL)
++    * data_return = NULL;
++
++  switch (form)
++    {
++    case DW_FORM_GNU_ref_alt:
++      /* FIXME: We are unable to handle this form at the moment.  */
++      return NULL;
++
++    case DW_FORM_ref_addr:
++      if (uvalue >= section->size)
++      {
++        warn (_("Unable to resolve ref_addr form: uvalue %lx > section size %lx (%s)\n"),
++              uvalue, (long) section->size, section->name);
++        return NULL;
++      }
++      break;
++
++    case DW_FORM_ref1:
++    case DW_FORM_ref2:
++    case DW_FORM_ref4:
++    case DW_FORM_ref8:
++    case DW_FORM_ref_udata:
++      if (uvalue + cu_offset > section->size)
++      {
++        warn (_("Unable to resolve ref form: uvalue %lx + cu_offset %lx > section size %lx\n"),
++              uvalue, (long) cu_offset, (long) section->size);
++        return NULL;
++      }
++      uvalue += cu_offset;
++      break;
++
++      /* FIXME: Are there other DW_FORMs that can be used by types ?  */
++
++    default:
++      warn (_("Unexpected form %lx encountered whilst finding abbreviation for type\n"), form);
++      return NULL;
++    }
++
++  data = (unsigned char *) section->start + uvalue;
++  map = find_abbrev_map_by_offset (uvalue);
++  
++  if (map == NULL)
++    {
++      warn (_("Unable to find abbreviations for CU offset %#lx\n"), uvalue);
++      return NULL;
++    }
++  if (map->list == NULL)
++    {
++      warn (_("Empty abbreviation list encountered for CU offset %lx\n"), uvalue);
++      return NULL;
++    }
++
++  if (cu_offset_return != NULL)
++    {
++      if (form == DW_FORM_ref_addr)
++      * cu_offset_return = map->start;
++      else
++      * cu_offset_return = cu_offset;
++    }
++      
++  READ_ULEB (abbrev_number, data, section->start + section->size);
++
++  for (entry = map->list->first_abbrev; entry != NULL; entry = entry->next)
++    if (entry->number == abbrev_number)
++      break;
++  
++  if (abbrev_num_return != NULL)
++    * abbrev_num_return = abbrev_number;
++
++  if (data_return != NULL)
++    * data_return = data;
++
++  if (entry == NULL)
++    warn (_("Unable to find entry for abbreviation %lu\n"), abbrev_number);
++
++  return entry;
++}
++
++/* Return IS_SIGNED set to TRUE if the type using abbreviation ENTRY
++   can be determined to be a signed type.  The data for ENTRY can be
++   found starting at DATA.  */
+ static void
+-get_type_signedness (unsigned char *        start,
++get_type_signedness (abbrev_entry *         entry,
++                   const struct dwarf_section * section,
+                    unsigned char *        data,
+                    unsigned const char *  end,
++                   dwarf_vma              cu_offset,
+                    dwarf_vma              pointer_size,
+                    dwarf_vma              offset_size,
+                    int                    dwarf_version,
+                    bfd_boolean *          is_signed,
+-                   bfd_boolean            is_nested)
++                   unsigned int           nesting)
+ {
+-  unsigned long   abbrev_number;
+-  abbrev_entry *  entry;
+   abbrev_attr *   attr;
+   * is_signed = FALSE;
+-  READ_ULEB (abbrev_number, data, end);
+-
+-  for (entry = first_abbrev;
+-       entry != NULL && entry->entry != abbrev_number;
+-       entry = entry->next)
+-    continue;
+-
+-  if (entry == NULL)
+-    /* FIXME: Issue a warning ?  */
+-    return;
++#define MAX_NESTING 20
++  if (nesting > MAX_NESTING)
++    {
++      /* FIXME: Warn - or is this expected ?
++       NB/ We need to avoid infinite recursion.  */
++      return;
++    }
+   for (attr = entry->first_attr;
+        attr != NULL && attr->attribute;
+        attr = attr->next)
+     {
++      unsigned char * orig_data = data;
+       dwarf_vma uvalue = 0;
+       data = skip_attr_bytes (attr->form, data, end, pointer_size,
+@@ -2010,25 +2230,38 @@ get_type_signedness (unsigned char *        start,
+       switch (attr->attribute)
+       {
+-#if 0 /* FIXME: It would be nice to print the name of the type,
+-       but this would mean updating a lot of binutils tests.  */
++      case DW_AT_linkage_name:
+       case DW_AT_name:
+-        if (attr->form == DW_FORM_strp)
+-          printf ("%s", fetch_indirect_string (uvalue));
++        if (do_wide)
++          {
++            if (attr->form == DW_FORM_strp)
++              printf (", %s", fetch_indirect_string (uvalue));
++            else if (attr->form == DW_FORM_string)
++              printf (", %s", orig_data);
++          }
+         break;
+-#endif
++
+       case DW_AT_type:
+         /* Recurse.  */
+-        if (is_nested)
+-          {
+-            /* FIXME: Warn - or is this expected ?
+-               NB/ We need to avoid infinite recursion.  */
+-            return;
+-          }
+-        if (uvalue >= (size_t) (end - start))
+-          return;
+-        get_type_signedness (start, start + uvalue, end, pointer_size,
+-                             offset_size, dwarf_version, is_signed, TRUE);
++        {
++          abbrev_entry *  type_abbrev;
++          unsigned char * type_data;
++          unsigned long   type_cu_offset;
++
++          type_abbrev = get_type_abbrev_from_form (attr->form,
++                                                   uvalue,
++                                                   cu_offset,
++                                                   section,
++                                                   NULL /* abbrev num return */,
++                                                   & type_data,
++                                                   & type_cu_offset);
++          if (type_abbrev == NULL)
++            break;
++
++          get_type_signedness (type_abbrev, section, type_data, end, type_cu_offset,
++                               pointer_size, offset_size, dwarf_version,
++                               is_signed, nesting + 1);
++        }
+         break;
+       case DW_AT_encoding:
+@@ -2202,11 +2435,10 @@ read_and_display_attr_value (unsigned long           attribute,
+     case DW_FORM_ref_addr:
+       if (dwarf_version == 2)
+       SAFE_BYTE_GET_AND_INC (uvalue, data, pointer_size, end);
+-      else if (dwarf_version == 3 || dwarf_version == 4)
++      else if (dwarf_version > 2)
+       SAFE_BYTE_GET_AND_INC (uvalue, data, offset_size, end);
+       else
+-      error (_("Internal error: DWARF version is not 2, 3 or 4.\n"));
+-
++      error (_("Internal error: DW_FORM_ref_addr is not supported in DWARF version 1.\n"));
+       break;
+     case DW_FORM_addr:
+@@ -2271,12 +2503,12 @@ read_and_display_attr_value (unsigned long           attribute,
+     {
+     case DW_FORM_ref_addr:
+       if (!do_loc)
+-      printf ("%c<0x%s>", delimiter, dwarf_vmatoa ("x",uvalue));
++      printf ("%c<0x%s>", delimiter, dwarf_vmatoa ("x", uvalue));
+       break;
+     case DW_FORM_GNU_ref_alt:
+       if (!do_loc)
+-      printf ("%c<alt 0x%s>", delimiter, dwarf_vmatoa ("x",uvalue));
++      printf ("%c<alt 0x%s>", delimiter, dwarf_vmatoa ("x", uvalue));
+       /* FIXME: Follow the reference...  */
+       break;
+@@ -2662,9 +2894,18 @@ read_and_display_attr_value (unsigned long           attribute,
+         && uvalue < (size_t) (end - start))
+       {
+         bfd_boolean is_signed = FALSE;
+-
+-        get_type_signedness (start, start + uvalue, end, pointer_size,
+-                             offset_size, dwarf_version, & is_signed, FALSE);
++        abbrev_entry *  type_abbrev;
++        unsigned char * type_data;
++        unsigned long   type_cu_offset;
++        
++        type_abbrev = get_type_abbrev_from_form (form, uvalue, cu_offset,
++                                                 section, NULL, & type_data, & type_cu_offset);
++        if (type_abbrev != NULL)
++          {
++            get_type_signedness (type_abbrev, section, type_data, end, type_cu_offset,
++                                 pointer_size, offset_size, dwarf_version,
++                                 & is_signed, 0);
++          }
+         level_type_signed[level] = is_signed;
+       }
+       break;
+@@ -2986,40 +3227,22 @@ read_and_display_attr_value (unsigned long           attribute,
+     case DW_AT_import:
+       {
+-      if (form == DW_FORM_ref_sig8
+-          || form == DW_FORM_GNU_ref_alt)
+-        break;
+-
+-      if (form == DW_FORM_ref1
+-          || form == DW_FORM_ref2
+-          || form == DW_FORM_ref4
+-          || form == DW_FORM_ref_udata)
+-        uvalue += cu_offset;
++      unsigned long abbrev_number;
++      abbrev_entry *entry;
+-      if (uvalue >= section->size)
+-        warn (_("Offset %s used as value for DW_AT_import attribute of DIE at offset 0x%lx is too big.\n"),
+-              dwarf_vmatoa ("x", uvalue),
+-              (unsigned long) (orig_data - section->start));
++      entry = get_type_abbrev_from_form (form, uvalue, cu_offset,
++                                         section, & abbrev_number, NULL, NULL);
++      if (entry == NULL)
++        {
++          if (form != DW_FORM_GNU_ref_alt)
++            warn (_("Offset %s used as value for DW_AT_import attribute of DIE at offset 0x%lx is too big.\n"),
++                  dwarf_vmatoa ("x", uvalue),
++                  (unsigned long) (orig_data - section->start));
++        }
+       else
+         {
+-          unsigned long abbrev_number;
+-          abbrev_entry *entry;
+-          unsigned char *p = section->start + uvalue;
+-
+-          READ_ULEB (abbrev_number, p, end);
+-
+           printf (_("\t[Abbrev Number: %ld"), abbrev_number);
+-          /* Don't look up abbrev for DW_FORM_ref_addr, as it very often will
+-             use different abbrev table, and we don't track .debug_info chunks
+-             yet.  */
+-          if (form != DW_FORM_ref_addr)
+-            {
+-              for (entry = first_abbrev; entry != NULL; entry = entry->next)
+-                if (entry->entry == abbrev_number)
+-                  break;
+-              if (entry != NULL)
+-                printf (" (%s)", get_TAG_name (entry->tag));
+-            }
++          printf (" (%s)", get_TAG_name (entry->tag));
+           printf ("]");
+         }
+       }
+@@ -3238,8 +3461,100 @@ process_debug_info (struct dwarf_section *           section,
+   if (!do_loc && dwarf_start_die == 0)
+     introduce (section, FALSE);
++
++  free_all_abbrevs ();
++  free (cu_abbrev_map);
++  cu_abbrev_map = NULL;
++  next_free_abbrev_map_entry = 0;
+   
+-  for (section_begin = start, unit = 0; start < end; unit++)
++  /* In order to be able to resolve DW_FORM_ref_attr forms we need
++     to load *all* of the abbrevs for all CUs in this .debug_info
++     section.  This does effectively mean that we (partially) read
++     every CU header twice.  */
++  for (section_begin = start; start < end;)
++    {
++      DWARF2_Internal_CompUnit  compunit;
++      unsigned char *           hdrptr;
++      dwarf_vma                 abbrev_base;
++      size_t                    abbrev_size;
++      dwarf_vma                 cu_offset;
++      unsigned int              offset_size;
++      unsigned int              initial_length_size;
++      struct cu_tu_set *        this_set;
++      abbrev_list *             list;
++
++      hdrptr = start;
++
++      SAFE_BYTE_GET_AND_INC (compunit.cu_length, hdrptr, 4, end);
++
++      if (compunit.cu_length == 0xffffffff)
++      {
++        SAFE_BYTE_GET_AND_INC (compunit.cu_length, hdrptr, 8, end);
++        offset_size = 8;
++        initial_length_size = 12;
++      }
++      else
++      {
++        offset_size = 4;
++        initial_length_size = 4;
++      }
++
++      SAFE_BYTE_GET_AND_INC (compunit.cu_version, hdrptr, 2, end);
++
++      cu_offset = start - section_begin;
++
++      this_set = find_cu_tu_set_v2 (cu_offset, do_types);
++
++      if (compunit.cu_version < 5)
++      {
++        compunit.cu_unit_type = DW_UT_compile;
++        /* Initialize it due to a false compiler warning.  */
++        compunit.cu_pointer_size = -1;
++      }
++      else
++      {
++        SAFE_BYTE_GET_AND_INC (compunit.cu_unit_type, hdrptr, 1, end);
++        do_types = (compunit.cu_unit_type == DW_UT_type);
++
++        SAFE_BYTE_GET_AND_INC (compunit.cu_pointer_size, hdrptr, 1, end);
++      }
++
++      SAFE_BYTE_GET_AND_INC (compunit.cu_abbrev_offset, hdrptr, offset_size, end);
++
++      if (this_set == NULL)
++      {
++        abbrev_base = 0;
++        abbrev_size = debug_displays [abbrev_sec].section.size;
++      }
++      else
++      {
++        abbrev_base = this_set->section_offsets [DW_SECT_ABBREV];
++        abbrev_size = this_set->section_sizes [DW_SECT_ABBREV];
++      }
++
++      list = find_abbrev_list_by_abbrev_offset (abbrev_base,
++                                              compunit.cu_abbrev_offset);
++      if (list == NULL)
++      {
++        unsigned char *  next;
++
++        list = new_abbrev_list (abbrev_base,
++                                compunit.cu_abbrev_offset);
++        next = process_abbrev_set
++          (((unsigned char *) debug_displays [abbrev_sec].section.start
++            + abbrev_base + compunit.cu_abbrev_offset),
++           ((unsigned char *) debug_displays [abbrev_sec].section.start
++            + abbrev_base + abbrev_size),
++           list);
++        list->start_of_next_abbrevs = next;
++      }
++                     
++      start = section_begin + cu_offset + compunit.cu_length
++      + initial_length_size;
++      record_abbrev_list_for_cu (cu_offset, start - section_begin, list);
++    }
++
++  for (start = section_begin, unit = 0; start < end; unit++)
+     {
+       DWARF2_Internal_CompUnit compunit;
+       unsigned char *hdrptr;
+@@ -3255,6 +3570,7 @@ process_debug_info (struct dwarf_section *           section,
+       struct cu_tu_set *this_set;
+       dwarf_vma abbrev_base;
+       size_t abbrev_size;
++      abbrev_list * list = NULL;
+       hdrptr = start;
+@@ -3361,6 +3677,10 @@ process_debug_info (struct dwarf_section *           section,
+                 dwarf_vmatoa ("x", compunit.cu_length),
+                 offset_size == 8 ? "64-bit" : "32-bit");
+         printf (_("   Version:       %d\n"), compunit.cu_version);
++        if (compunit.cu_version >= 5)
++          printf (_("   Unit Type:     %s (%x)\n"),
++                  get_DW_UT_name (compunit.cu_unit_type) ?: "???",
++                  compunit.cu_unit_type);
+         printf (_("   Abbrev Offset: 0x%s\n"),
+                 dwarf_vmatoa ("x", compunit.cu_abbrev_offset));
+         printf (_("   Pointer Size:  %d\n"), compunit.cu_pointer_size);
+@@ -3419,6 +3739,7 @@ process_debug_info (struct dwarf_section *           section,
+       }
+       if (compunit.cu_unit_type != DW_UT_compile
++        && compunit.cu_unit_type != DW_UT_partial
+         && compunit.cu_unit_type != DW_UT_type)
+       {
+         warn (_("CU at offset %s contains corrupt or "
+@@ -3427,8 +3748,6 @@ process_debug_info (struct dwarf_section *           section,
+         continue;
+       }
+-      free_abbrevs ();
+-
+       /* Process the abbrevs used by this compilation unit.  */
+       if (compunit.cu_abbrev_offset >= abbrev_size)
+       warn (_("Debug info is corrupted, abbrev offset (%lx) is larger than abbrev section size (%lx)\n"),
+@@ -3441,11 +3760,24 @@ process_debug_info (struct dwarf_section *           section,
+             (unsigned long) abbrev_base + abbrev_size,
+             (unsigned long) debug_displays [abbrev_sec].section.size);
+       else
+-      process_abbrev_section
+-        (((unsigned char *) debug_displays [abbrev_sec].section.start
+-          + abbrev_base + compunit.cu_abbrev_offset),
+-         ((unsigned char *) debug_displays [abbrev_sec].section.start
+-          + abbrev_base + abbrev_size));
++      {
++        list = find_abbrev_list_by_abbrev_offset (abbrev_base,
++                                                  compunit.cu_abbrev_offset);
++        if (list == NULL)
++          {
++            unsigned char * next;
++
++            list = new_abbrev_list (abbrev_base,
++                                    compunit.cu_abbrev_offset);
++            next = process_abbrev_set
++              (((unsigned char *) debug_displays [abbrev_sec].section.start
++                + abbrev_base + compunit.cu_abbrev_offset),
++               ((unsigned char *) debug_displays [abbrev_sec].section.start
++                + abbrev_base + abbrev_size),
++               list);
++            list->start_of_next_abbrevs = next;
++          }
++      }
+       level = 0;
+       last_level = level;
+@@ -3525,11 +3857,13 @@ process_debug_info (struct dwarf_section *           section,
+         /* Scan through the abbreviation list until we reach the
+            correct entry.  */
+-        for (entry = first_abbrev;
+-             entry && entry->entry != abbrev_number;
+-             entry = entry->next)
++        if (list == NULL)
+           continue;
++        for (entry = list->first_abbrev; entry != NULL; entry = entry->next)
++          if (entry->number == abbrev_number)
++            break;
++
+         if (entry == NULL)
+           {
+             if (!do_loc && do_printing)
+@@ -5714,30 +6048,37 @@ display_debug_abbrev (struct dwarf_section *section,
+ {
+   abbrev_entry *entry;
+   unsigned char *start = section->start;
+-  unsigned char *end = start + section->size;
++  const unsigned char *end = start + section->size;
+   introduce (section, FALSE);
+   do
+     {
+-      unsigned char *last;
+-
+-      free_abbrevs ();
++      abbrev_list *    list;
++      dwarf_vma        offset;
+-      last = start;
+-      start = process_abbrev_section (start, end);
++      offset = start - section->start;
++      list = find_abbrev_list_by_abbrev_offset (0, offset);
++      if (list == NULL)
++      {
++        list = new_abbrev_list (0, offset);
++        start = process_abbrev_set (start, end, list);
++        list->start_of_next_abbrevs = start;
++      }
++      else
++      start = list->start_of_next_abbrevs;
+-      if (first_abbrev == NULL)
++      if (list->first_abbrev == NULL)
+       continue;
+-      printf (_("  Number TAG (0x%lx)\n"), (long) (last - section->start));
++      printf (_("  Number TAG (0x%lx)\n"), (long) offset);
+-      for (entry = first_abbrev; entry; entry = entry->next)
++      for (entry = list->first_abbrev; entry; entry = entry->next)
+       {
+         abbrev_attr *attr;
+         printf ("   %ld      %s    [%s]\n",
+-                entry->entry,
++                entry->number,
+                 get_TAG_name (entry->tag),
+                 entry->children ? _("has children") : _("no children"));
+@@ -6013,7 +6354,9 @@ display_loclists_list (struct dwarf_section *section,
+       SAFE_BYTE_GET_AND_INC (llet, start, 1, section_end);
+-      if (vstart && llet == DW_LLE_offset_pair)
++      if (vstart && (llet == DW_LLE_offset_pair
++                   || llet == DW_LLE_start_end
++                   || llet == DW_LLE_start_length))
+       {
+         off = offset + (vstart - *start_ptr);
+@@ -6034,7 +6377,18 @@ display_loclists_list (struct dwarf_section *section,
+         break;
+       case DW_LLE_offset_pair:
+         READ_ULEB (begin, start, section_end);
++        begin += base_address;
+         READ_ULEB (end, start, section_end);
++        end += base_address;
++        break;
++      case DW_LLE_start_end:
++        SAFE_BYTE_GET_AND_INC (begin, start, pointer_size, section_end);
++        SAFE_BYTE_GET_AND_INC (end, start, pointer_size, section_end);
++        break;
++      case DW_LLE_start_length:
++        SAFE_BYTE_GET_AND_INC (begin, start, pointer_size, section_end);
++        READ_ULEB (end, start, section_end);
++        end += begin;
+         break;
+       case DW_LLE_base_address:
+         SAFE_BYTE_GET_AND_INC (base_address, start, pointer_size,
+@@ -6061,7 +6415,9 @@ display_loclists_list (struct dwarf_section *section,
+       }
+       if (llet == DW_LLE_end_of_list)
+       break;
+-      if (llet != DW_LLE_offset_pair)
++      if (llet != DW_LLE_offset_pair
++        && llet != DW_LLE_start_end
++        && llet != DW_LLE_start_length)
+       continue;
+       if (start + 2 > section_end)
+@@ -6073,8 +6429,8 @@ display_loclists_list (struct dwarf_section *section,
+       READ_ULEB (length, start, section_end);
+-      print_dwarf_vma (begin + base_address, pointer_size);
+-      print_dwarf_vma (end + base_address, pointer_size);
++      print_dwarf_vma (begin, pointer_size);
++      print_dwarf_vma (end, pointer_size);
+       putchar ('(');
+       need_frame_base = decode_location_expression (start,
+@@ -7082,8 +7438,15 @@ display_debug_rnglists_list (unsigned char *start, unsigned char *finish,
+       if (rlet == DW_RLE_base_address)
+       continue;
+-      print_dwarf_vma (begin + base_address, pointer_size);
+-      print_dwarf_vma (end + base_address, pointer_size);
++      /* Only a DW_RLE_offset_pair needs the base address added.  */
++      if (rlet == DW_RLE_offset_pair)
++      {
++        begin += base_address;
++        end += base_address;
++      }
++
++      print_dwarf_vma (begin, pointer_size);
++      print_dwarf_vma (end, pointer_size);
+       if (begin == end)
+       fputs (_("(start == end)"), stdout);
+@@ -10747,8 +11110,12 @@ free_debug_memory (void)
+ {
+   unsigned int i;
+-  free_abbrevs ();
++  free_all_abbrevs ();
++  free (cu_abbrev_map);
++  cu_abbrev_map = NULL;
++  next_free_abbrev_map_entry = 0;
++  
+   for (i = 0; i < max; i++)
+     free_debug_section ((enum dwarf_section_display_enum) i);
+diff --git a/binutils/nm.c b/binutils/nm.c
+index 1b5122d56ab..a5144faba60 100644
+--- a/binutils/nm.c
++++ b/binutils/nm.c
+@@ -161,7 +161,6 @@ static int show_version = 0;       /* Show the version number.  */
+ static int show_synthetic = 0;        /* Display synthesized symbols too.  */
+ static int line_numbers = 0;  /* Print line numbers for symbols.  */
+ static int allow_special_symbols = 0;  /* Allow special symbols.  */
+-static int with_symbol_versions = 0; /* Include symbol version information in the output.  */
+ static int demangle_flags = DMGL_ANSI | DMGL_PARAMS;
+@@ -192,7 +191,8 @@ enum long_option_values
+   OPTION_PLUGIN,
+   OPTION_SIZE_SORT,
+   OPTION_RECURSE_LIMIT,
+-  OPTION_NO_RECURSE_LIMIT
++  OPTION_NO_RECURSE_LIMIT,
++  OPTION_WITH_SYMBOL_VERSIONS
+ };
+ static struct option long_options[] =
+@@ -226,7 +226,8 @@ static struct option long_options[] =
+   {"defined-only", no_argument, &defined_only, 1},
+   {"undefined-only", no_argument, &undefined_only, 1},
+   {"version", no_argument, &show_version, 1},
+-  {"with-symbol-versions", no_argument, &with_symbol_versions, 1},
++  {"with-symbol-versions", no_argument, NULL,
++   OPTION_WITH_SYMBOL_VERSIONS},
+   {0, no_argument, 0, 0}
+ };
\f
+@@ -396,21 +397,17 @@ static void
+ print_symname (const char *form, struct extended_symbol_info *info,
+              const char *name, bfd *abfd)
+ {
++  char *alloc = NULL;
++
+   if (name == NULL)
+     name = info->sinfo->name;
+   if (do_demangle && *name)
+     {
+-      char *res = bfd_demangle (abfd, name, demangle_flags);
+-
+-      if (res != NULL)
+-      {
+-        printf (form, res);
+-        free (res);
+-        return;
+-      }
++      alloc = bfd_demangle (abfd, name, demangle_flags);
++      if (alloc != NULL)
++      name = alloc;
+     }
+-  printf (form, name);
+   if (info != NULL && info->elfinfo)
+     {
+       const char *version_string;
+@@ -420,8 +417,17 @@ print_symname (const char *form, struct extended_symbol_info *info,
+       = bfd_get_symbol_version_string (abfd, &info->elfinfo->symbol,
+                                        FALSE, &hidden);
+       if (version_string && version_string[0])
+-      printf ("%s%s", hidden ? "@" : "@@", version_string);
++      {
++        const char *at = "@@";
++        if (hidden || bfd_is_und_section (info->elfinfo->symbol.section))
++          at = "@";
++        alloc = reconcat (alloc, name, at, version_string, NULL);
++        if (alloc != NULL)
++          name = alloc;
++      }
+     }
++  printf (form, name);
++  free (alloc);
+ }
+ static void
+@@ -901,22 +907,6 @@ print_symbol (bfd *        abfd,
+   format->print_symbol_info (&info, abfd);
+-  if (with_symbol_versions)
+-    {
+-      const char *  version_string = NULL;
+-      bfd_boolean   hidden = FALSE;
+-
+-      if ((sym->flags & (BSF_SECTION_SYM | BSF_SYNTHETIC)) == 0)
+-      version_string = bfd_get_symbol_version_string (abfd, sym,
+-                                                      TRUE, &hidden);
+-
+-      if (bfd_is_und_section (bfd_asymbol_section (sym)))
+-      hidden = TRUE;
+-
+-      if (version_string && *version_string != '\0')
+-      printf (hidden ? "@%s" : "@@%s", version_string);
+-    }
+-
+   if (line_numbers)
+     {
+       static asymbol **syms;
+@@ -1761,6 +1751,9 @@ main (int argc, char **argv)
+       case OPTION_NO_RECURSE_LIMIT:
+         demangle_flags |= DMGL_NO_RECURSE_LIMIT;
+         break;
++      case OPTION_WITH_SYMBOL_VERSIONS:
++        /* Ignored for backward compatibility.  */
++        break;
+       case 'D':
+         dynamic = 1;
+         break;
+diff --git a/binutils/readelf.c b/binutils/readelf.c
+index 6057515a89b..41547a2594b 100644
+--- a/binutils/readelf.c
++++ b/binutils/readelf.c
+@@ -12091,9 +12091,9 @@ print_dynamic_symbol (Filedata *filedata, unsigned long si,
+   int len_avail = 21;
+   if (! do_wide && version_string != NULL)
+     {
+-      char buffer[256];
++      char buffer[16];
+-      len_avail -= sprintf (buffer, "@%s", version_string);
++      len_avail -= 1 + strlen (version_string);
+       if (sym_info == symbol_undefined)
+       len_avail -= sprintf (buffer," (%d)", vna_other);
+diff --git a/binutils/testsuite/binutils-all/dw5.W b/binutils/testsuite/binutils-all/dw5.W
+index 2eccb03c5a6..cb949ad49cd 100644
+--- a/binutils/testsuite/binutils-all/dw5.W
++++ b/binutils/testsuite/binutils-all/dw5.W
+@@ -3,6 +3,7 @@ Contents of the .debug_info section:
+   Compilation Unit @ offset 0x0:
+    Length:        0x160 \(32-bit\)
+    Version:       5
++   Unit Type:     DW_UT_compile \(1\)
+    Abbrev Offset: 0x0
+    Pointer Size:  8
+  <0><c>: Abbrev Number: 6 \(DW_TAG_compile_unit\)
+diff --git a/binutils/testsuite/binutils-all/dwarf-attributes.W b/binutils/testsuite/binutils-all/dwarf-attributes.W
+index 3a4e7409889..4e8386ae880 100644
+--- a/binutils/testsuite/binutils-all/dwarf-attributes.W
++++ b/binutils/testsuite/binutils-all/dwarf-attributes.W
+@@ -3,6 +3,7 @@ Contents of the .debug_info section:
+   Compilation Unit @ offset 0x0:
+    Length:        0x40 \(32-bit\)
+    Version:       5
++   Unit Type:     DW_UT_compile \(1\)
+    Abbrev Offset: 0x0
+    Pointer Size:  4
+  <0><c>: Abbrev Number: 1 \(User TAG value: 0x5555\)
+diff --git a/binutils/testsuite/binutils-all/x86-64/pr26808.dump b/binutils/testsuite/binutils-all/x86-64/pr26808.dump
+new file mode 100644
+index 00000000000..f64f9d008f9
+--- /dev/null
++++ b/binutils/testsuite/binutils-all/x86-64/pr26808.dump
+@@ -0,0 +1,1440 @@
++Contents of the .debug_info.dwo section:
++
++  Compilation Unit @ offset 0x0:
++   Length:        0x178 (32-bit)
++   Version:       4
++   Abbrev Offset: 0x0
++   Pointer Size:  8
++   Section contributions:
++    .debug_abbrev.dwo:       0x0  0x154
++    .debug_line.dwo:         0x0  0x40
++    .debug_loc.dwo:          0x0  0x0
++    .debug_str_offsets.dwo:  0x0  0x14
++ <0><b>: Abbrev Number: 12 (DW_TAG_compile_unit)
++    <c>   DW_AT_producer    : GNU C++ 4.7.x-google 20120720 (prerelease)
++    <37>   DW_AT_language    : 4      (C++)
++    <38>   DW_AT_name        : dwp_test_main.cc
++    <49>   DW_AT_comp_dir    : /home/ccoutant/opensource/binutils-git/binutils/gold/testsuite
++    <88>   DW_AT_GNU_dwo_id  : 0xe5ba51d95c9aebc8
++ <1><90>: Abbrev Number: 7 (DW_TAG_base_type)
++    <91>   DW_AT_byte_size   : 4
++    <92>   DW_AT_encoding    : 5      (signed)
++    <93>   DW_AT_name        : int
++ <1><97>: Abbrev Number: 7 (DW_TAG_base_type)
++    <98>   DW_AT_byte_size   : 1
++    <99>   DW_AT_encoding    : 2      (boolean)
++    <9a>   DW_AT_name        : bool
++ <1><9f>: Abbrev Number: 13 (DW_TAG_subprogram)
++    <a0>   DW_AT_external    : 1
++    <a0>   DW_AT_name        : main
++    <a5>   DW_AT_decl_file   : 1
++    <a6>   DW_AT_decl_line   : 30
++    <a7>   DW_AT_type        : <0x90>
++    <ab>   DW_AT_low_pc      : (addr_index: 0x0): <no .debug_addr section>
++    <ac>   DW_AT_high_pc     : 0x304
++    <b4>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
++    <b6>   DW_AT_GNU_all_tail_call_sites: 1
++    <b6>   DW_AT_sibling     : <0x11b>
++ <2><ba>: Abbrev Number: 14 (DW_TAG_lexical_block)
++    <bb>   DW_AT_low_pc      : (addr_index: 0x1): <no .debug_addr section>
++    <bc>   DW_AT_high_pc     : 0x2fa
++ <3><c4>: Abbrev Number: 15 (DW_TAG_variable)
++    <c5>   DW_AT_name        : c1
++    <c8>   DW_AT_decl_file   : 1
++    <c9>   DW_AT_decl_line   : 32
++    <ca>   DW_AT_type        : signature: 0xb5faa2a4b7a919c4
++    <d2>   DW_AT_location    : 2 byte block: 91 60    (DW_OP_fbreg: -32)
++ <3><d5>: Abbrev Number: 15 (DW_TAG_variable)
++    <d6>   DW_AT_name        : c2
++    <d9>   DW_AT_decl_file   : 1
++    <da>   DW_AT_decl_line   : 33
++    <db>   DW_AT_type        : signature: 0xab98c7bc886f5266
++    <e3>   DW_AT_location    : 2 byte block: 91 50    (DW_OP_fbreg: -48)
++ <3><e6>: Abbrev Number: 16 (DW_TAG_variable)
++    <e7>   DW_AT_name        : __PRETTY_FUNCTION__
++    <fb>   DW_AT_type        : <0x13f>
++    <ff>   DW_AT_artificial  : 1
++    <ff>   DW_AT_location    : 2 byte block: fb 2     (DW_OP_GNU_addr_index <0x2>)
++ <3><102>: Abbrev Number: 14 (DW_TAG_lexical_block)
++    <103>   DW_AT_low_pc      : (addr_index: 0x3): <no .debug_addr section>
++    <104>   DW_AT_high_pc     : 0x2f
++ <4><10c>: Abbrev Number: 17 (DW_TAG_variable)
++    <10d>   DW_AT_name        : i
++    <10f>   DW_AT_decl_file   : 1
++    <110>   DW_AT_decl_line   : 37
++    <111>   DW_AT_type        : <0x90>
++    <115>   DW_AT_location    : 2 byte block: 91 6c   (DW_OP_fbreg: -20)
++ <4><118>: Abbrev Number: 0
++ <3><119>: Abbrev Number: 0
++ <2><11a>: Abbrev Number: 0
++ <1><11b>: Abbrev Number: 18 (DW_TAG_array_type)
++    <11c>   DW_AT_type        : <0x137>
++    <120>   DW_AT_sibling     : <0x12b>
++ <2><124>: Abbrev Number: 19 (DW_TAG_subrange_type)
++    <125>   DW_AT_type        : <0x12b>
++    <129>   DW_AT_upper_bound : 10
++ <2><12a>: Abbrev Number: 0
++ <1><12b>: Abbrev Number: 7 (DW_TAG_base_type)
++    <12c>   DW_AT_byte_size   : 8
++    <12d>   DW_AT_encoding    : 7     (unsigned)
++    <12e>   DW_AT_name        : sizetype
++ <1><137>: Abbrev Number: 7 (DW_TAG_base_type)
++    <138>   DW_AT_byte_size   : 1
++    <139>   DW_AT_encoding    : 6     (signed char)
++    <13a>   DW_AT_name        : char
++ <1><13f>: Abbrev Number: 20 (DW_TAG_const_type)
++    <140>   DW_AT_type        : <0x11b>
++ <1><144>: Abbrev Number: 21 (DW_TAG_variable)
++    <145>   DW_AT_name        : c3
++    <148>   DW_AT_decl_file   : 2
++    <149>   DW_AT_decl_line   : 57
++    <14a>   DW_AT_type        : signature: 0xb534bdc1f01629bb
++    <152>   DW_AT_external    : 1
++    <152>   DW_AT_declaration : 1
++ <1><152>: Abbrev Number: 22 (DW_TAG_variable)
++    <153>   DW_AT_name        : v3
++    <156>   DW_AT_decl_file   : 2
++    <157>   DW_AT_decl_line   : 60
++    <158>   DW_AT_type        : <0x90>
++    <15c>   DW_AT_external    : 1
++    <15c>   DW_AT_declaration : 1
++ <1><15c>: Abbrev Number: 18 (DW_TAG_array_type)
++    <15d>   DW_AT_type        : <0x137>
++    <161>   DW_AT_sibling     : <0x167>
++ <2><165>: Abbrev Number: 23 (DW_TAG_subrange_type)
++ <2><166>: Abbrev Number: 0
++ <1><167>: Abbrev Number: 22 (DW_TAG_variable)
++    <168>   DW_AT_name        : v4
++    <16b>   DW_AT_decl_file   : 2
++    <16c>   DW_AT_decl_line   : 61
++    <16d>   DW_AT_type        : <0x15c>
++    <171>   DW_AT_external    : 1
++    <171>   DW_AT_declaration : 1
++ <1><171>: Abbrev Number: 22 (DW_TAG_variable)
++    <172>   DW_AT_name        : v5
++    <175>   DW_AT_decl_file   : 2
++    <176>   DW_AT_decl_line   : 62
++    <177>   DW_AT_type        : <0x15c>
++    <17b>   DW_AT_external    : 1
++    <17b>   DW_AT_declaration : 1
++ <1><17b>: Abbrev Number: 0
++  Compilation Unit @ offset 0x17c:
++   Length:        0x5af (32-bit)
++   Version:       4
++   Abbrev Offset: 0x0
++   Pointer Size:  8
++   Section contributions:
++    .debug_abbrev.dwo:       0x154  0x21d
++    .debug_line.dwo:         0x40  0x3d
++    .debug_loc.dwo:          0x0  0x0
++    .debug_str_offsets.dwo:  0x14  0x44
++ <0><187>: Abbrev Number: 12 (DW_TAG_compile_unit)
++    <188>   DW_AT_producer    : GNU C++ 4.7.x-google 20120720 (prerelease)
++    <1b3>   DW_AT_language    : 4     (C++)
++    <1b4>   DW_AT_name        : dwp_test_1.cc
++    <1c2>   DW_AT_comp_dir    : /home/ccoutant/opensource/binutils-git/binutils/gold/testsuite
++    <201>   DW_AT_GNU_dwo_id  : 0x52f9c6092fdc3727
++ <1><209>: Abbrev Number: 13 (DW_TAG_class_type)
++    <20a>   DW_AT_name        : C1
++    <20d>   DW_AT_signature   : signature: 0xb5faa2a4b7a919c4
++    <215>   DW_AT_declaration : 1
++    <215>   DW_AT_sibling     : <0x242>
++ <2><219>: Abbrev Number: 14 (DW_TAG_subprogram)
++    <21a>   DW_AT_external    : 1
++    <21a>   DW_AT_name        : (indexed string: 0x0): testcase1
++    <21b>   DW_AT_decl_file   : 1
++    <21c>   DW_AT_decl_line   : 28
++    <21d>   DW_AT_linkage_name: (indexed string: 0xc): _ZN2C19testcase1Ev
++    <21e>   DW_AT_type        : <0x249>
++    <222>   DW_AT_accessibility: 1    (public)
++    <223>   DW_AT_declaration : 1
++ <2><223>: Abbrev Number: 14 (DW_TAG_subprogram)
++    <224>   DW_AT_external    : 1
++    <224>   DW_AT_name        : (indexed string: 0x1): testcase2
++    <225>   DW_AT_decl_file   : 1
++    <226>   DW_AT_decl_line   : 31
++    <227>   DW_AT_linkage_name: (indexed string: 0xd): _ZN2C19testcase2Ev
++    <228>   DW_AT_type        : <0x249>
++    <22c>   DW_AT_accessibility: 1    (public)
++    <22d>   DW_AT_declaration : 1
++ <2><22d>: Abbrev Number: 14 (DW_TAG_subprogram)
++    <22e>   DW_AT_external    : 1
++    <22e>   DW_AT_name        : (indexed string: 0x4): testcase3
++    <22f>   DW_AT_decl_file   : 1
++    <230>   DW_AT_decl_line   : 32
++    <231>   DW_AT_linkage_name: (indexed string: 0xe): _ZN2C19testcase3Ev
++    <232>   DW_AT_type        : <0x249>
++    <236>   DW_AT_accessibility: 1    (public)
++    <237>   DW_AT_declaration : 1
++ <2><237>: Abbrev Number: 14 (DW_TAG_subprogram)
++    <238>   DW_AT_external    : 1
++    <238>   DW_AT_name        : (indexed string: 0xa): testcase4
++    <239>   DW_AT_decl_file   : 1
++    <23a>   DW_AT_decl_line   : 33
++    <23b>   DW_AT_linkage_name: (indexed string: 0xf): _ZN2C19testcase4Ev
++    <23c>   DW_AT_type        : <0x249>
++    <240>   DW_AT_accessibility: 1    (public)
++    <241>   DW_AT_declaration : 1
++ <2><241>: Abbrev Number: 0
++ <1><242>: Abbrev Number: 7 (DW_TAG_base_type)
++    <243>   DW_AT_byte_size   : 4
++    <244>   DW_AT_encoding    : 5     (signed)
++    <245>   DW_AT_name        : int
++ <1><249>: Abbrev Number: 7 (DW_TAG_base_type)
++    <24a>   DW_AT_byte_size   : 1
++    <24b>   DW_AT_encoding    : 2     (boolean)
++    <24c>   DW_AT_name        : bool
++ <1><251>: Abbrev Number: 15 (DW_TAG_pointer_type)
++    <252>   DW_AT_byte_size   : 8
++    <253>   DW_AT_type        : signature: 0xb5faa2a4b7a919c4
++ <1><25b>: Abbrev Number: 13 (DW_TAG_class_type)
++    <25c>   DW_AT_name        : C2
++    <25f>   DW_AT_signature   : signature: 0xab98c7bc886f5266
++    <267>   DW_AT_declaration : 1
++    <267>   DW_AT_sibling     : <0x294>
++ <2><26b>: Abbrev Number: 14 (DW_TAG_subprogram)
++    <26c>   DW_AT_external    : 1
++    <26c>   DW_AT_name        : (indexed string: 0x0): testcase1
++    <26d>   DW_AT_decl_file   : 1
++    <26e>   DW_AT_decl_line   : 40
++    <26f>   DW_AT_linkage_name: (indexed string: 0x7): _ZN2C29testcase1Ev
++    <270>   DW_AT_type        : <0x249>
++    <274>   DW_AT_accessibility: 1    (public)
++    <275>   DW_AT_declaration : 1
++ <2><275>: Abbrev Number: 14 (DW_TAG_subprogram)
++    <276>   DW_AT_external    : 1
++    <276>   DW_AT_name        : (indexed string: 0x1): testcase2
++    <277>   DW_AT_decl_file   : 1
++    <278>   DW_AT_decl_line   : 41
++    <279>   DW_AT_linkage_name: (indexed string: 0x8): _ZN2C29testcase2Ev
++    <27a>   DW_AT_type        : <0x249>
++    <27e>   DW_AT_accessibility: 1    (public)
++    <27f>   DW_AT_declaration : 1
++ <2><27f>: Abbrev Number: 14 (DW_TAG_subprogram)
++    <280>   DW_AT_external    : 1
++    <280>   DW_AT_name        : (indexed string: 0x4): testcase3
++    <281>   DW_AT_decl_file   : 1
++    <282>   DW_AT_decl_line   : 42
++    <283>   DW_AT_linkage_name: (indexed string: 0x9): _ZN2C29testcase3Ev
++    <284>   DW_AT_type        : <0x249>
++    <288>   DW_AT_accessibility: 1    (public)
++    <289>   DW_AT_declaration : 1
++ <2><289>: Abbrev Number: 14 (DW_TAG_subprogram)
++    <28a>   DW_AT_external    : 1
++    <28a>   DW_AT_name        : (indexed string: 0xa): testcase4
++    <28b>   DW_AT_decl_file   : 1
++    <28c>   DW_AT_decl_line   : 43
++    <28d>   DW_AT_linkage_name: (indexed string: 0xb): _ZN2C29testcase4Ev
++    <28e>   DW_AT_type        : <0x249>
++    <292>   DW_AT_accessibility: 1    (public)
++    <293>   DW_AT_declaration : 1
++ <2><293>: Abbrev Number: 0
++ <1><294>: Abbrev Number: 15 (DW_TAG_pointer_type)
++    <295>   DW_AT_byte_size   : 8
++    <296>   DW_AT_type        : signature: 0xab98c7bc886f5266
++ <1><29e>: Abbrev Number: 13 (DW_TAG_class_type)
++    <29f>   DW_AT_name        : C3
++    <2a2>   DW_AT_signature   : signature: 0xb534bdc1f01629bb
++    <2aa>   DW_AT_declaration : 1
++    <2aa>   DW_AT_sibling     : <0x2cd>
++ <2><2ae>: Abbrev Number: 14 (DW_TAG_subprogram)
++    <2af>   DW_AT_external    : 1
++    <2af>   DW_AT_name        : (indexed string: 0x0): testcase1
++    <2b0>   DW_AT_decl_file   : 1
++    <2b1>   DW_AT_decl_line   : 50
++    <2b2>   DW_AT_linkage_name: (indexed string: 0x2): _ZN2C39testcase1Ev
++    <2b3>   DW_AT_type        : <0x249>
++    <2b7>   DW_AT_accessibility: 1    (public)
++    <2b8>   DW_AT_declaration : 1
++ <2><2b8>: Abbrev Number: 14 (DW_TAG_subprogram)
++    <2b9>   DW_AT_external    : 1
++    <2b9>   DW_AT_name        : (indexed string: 0x1): testcase2
++    <2ba>   DW_AT_decl_file   : 1
++    <2bb>   DW_AT_decl_line   : 51
++    <2bc>   DW_AT_linkage_name: (indexed string: 0x3): _ZN2C39testcase2Ev
++    <2bd>   DW_AT_type        : <0x249>
++    <2c1>   DW_AT_accessibility: 1    (public)
++    <2c2>   DW_AT_declaration : 1
++ <2><2c2>: Abbrev Number: 14 (DW_TAG_subprogram)
++    <2c3>   DW_AT_external    : 1
++    <2c3>   DW_AT_name        : (indexed string: 0x4): testcase3
++    <2c4>   DW_AT_decl_file   : 1
++    <2c5>   DW_AT_decl_line   : 52
++    <2c6>   DW_AT_linkage_name: (indexed string: 0x5): _ZN2C39testcase3Ev
++    <2c7>   DW_AT_type        : <0x249>
++    <2cb>   DW_AT_accessibility: 1    (public)
++    <2cc>   DW_AT_declaration : 1
++ <2><2cc>: Abbrev Number: 0
++ <1><2cd>: Abbrev Number: 15 (DW_TAG_pointer_type)
++    <2ce>   DW_AT_byte_size   : 8
++    <2cf>   DW_AT_type        : signature: 0xb534bdc1f01629bb
++ <1><2d7>: Abbrev Number: 16 (DW_TAG_subprogram)
++    <2d8>   DW_AT_external    : 1
++    <2d8>   DW_AT_name        : f13i
++    <2dd>   DW_AT_decl_file   : 1
++    <2de>   DW_AT_decl_line   : 70
++    <2df>   DW_AT_linkage_name: _Z4f13iv
++    <2e8>   DW_AT_low_pc      : (addr_index: 0x0): <no .debug_addr section>
++    <2e9>   DW_AT_high_pc     : 0x6
++    <2f1>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <2f3>   DW_AT_GNU_all_call_sites: 1
++ <1><2f3>: Abbrev Number: 17 (DW_TAG_subprogram)
++    <2f4>   DW_AT_specification: <0x219>
++    <2f8>   DW_AT_decl_file   : 2
++    <2f9>   DW_AT_decl_line   : 30
++    <2fa>   DW_AT_low_pc      : (addr_index: 0x1): <no .debug_addr section>
++    <2fb>   DW_AT_high_pc     : 0x20
++    <303>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <305>   DW_AT_object_pointer: <0x30d>
++    <309>   DW_AT_GNU_all_tail_call_sites: 1
++    <309>   DW_AT_sibling     : <0x317>
++ <2><30d>: Abbrev Number: 18 (DW_TAG_formal_parameter)
++    <30e>   DW_AT_name        : (indexed string: 0x10): this
++    <30f>   DW_AT_type        : <0x317>
++    <313>   DW_AT_artificial  : 1
++    <313>   DW_AT_location    : 2 byte block: 91 68   (DW_OP_fbreg: -24)
++ <2><316>: Abbrev Number: 0
++ <1><317>: Abbrev Number: 19 (DW_TAG_const_type)
++    <318>   DW_AT_type        : <0x251>
++ <1><31c>: Abbrev Number: 20 (DW_TAG_subprogram)
++    <31d>   DW_AT_specification: <0x223>
++    <321>   DW_AT_decl_file   : 2
++    <322>   DW_AT_decl_line   : 38
++    <323>   DW_AT_low_pc      : (addr_index: 0x2): <no .debug_addr section>
++    <324>   DW_AT_high_pc     : 0x18
++    <32c>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <32e>   DW_AT_object_pointer: <0x336>
++    <332>   DW_AT_GNU_all_call_sites: 1
++    <332>   DW_AT_sibling     : <0x340>
++ <2><336>: Abbrev Number: 18 (DW_TAG_formal_parameter)
++    <337>   DW_AT_name        : (indexed string: 0x10): this
++    <338>   DW_AT_type        : <0x317>
++    <33c>   DW_AT_artificial  : 1
++    <33c>   DW_AT_location    : 2 byte block: 91 68   (DW_OP_fbreg: -24)
++ <2><33f>: Abbrev Number: 0
++ <1><340>: Abbrev Number: 20 (DW_TAG_subprogram)
++    <341>   DW_AT_specification: <0x22d>
++    <345>   DW_AT_decl_file   : 2
++    <346>   DW_AT_decl_line   : 46
++    <347>   DW_AT_low_pc      : (addr_index: 0x3): <no .debug_addr section>
++    <348>   DW_AT_high_pc     : 0x18
++    <350>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <352>   DW_AT_object_pointer: <0x35a>
++    <356>   DW_AT_GNU_all_call_sites: 1
++    <356>   DW_AT_sibling     : <0x364>
++ <2><35a>: Abbrev Number: 18 (DW_TAG_formal_parameter)
++    <35b>   DW_AT_name        : (indexed string: 0x10): this
++    <35c>   DW_AT_type        : <0x317>
++    <360>   DW_AT_artificial  : 1
++    <360>   DW_AT_location    : 2 byte block: 91 68   (DW_OP_fbreg: -24)
++ <2><363>: Abbrev Number: 0
++ <1><364>: Abbrev Number: 20 (DW_TAG_subprogram)
++    <365>   DW_AT_specification: <0x237>
++    <369>   DW_AT_decl_file   : 2
++    <36a>   DW_AT_decl_line   : 54
++    <36b>   DW_AT_low_pc      : (addr_index: 0x4): <no .debug_addr section>
++    <36c>   DW_AT_high_pc     : 0x16
++    <374>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <376>   DW_AT_object_pointer: <0x37e>
++    <37a>   DW_AT_GNU_all_call_sites: 1
++    <37a>   DW_AT_sibling     : <0x388>
++ <2><37e>: Abbrev Number: 18 (DW_TAG_formal_parameter)
++    <37f>   DW_AT_name        : (indexed string: 0x10): this
++    <380>   DW_AT_type        : <0x317>
++    <384>   DW_AT_artificial  : 1
++    <384>   DW_AT_location    : 2 byte block: 91 68   (DW_OP_fbreg: -24)
++ <2><387>: Abbrev Number: 0
++ <1><388>: Abbrev Number: 20 (DW_TAG_subprogram)
++    <389>   DW_AT_specification: <0x26b>
++    <38d>   DW_AT_decl_file   : 2
++    <38e>   DW_AT_decl_line   : 62
++    <38f>   DW_AT_low_pc      : (addr_index: 0x5): <no .debug_addr section>
++    <390>   DW_AT_high_pc     : 0x16
++    <398>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <39a>   DW_AT_object_pointer: <0x3a2>
++    <39e>   DW_AT_GNU_all_call_sites: 1
++    <39e>   DW_AT_sibling     : <0x3ac>
++ <2><3a2>: Abbrev Number: 18 (DW_TAG_formal_parameter)
++    <3a3>   DW_AT_name        : (indexed string: 0x10): this
++    <3a4>   DW_AT_type        : <0x3ac>
++    <3a8>   DW_AT_artificial  : 1
++    <3a8>   DW_AT_location    : 2 byte block: 91 68   (DW_OP_fbreg: -24)
++ <2><3ab>: Abbrev Number: 0
++ <1><3ac>: Abbrev Number: 19 (DW_TAG_const_type)
++    <3ad>   DW_AT_type        : <0x294>
++ <1><3b1>: Abbrev Number: 20 (DW_TAG_subprogram)
++    <3b2>   DW_AT_specification: <0x275>
++    <3b6>   DW_AT_decl_file   : 2
++    <3b7>   DW_AT_decl_line   : 72
++    <3b8>   DW_AT_low_pc      : (addr_index: 0x6): <no .debug_addr section>
++    <3b9>   DW_AT_high_pc     : 0x1b
++    <3c1>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <3c3>   DW_AT_object_pointer: <0x3cb>
++    <3c7>   DW_AT_GNU_all_call_sites: 1
++    <3c7>   DW_AT_sibling     : <0x3d5>
++ <2><3cb>: Abbrev Number: 18 (DW_TAG_formal_parameter)
++    <3cc>   DW_AT_name        : (indexed string: 0x10): this
++    <3cd>   DW_AT_type        : <0x3ac>
++    <3d1>   DW_AT_artificial  : 1
++    <3d1>   DW_AT_location    : 2 byte block: 91 68   (DW_OP_fbreg: -24)
++ <2><3d4>: Abbrev Number: 0
++ <1><3d5>: Abbrev Number: 20 (DW_TAG_subprogram)
++    <3d6>   DW_AT_specification: <0x27f>
++    <3da>   DW_AT_decl_file   : 2
++    <3db>   DW_AT_decl_line   : 82
++    <3dc>   DW_AT_low_pc      : (addr_index: 0x7): <no .debug_addr section>
++    <3dd>   DW_AT_high_pc     : 0x1b
++    <3e5>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <3e7>   DW_AT_object_pointer: <0x3ef>
++    <3eb>   DW_AT_GNU_all_call_sites: 1
++    <3eb>   DW_AT_sibling     : <0x3f9>
++ <2><3ef>: Abbrev Number: 18 (DW_TAG_formal_parameter)
++    <3f0>   DW_AT_name        : (indexed string: 0x10): this
++    <3f1>   DW_AT_type        : <0x3ac>
++    <3f5>   DW_AT_artificial  : 1
++    <3f5>   DW_AT_location    : 2 byte block: 91 68   (DW_OP_fbreg: -24)
++ <2><3f8>: Abbrev Number: 0
++ <1><3f9>: Abbrev Number: 20 (DW_TAG_subprogram)
++    <3fa>   DW_AT_specification: <0x289>
++    <3fe>   DW_AT_decl_file   : 2
++    <3ff>   DW_AT_decl_line   : 92
++    <400>   DW_AT_low_pc      : (addr_index: 0x8): <no .debug_addr section>
++    <401>   DW_AT_high_pc     : 0x19
++    <409>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <40b>   DW_AT_object_pointer: <0x413>
++    <40f>   DW_AT_GNU_all_call_sites: 1
++    <40f>   DW_AT_sibling     : <0x41d>
++ <2><413>: Abbrev Number: 18 (DW_TAG_formal_parameter)
++    <414>   DW_AT_name        : (indexed string: 0x10): this
++    <415>   DW_AT_type        : <0x3ac>
++    <419>   DW_AT_artificial  : 1
++    <419>   DW_AT_location    : 2 byte block: 91 68   (DW_OP_fbreg: -24)
++ <2><41c>: Abbrev Number: 0
++ <1><41d>: Abbrev Number: 20 (DW_TAG_subprogram)
++    <41e>   DW_AT_specification: <0x2ae>
++    <422>   DW_AT_decl_file   : 2
++    <423>   DW_AT_decl_line   : 102
++    <424>   DW_AT_low_pc      : (addr_index: 0x9): <no .debug_addr section>
++    <425>   DW_AT_high_pc     : 0x19
++    <42d>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <42f>   DW_AT_object_pointer: <0x437>
++    <433>   DW_AT_GNU_all_call_sites: 1
++    <433>   DW_AT_sibling     : <0x441>
++ <2><437>: Abbrev Number: 18 (DW_TAG_formal_parameter)
++    <438>   DW_AT_name        : (indexed string: 0x10): this
++    <439>   DW_AT_type        : <0x441>
++    <43d>   DW_AT_artificial  : 1
++    <43d>   DW_AT_location    : 2 byte block: 91 68   (DW_OP_fbreg: -24)
++ <2><440>: Abbrev Number: 0
++ <1><441>: Abbrev Number: 19 (DW_TAG_const_type)
++    <442>   DW_AT_type        : <0x2cd>
++ <1><446>: Abbrev Number: 17 (DW_TAG_subprogram)
++    <447>   DW_AT_specification: <0x2b8>
++    <44b>   DW_AT_decl_file   : 2
++    <44c>   DW_AT_decl_line   : 112
++    <44d>   DW_AT_low_pc      : (addr_index: 0xa): <no .debug_addr section>
++    <44e>   DW_AT_high_pc     : 0x1f
++    <456>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <458>   DW_AT_object_pointer: <0x460>
++    <45c>   DW_AT_GNU_all_tail_call_sites: 1
++    <45c>   DW_AT_sibling     : <0x46a>
++ <2><460>: Abbrev Number: 18 (DW_TAG_formal_parameter)
++    <461>   DW_AT_name        : (indexed string: 0x10): this
++    <462>   DW_AT_type        : <0x441>
++    <466>   DW_AT_artificial  : 1
++    <466>   DW_AT_location    : 2 byte block: 91 68   (DW_OP_fbreg: -24)
++ <2><469>: Abbrev Number: 0
++ <1><46a>: Abbrev Number: 21 (DW_TAG_subprogram)
++    <46b>   DW_AT_external    : 1
++    <46b>   DW_AT_name        : f11a
++    <470>   DW_AT_decl_file   : 2
++    <471>   DW_AT_decl_line   : 120
++    <472>   DW_AT_linkage_name: _Z4f11av
++    <47b>   DW_AT_type        : <0x242>
++    <47f>   DW_AT_low_pc      : (addr_index: 0xb): <no .debug_addr section>
++    <480>   DW_AT_high_pc     : 0xb
++    <488>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <48a>   DW_AT_GNU_all_call_sites: 1
++ <1><48a>: Abbrev Number: 17 (DW_TAG_subprogram)
++    <48b>   DW_AT_specification: <0x2c2>
++    <48f>   DW_AT_decl_file   : 2
++    <490>   DW_AT_decl_line   : 126
++    <491>   DW_AT_low_pc      : (addr_index: 0xc): <no .debug_addr section>
++    <492>   DW_AT_high_pc     : 0x20
++    <49a>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <49c>   DW_AT_object_pointer: <0x4a4>
++    <4a0>   DW_AT_GNU_all_tail_call_sites: 1
++    <4a0>   DW_AT_sibling     : <0x4ae>
++ <2><4a4>: Abbrev Number: 18 (DW_TAG_formal_parameter)
++    <4a5>   DW_AT_name        : (indexed string: 0x10): this
++    <4a6>   DW_AT_type        : <0x441>
++    <4aa>   DW_AT_artificial  : 1
++    <4aa>   DW_AT_location    : 2 byte block: 91 68   (DW_OP_fbreg: -24)
++ <2><4ad>: Abbrev Number: 0
++ <1><4ae>: Abbrev Number: 22 (DW_TAG_subprogram)
++    <4af>   DW_AT_external    : 1
++    <4af>   DW_AT_name        : t12
++    <4b3>   DW_AT_decl_file   : 2
++    <4b4>   DW_AT_decl_line   : 134
++    <4b5>   DW_AT_linkage_name: _Z3t12v
++    <4bd>   DW_AT_type        : <0x249>
++    <4c1>   DW_AT_low_pc      : (addr_index: 0xd): <no .debug_addr section>
++    <4c2>   DW_AT_high_pc     : 0x19
++    <4ca>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <4cc>   DW_AT_GNU_all_tail_call_sites: 1
++ <1><4cc>: Abbrev Number: 22 (DW_TAG_subprogram)
++    <4cd>   DW_AT_external    : 1
++    <4cd>   DW_AT_name        : t13
++    <4d1>   DW_AT_decl_file   : 2
++    <4d2>   DW_AT_decl_line   : 142
++    <4d3>   DW_AT_linkage_name: _Z3t13v
++    <4db>   DW_AT_type        : <0x249>
++    <4df>   DW_AT_low_pc      : (addr_index: 0xe): <no .debug_addr section>
++    <4e0>   DW_AT_high_pc     : 0x14
++    <4e8>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <4ea>   DW_AT_GNU_all_tail_call_sites: 1
++ <1><4ea>: Abbrev Number: 23 (DW_TAG_subprogram)
++    <4eb>   DW_AT_external    : 1
++    <4eb>   DW_AT_name        : t14
++    <4ef>   DW_AT_decl_file   : 2
++    <4f0>   DW_AT_decl_line   : 150
++    <4f1>   DW_AT_linkage_name: _Z3t14v
++    <4f9>   DW_AT_type        : <0x249>
++    <4fd>   DW_AT_low_pc      : (addr_index: 0xf): <no .debug_addr section>
++    <4fe>   DW_AT_high_pc     : 0x61
++    <506>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <508>   DW_AT_GNU_all_tail_call_sites: 1
++    <508>   DW_AT_sibling     : <0x532>
++ <2><50c>: Abbrev Number: 24 (DW_TAG_lexical_block)
++    <50d>   DW_AT_low_pc      : (addr_index: 0x10): <no .debug_addr section>
++    <50e>   DW_AT_high_pc     : 0x57
++ <3><516>: Abbrev Number: 25 (DW_TAG_variable)
++    <517>   DW_AT_name        : s1
++    <51a>   DW_AT_decl_file   : 2
++    <51b>   DW_AT_decl_line   : 152
++    <51c>   DW_AT_type        : <0x532>
++    <520>   DW_AT_location    : 2 byte block: 91 68   (DW_OP_fbreg: -24)
++ <3><523>: Abbrev Number: 25 (DW_TAG_variable)
++    <524>   DW_AT_name        : s2
++    <527>   DW_AT_decl_file   : 2
++    <528>   DW_AT_decl_line   : 153
++    <529>   DW_AT_type        : <0x532>
++    <52d>   DW_AT_location    : 2 byte block: 91 60   (DW_OP_fbreg: -32)
++ <3><530>: Abbrev Number: 0
++ <2><531>: Abbrev Number: 0
++ <1><532>: Abbrev Number: 8 (DW_TAG_pointer_type)
++    <533>   DW_AT_byte_size   : 8
++    <534>   DW_AT_type        : <0x538>
++ <1><538>: Abbrev Number: 19 (DW_TAG_const_type)
++    <539>   DW_AT_type        : <0x53d>
++ <1><53d>: Abbrev Number: 7 (DW_TAG_base_type)
++    <53e>   DW_AT_byte_size   : 1
++    <53f>   DW_AT_encoding    : 6     (signed char)
++    <540>   DW_AT_name        : char
++ <1><545>: Abbrev Number: 23 (DW_TAG_subprogram)
++    <546>   DW_AT_external    : 1
++    <546>   DW_AT_name        : t15
++    <54a>   DW_AT_decl_file   : 2
++    <54b>   DW_AT_decl_line   : 163
++    <54c>   DW_AT_linkage_name: _Z3t15v
++    <554>   DW_AT_type        : <0x249>
++    <558>   DW_AT_low_pc      : (addr_index: 0x11): <no .debug_addr section>
++    <559>   DW_AT_high_pc     : 0x5d
++    <561>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <563>   DW_AT_GNU_all_tail_call_sites: 1
++    <563>   DW_AT_sibling     : <0x58d>
++ <2><567>: Abbrev Number: 24 (DW_TAG_lexical_block)
++    <568>   DW_AT_low_pc      : (addr_index: 0x12): <no .debug_addr section>
++    <569>   DW_AT_high_pc     : 0x53
++ <3><571>: Abbrev Number: 25 (DW_TAG_variable)
++    <572>   DW_AT_name        : s1
++    <575>   DW_AT_decl_file   : 2
++    <576>   DW_AT_decl_line   : 165
++    <577>   DW_AT_type        : <0x58d>
++    <57b>   DW_AT_location    : 2 byte block: 91 68   (DW_OP_fbreg: -24)
++ <3><57e>: Abbrev Number: 25 (DW_TAG_variable)
++    <57f>   DW_AT_name        : s2
++    <582>   DW_AT_decl_file   : 2
++    <583>   DW_AT_decl_line   : 166
++    <584>   DW_AT_type        : <0x58d>
++    <588>   DW_AT_location    : 2 byte block: 91 60   (DW_OP_fbreg: -32)
++ <3><58b>: Abbrev Number: 0
++ <2><58c>: Abbrev Number: 0
++ <1><58d>: Abbrev Number: 8 (DW_TAG_pointer_type)
++    <58e>   DW_AT_byte_size   : 8
++    <58f>   DW_AT_type        : <0x593>
++ <1><593>: Abbrev Number: 19 (DW_TAG_const_type)
++    <594>   DW_AT_type        : <0x598>
++ <1><598>: Abbrev Number: 7 (DW_TAG_base_type)
++    <599>   DW_AT_byte_size   : 4
++    <59a>   DW_AT_encoding    : 5     (signed)
++    <59b>   DW_AT_name        : wchar_t
++ <1><5a3>: Abbrev Number: 22 (DW_TAG_subprogram)
++    <5a4>   DW_AT_external    : 1
++    <5a4>   DW_AT_name        : t16
++    <5a8>   DW_AT_decl_file   : 2
++    <5a9>   DW_AT_decl_line   : 176
++    <5aa>   DW_AT_linkage_name: _Z3t16v
++    <5b2>   DW_AT_type        : <0x249>
++    <5b6>   DW_AT_low_pc      : (addr_index: 0x13): <no .debug_addr section>
++    <5b7>   DW_AT_high_pc     : 0x13
++    <5bf>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <5c1>   DW_AT_GNU_all_tail_call_sites: 1
++ <1><5c1>: Abbrev Number: 26 (DW_TAG_subprogram)
++    <5c2>   DW_AT_external    : 1
++    <5c2>   DW_AT_name        : t17
++    <5c6>   DW_AT_decl_file   : 2
++    <5c7>   DW_AT_decl_line   : 184
++    <5c8>   DW_AT_linkage_name: _Z3t17v
++    <5d0>   DW_AT_type        : <0x249>
++    <5d4>   DW_AT_low_pc      : (addr_index: 0x14): <no .debug_addr section>
++    <5d5>   DW_AT_high_pc     : 0x5f
++    <5dd>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <5df>   DW_AT_GNU_all_call_sites: 1
++    <5df>   DW_AT_sibling     : <0x612>
++ <2><5e3>: Abbrev Number: 24 (DW_TAG_lexical_block)
++    <5e4>   DW_AT_low_pc      : (addr_index: 0x15): <no .debug_addr section>
++    <5e5>   DW_AT_high_pc     : 0x59
++ <3><5ed>: Abbrev Number: 25 (DW_TAG_variable)
++    <5ee>   DW_AT_name        : c
++    <5f0>   DW_AT_decl_file   : 2
++    <5f1>   DW_AT_decl_line   : 186
++    <5f2>   DW_AT_type        : <0x53d>
++    <5f6>   DW_AT_location    : 2 byte block: 91 6f   (DW_OP_fbreg: -17)
++ <3><5f9>: Abbrev Number: 24 (DW_TAG_lexical_block)
++    <5fa>   DW_AT_low_pc      : (addr_index: 0x16): <no .debug_addr section>
++    <5fb>   DW_AT_high_pc     : 0x50
++ <4><603>: Abbrev Number: 25 (DW_TAG_variable)
++    <604>   DW_AT_name        : i
++    <606>   DW_AT_decl_file   : 2
++    <607>   DW_AT_decl_line   : 187
++    <608>   DW_AT_type        : <0x242>
++    <60c>   DW_AT_location    : 2 byte block: 91 68   (DW_OP_fbreg: -24)
++ <4><60f>: Abbrev Number: 0
++ <3><610>: Abbrev Number: 0
++ <2><611>: Abbrev Number: 0
++ <1><612>: Abbrev Number: 23 (DW_TAG_subprogram)
++    <613>   DW_AT_external    : 1
++    <613>   DW_AT_name        : t18
++    <617>   DW_AT_decl_file   : 2
++    <618>   DW_AT_decl_line   : 199
++    <619>   DW_AT_linkage_name: _Z3t18v
++    <621>   DW_AT_type        : <0x249>
++    <625>   DW_AT_low_pc      : (addr_index: 0x17): <no .debug_addr section>
++    <626>   DW_AT_high_pc     : 0x5f
++    <62e>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <630>   DW_AT_GNU_all_tail_call_sites: 1
++    <630>   DW_AT_sibling     : <0x67a>
++ <2><634>: Abbrev Number: 24 (DW_TAG_lexical_block)
++    <635>   DW_AT_low_pc      : (addr_index: 0x18): <no .debug_addr section>
++    <636>   DW_AT_high_pc     : 0x55
++ <3><63e>: Abbrev Number: 25 (DW_TAG_variable)
++    <63f>   DW_AT_name        : c
++    <641>   DW_AT_decl_file   : 2
++    <642>   DW_AT_decl_line   : 201
++    <643>   DW_AT_type        : <0x53d>
++    <647>   DW_AT_location    : 2 byte block: 91 6f   (DW_OP_fbreg: -17)
++ <3><64a>: Abbrev Number: 24 (DW_TAG_lexical_block)
++    <64b>   DW_AT_low_pc      : (addr_index: 0x19): <no .debug_addr section>
++    <64c>   DW_AT_high_pc     : 0x4c
++ <4><654>: Abbrev Number: 25 (DW_TAG_variable)
++    <655>   DW_AT_name        : i
++    <657>   DW_AT_decl_file   : 2
++    <658>   DW_AT_decl_line   : 202
++    <659>   DW_AT_type        : <0x242>
++    <65d>   DW_AT_location    : 2 byte block: 91 68   (DW_OP_fbreg: -24)
++ <4><660>: Abbrev Number: 24 (DW_TAG_lexical_block)
++    <661>   DW_AT_low_pc      : (addr_index: 0x1a): <no .debug_addr section>
++    <662>   DW_AT_high_pc     : 0x34
++ <5><66a>: Abbrev Number: 25 (DW_TAG_variable)
++    <66b>   DW_AT_name        : s
++    <66d>   DW_AT_decl_file   : 2
++    <66e>   DW_AT_decl_line   : 204
++    <66f>   DW_AT_type        : <0x532>
++    <673>   DW_AT_location    : 2 byte block: 91 60   (DW_OP_fbreg: -32)
++ <5><676>: Abbrev Number: 0
++ <4><677>: Abbrev Number: 0
++ <3><678>: Abbrev Number: 0
++ <2><679>: Abbrev Number: 0
++ <1><67a>: Abbrev Number: 27 (DW_TAG_variable)
++    <67b>   DW_AT_name        : c3
++    <67e>   DW_AT_decl_file   : 1
++    <67f>   DW_AT_decl_line   : 57
++    <680>   DW_AT_type        : signature: 0xb534bdc1f01629bb
++    <688>   DW_AT_external    : 1
++    <688>   DW_AT_declaration : 1
++ <1><688>: Abbrev Number: 28 (DW_TAG_variable)
++    <689>   DW_AT_name        : v2
++    <68c>   DW_AT_decl_file   : 1
++    <68d>   DW_AT_decl_line   : 59
++    <68e>   DW_AT_type        : <0x242>
++    <692>   DW_AT_external    : 1
++    <692>   DW_AT_declaration : 1
++ <1><692>: Abbrev Number: 28 (DW_TAG_variable)
++    <693>   DW_AT_name        : v3
++    <696>   DW_AT_decl_file   : 1
++    <697>   DW_AT_decl_line   : 60
++    <698>   DW_AT_type        : <0x242>
++    <69c>   DW_AT_external    : 1
++    <69c>   DW_AT_declaration : 1
++ <1><69c>: Abbrev Number: 29 (DW_TAG_array_type)
++    <69d>   DW_AT_type        : <0x53d>
++    <6a1>   DW_AT_sibling     : <0x6a7>
++ <2><6a5>: Abbrev Number: 30 (DW_TAG_subrange_type)
++ <2><6a6>: Abbrev Number: 0
++ <1><6a7>: Abbrev Number: 28 (DW_TAG_variable)
++    <6a8>   DW_AT_name        : v4
++    <6ab>   DW_AT_decl_file   : 1
++    <6ac>   DW_AT_decl_line   : 61
++    <6ad>   DW_AT_type        : <0x69c>
++    <6b1>   DW_AT_external    : 1
++    <6b1>   DW_AT_declaration : 1
++ <1><6b1>: Abbrev Number: 28 (DW_TAG_variable)
++    <6b2>   DW_AT_name        : v5
++    <6b5>   DW_AT_decl_file   : 1
++    <6b6>   DW_AT_decl_line   : 62
++    <6b7>   DW_AT_type        : <0x69c>
++    <6bb>   DW_AT_external    : 1
++    <6bb>   DW_AT_declaration : 1
++ <1><6bb>: Abbrev Number: 29 (DW_TAG_array_type)
++    <6bc>   DW_AT_type        : <0x532>
++    <6c0>   DW_AT_sibling     : <0x6c6>
++ <2><6c4>: Abbrev Number: 30 (DW_TAG_subrange_type)
++ <2><6c5>: Abbrev Number: 0
++ <1><6c6>: Abbrev Number: 28 (DW_TAG_variable)
++    <6c7>   DW_AT_name        : t17data
++    <6cf>   DW_AT_decl_file   : 1
++    <6d0>   DW_AT_decl_line   : 83
++    <6d1>   DW_AT_type        : <0x6bb>
++    <6d5>   DW_AT_external    : 1
++    <6d5>   DW_AT_declaration : 1
++ <1><6d5>: Abbrev Number: 31 (DW_TAG_variable)
++    <6d6>   DW_AT_name        : p6
++    <6d9>   DW_AT_decl_file   : 2
++    <6da>   DW_AT_decl_line   : 69
++    <6db>   DW_AT_type        : <0x6e2>
++    <6df>   DW_AT_external    : 1
++    <6df>   DW_AT_location    : 2 byte block: fb 1b   (DW_OP_GNU_addr_index <0x1b>)
++ <1><6e2>: Abbrev Number: 8 (DW_TAG_pointer_type)
++    <6e3>   DW_AT_byte_size   : 8
++    <6e4>   DW_AT_type        : <0x242>
++ <1><6e8>: Abbrev Number: 31 (DW_TAG_variable)
++    <6e9>   DW_AT_name        : p7
++    <6ec>   DW_AT_decl_file   : 2
++    <6ed>   DW_AT_decl_line   : 79
++    <6ee>   DW_AT_type        : <0x6e2>
++    <6f2>   DW_AT_external    : 1
++    <6f2>   DW_AT_location    : 2 byte block: fb 1c   (DW_OP_GNU_addr_index <0x1c>)
++ <1><6f5>: Abbrev Number: 31 (DW_TAG_variable)
++    <6f6>   DW_AT_name        : p8
++    <6f9>   DW_AT_decl_file   : 2
++    <6fa>   DW_AT_decl_line   : 89
++    <6fb>   DW_AT_type        : <0x702>
++    <6ff>   DW_AT_external    : 1
++    <6ff>   DW_AT_location    : 2 byte block: fb 1d   (DW_OP_GNU_addr_index <0x1d>)
++ <1><702>: Abbrev Number: 8 (DW_TAG_pointer_type)
++    <703>   DW_AT_byte_size   : 8
++    <704>   DW_AT_type        : <0x53d>
++ <1><708>: Abbrev Number: 31 (DW_TAG_variable)
++    <709>   DW_AT_name        : p9
++    <70c>   DW_AT_decl_file   : 2
++    <70d>   DW_AT_decl_line   : 99
++    <70e>   DW_AT_type        : <0x702>
++    <712>   DW_AT_external    : 1
++    <712>   DW_AT_location    : 2 byte block: fb 1e   (DW_OP_GNU_addr_index <0x1e>)
++ <1><715>: Abbrev Number: 9 (DW_TAG_subroutine_type)
++    <716>   DW_AT_type        : <0x242>
++ <1><71a>: Abbrev Number: 31 (DW_TAG_variable)
++    <71b>   DW_AT_name        : pfn
++    <71f>   DW_AT_decl_file   : 2
++    <720>   DW_AT_decl_line   : 109
++    <721>   DW_AT_type        : <0x728>
++    <725>   DW_AT_external    : 1
++    <725>   DW_AT_location    : 2 byte block: fb 1f   (DW_OP_GNU_addr_index <0x1f>)
++ <1><728>: Abbrev Number: 8 (DW_TAG_pointer_type)
++    <729>   DW_AT_byte_size   : 8
++    <72a>   DW_AT_type        : <0x715>
++ <1><72e>: Abbrev Number: 0
++  Compilation Unit @ offset 0x72f:
++   Length:        0xcb (32-bit)
++   Version:       4
++   Abbrev Offset: 0x0
++   Pointer Size:  8
++   Section contributions:
++    .debug_abbrev.dwo:       0x371  0xbd
++    .debug_line.dwo:         0x7d  0x3e
++    .debug_loc.dwo:          0x0  0x0
++    .debug_str_offsets.dwo:  0x0  0x0
++ <0><73a>: Abbrev Number: 10 (DW_TAG_compile_unit)
++    <73b>   DW_AT_producer    : GNU C++ 4.7.x-google 20120720 (prerelease)
++    <766>   DW_AT_language    : 4     (C++)
++    <767>   DW_AT_name        : dwp_test_1b.cc
++    <776>   DW_AT_comp_dir    : /home/ccoutant/opensource/binutils-git/binutils/gold/testsuite
++    <7b5>   DW_AT_GNU_dwo_id  : 0xbd6ec13ea247eff6
++ <1><7bd>: Abbrev Number: 7 (DW_TAG_base_type)
++    <7be>   DW_AT_byte_size   : 4
++    <7bf>   DW_AT_encoding    : 5     (signed)
++    <7c0>   DW_AT_name        : int
++ <1><7c4>: Abbrev Number: 7 (DW_TAG_base_type)
++    <7c5>   DW_AT_byte_size   : 1
++    <7c6>   DW_AT_encoding    : 2     (boolean)
++    <7c7>   DW_AT_name        : bool
++ <1><7cc>: Abbrev Number: 11 (DW_TAG_subprogram)
++    <7cd>   DW_AT_external    : 1
++    <7cd>   DW_AT_name        : t16a
++    <7d2>   DW_AT_decl_file   : 1
++    <7d3>   DW_AT_decl_line   : 32
++    <7d4>   DW_AT_linkage_name: _Z4t16av
++    <7dd>   DW_AT_type        : <0x7c4>
++    <7e1>   DW_AT_low_pc      : (addr_index: 0x0): <no .debug_addr section>
++    <7e2>   DW_AT_high_pc     : 0x13
++    <7ea>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <7ec>   DW_AT_GNU_all_tail_call_sites: 1
++ <1><7ec>: Abbrev Number: 12 (DW_TAG_variable)
++    <7ed>   DW_AT_name        : c3
++    <7f0>   DW_AT_decl_file   : 1
++    <7f1>   DW_AT_decl_line   : 29
++    <7f2>   DW_AT_type        : signature: 0xb534bdc1f01629bb
++    <7fa>   DW_AT_external    : 1
++    <7fa>   DW_AT_location    : 2 byte block: fb 1    (DW_OP_GNU_addr_index <0x1>)
++ <1><7fd>: Abbrev Number: 0
++  Compilation Unit @ offset 0x7fe:
++   Length:        0x329 (32-bit)
++   Version:       4
++   Abbrev Offset: 0x0
++   Pointer Size:  8
++   Section contributions:
++    .debug_abbrev.dwo:       0x42e  0x1f2
++    .debug_line.dwo:         0xbb  0x3d
++    .debug_loc.dwo:          0x0  0x0
++    .debug_str_offsets.dwo:  0x58  0x18
++ <0><809>: Abbrev Number: 12 (DW_TAG_compile_unit)
++    <80a>   DW_AT_producer    : GNU C++ 4.7.x-google 20120720 (prerelease)
++    <835>   DW_AT_language    : 4     (C++)
++    <836>   DW_AT_name        : dwp_test_2.cc
++    <844>   DW_AT_comp_dir    : /home/ccoutant/opensource/binutils-git/binutils/gold/testsuite
++    <883>   DW_AT_GNU_dwo_id  : 0xcf0cab718ce0f8b9
++ <1><88b>: Abbrev Number: 13 (DW_TAG_class_type)
++    <88c>   DW_AT_name        : C1
++    <88f>   DW_AT_signature   : signature: 0xb5faa2a4b7a919c4
++    <897>   DW_AT_declaration : 1
++    <897>   DW_AT_sibling     : <0x8b7>
++ <2><89b>: Abbrev Number: 14 (DW_TAG_subprogram)
++    <89c>   DW_AT_external    : 1
++    <89c>   DW_AT_name        : t1a
++    <8a0>   DW_AT_decl_file   : 1
++    <8a1>   DW_AT_decl_line   : 29
++    <8a2>   DW_AT_linkage_name: (indexed string: 0x4): _ZN2C13t1aEv
++    <8a3>   DW_AT_type        : <0x8be>
++    <8a7>   DW_AT_accessibility: 1    (public)
++    <8a8>   DW_AT_declaration : 1
++ <2><8a8>: Abbrev Number: 14 (DW_TAG_subprogram)
++    <8a9>   DW_AT_external    : 1
++    <8a9>   DW_AT_name        : t1_2
++    <8ae>   DW_AT_decl_file   : 1
++    <8af>   DW_AT_decl_line   : 30
++    <8b0>   DW_AT_linkage_name: (indexed string: 0x5): _ZN2C14t1_2Ev
++    <8b1>   DW_AT_type        : <0x8b7>
++    <8b5>   DW_AT_accessibility: 1    (public)
++    <8b6>   DW_AT_declaration : 1
++ <2><8b6>: Abbrev Number: 0
++ <1><8b7>: Abbrev Number: 7 (DW_TAG_base_type)
++    <8b8>   DW_AT_byte_size   : 4
++    <8b9>   DW_AT_encoding    : 5     (signed)
++    <8ba>   DW_AT_name        : int
++ <1><8be>: Abbrev Number: 7 (DW_TAG_base_type)
++    <8bf>   DW_AT_byte_size   : 1
++    <8c0>   DW_AT_encoding    : 2     (boolean)
++    <8c1>   DW_AT_name        : bool
++ <1><8c6>: Abbrev Number: 15 (DW_TAG_pointer_type)
++    <8c7>   DW_AT_byte_size   : 8
++    <8c8>   DW_AT_type        : signature: 0xb5faa2a4b7a919c4
++ <1><8d0>: Abbrev Number: 13 (DW_TAG_class_type)
++    <8d1>   DW_AT_name        : C3
++    <8d4>   DW_AT_signature   : signature: 0xb534bdc1f01629bb
++    <8dc>   DW_AT_declaration : 1
++    <8dc>   DW_AT_sibling     : <0x8ed>
++ <2><8e0>: Abbrev Number: 14 (DW_TAG_subprogram)
++    <8e1>   DW_AT_external    : 1
++    <8e1>   DW_AT_name        : f4
++    <8e4>   DW_AT_decl_file   : 1
++    <8e5>   DW_AT_decl_line   : 53
++    <8e6>   DW_AT_linkage_name: (indexed string: 0x3): _ZN2C32f4Ev
++    <8e7>   DW_AT_type        : <0x8fc>
++    <8eb>   DW_AT_accessibility: 1    (public)
++    <8ec>   DW_AT_declaration : 1
++ <2><8ec>: Abbrev Number: 0
++ <1><8ed>: Abbrev Number: 15 (DW_TAG_pointer_type)
++    <8ee>   DW_AT_byte_size   : 8
++    <8ef>   DW_AT_type        : signature: 0xb534bdc1f01629bb
++ <1><8f7>: Abbrev Number: 9 (DW_TAG_subroutine_type)
++    <8f8>   DW_AT_type        : <0x8be>
++ <1><8fc>: Abbrev Number: 8 (DW_TAG_pointer_type)
++    <8fd>   DW_AT_byte_size   : 8
++    <8fe>   DW_AT_type        : <0x8f7>
++ <1><902>: Abbrev Number: 16 (DW_TAG_subprogram)
++    <903>   DW_AT_external    : 1
++    <903>   DW_AT_name        : f13i
++    <908>   DW_AT_decl_file   : 1
++    <909>   DW_AT_decl_line   : 70
++    <90a>   DW_AT_linkage_name: _Z4f13iv
++    <913>   DW_AT_low_pc      : (addr_index: 0x0): <no .debug_addr section>
++    <914>   DW_AT_high_pc     : 0x6
++    <91c>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <91e>   DW_AT_GNU_all_call_sites: 1
++ <1><91e>: Abbrev Number: 17 (DW_TAG_subprogram)
++    <91f>   DW_AT_specification: <0x8a8>
++    <923>   DW_AT_decl_file   : 2
++    <924>   DW_AT_low_pc      : (addr_index: 0x1): <no .debug_addr section>
++    <925>   DW_AT_high_pc     : 0xf
++    <92d>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <92f>   DW_AT_object_pointer: <0x937>
++    <933>   DW_AT_GNU_all_call_sites: 1
++    <933>   DW_AT_sibling     : <0x945>
++ <2><937>: Abbrev Number: 18 (DW_TAG_formal_parameter)
++    <938>   DW_AT_name        : this
++    <93d>   DW_AT_type        : <0x945>
++    <941>   DW_AT_artificial  : 1
++    <941>   DW_AT_location    : 2 byte block: 91 68   (DW_OP_fbreg: -24)
++ <2><944>: Abbrev Number: 0
++ <1><945>: Abbrev Number: 19 (DW_TAG_const_type)
++    <946>   DW_AT_type        : <0x8c6>
++ <1><94a>: Abbrev Number: 20 (DW_TAG_subprogram)
++    <94b>   DW_AT_specification: <0x89b>
++    <94f>   DW_AT_decl_file   : 2
++    <950>   DW_AT_decl_line   : 36
++    <951>   DW_AT_low_pc      : (addr_index: 0x2): <no .debug_addr section>
++    <952>   DW_AT_high_pc     : 0x20
++    <95a>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <95c>   DW_AT_object_pointer: <0x964>
++    <960>   DW_AT_GNU_all_tail_call_sites: 1
++    <960>   DW_AT_sibling     : <0x972>
++ <2><964>: Abbrev Number: 18 (DW_TAG_formal_parameter)
++    <965>   DW_AT_name        : this
++    <96a>   DW_AT_type        : <0x945>
++    <96e>   DW_AT_artificial  : 1
++    <96e>   DW_AT_location    : 2 byte block: 91 68   (DW_OP_fbreg: -24)
++ <2><971>: Abbrev Number: 0
++ <1><972>: Abbrev Number: 21 (DW_TAG_subprogram)
++    <973>   DW_AT_external    : 1
++    <973>   DW_AT_name        : f10
++    <977>   DW_AT_decl_file   : 2
++    <978>   DW_AT_decl_line   : 72
++    <979>   DW_AT_linkage_name: _Z3f10v
++    <981>   DW_AT_type        : <0x8b7>
++    <985>   DW_AT_low_pc      : (addr_index: 0x3): <no .debug_addr section>
++    <986>   DW_AT_high_pc     : 0xb
++    <98e>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <990>   DW_AT_GNU_all_call_sites: 1
++ <1><990>: Abbrev Number: 22 (DW_TAG_subprogram)
++    <991>   DW_AT_external    : 1
++    <991>   DW_AT_name        : f11b
++    <996>   DW_AT_decl_file   : 2
++    <997>   DW_AT_decl_line   : 80
++    <998>   DW_AT_linkage_name: _Z4f11bPFivE
++    <9a5>   DW_AT_type        : <0x8b7>
++    <9a9>   DW_AT_low_pc      : (addr_index: 0x4): <no .debug_addr section>
++    <9aa>   DW_AT_high_pc     : 0x14
++    <9b2>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <9b4>   DW_AT_GNU_all_tail_call_sites: 1
++    <9b4>   DW_AT_sibling     : <0x9c7>
++ <2><9b8>: Abbrev Number: 23 (DW_TAG_formal_parameter)
++    <9b9>   DW_AT_name        : pfn
++    <9bd>   DW_AT_decl_file   : 2
++    <9be>   DW_AT_decl_line   : 80
++    <9bf>   DW_AT_type        : <0x9cc>
++    <9c3>   DW_AT_location    : 2 byte block: 91 68   (DW_OP_fbreg: -24)
++ <2><9c6>: Abbrev Number: 0
++ <1><9c7>: Abbrev Number: 9 (DW_TAG_subroutine_type)
++    <9c8>   DW_AT_type        : <0x8b7>
++ <1><9cc>: Abbrev Number: 8 (DW_TAG_pointer_type)
++    <9cd>   DW_AT_byte_size   : 8
++    <9ce>   DW_AT_type        : <0x9c7>
++ <1><9d2>: Abbrev Number: 24 (DW_TAG_subprogram)
++    <9d3>   DW_AT_specification: <0x8e0>
++    <9d7>   DW_AT_decl_file   : 2
++    <9d8>   DW_AT_decl_line   : 88
++    <9d9>   DW_AT_low_pc      : (addr_index: 0x5): <no .debug_addr section>
++    <9da>   DW_AT_high_pc     : 0xf
++    <9e2>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <9e4>   DW_AT_object_pointer: <0x9ec>
++    <9e8>   DW_AT_GNU_all_call_sites: 1
++    <9e8>   DW_AT_sibling     : <0x9fa>
++ <2><9ec>: Abbrev Number: 18 (DW_TAG_formal_parameter)
++    <9ed>   DW_AT_name        : this
++    <9f2>   DW_AT_type        : <0x9fa>
++    <9f6>   DW_AT_artificial  : 1
++    <9f6>   DW_AT_location    : 2 byte block: 91 68   (DW_OP_fbreg: -24)
++ <2><9f9>: Abbrev Number: 0
++ <1><9fa>: Abbrev Number: 19 (DW_TAG_const_type)
++    <9fb>   DW_AT_type        : <0x8ed>
++ <1><9ff>: Abbrev Number: 25 (DW_TAG_subroutine_type)
++ <1><a00>: Abbrev Number: 21 (DW_TAG_subprogram)
++    <a01>   DW_AT_external    : 1
++    <a01>   DW_AT_name        : f13
++    <a05>   DW_AT_decl_file   : 2
++    <a06>   DW_AT_decl_line   : 96
++    <a07>   DW_AT_linkage_name: _Z3f13v
++    <a0f>   DW_AT_type        : <0xa1e>
++    <a13>   DW_AT_low_pc      : (addr_index: 0x6): <no .debug_addr section>
++    <a14>   DW_AT_high_pc     : 0xb
++    <a1c>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <a1e>   DW_AT_GNU_all_call_sites: 1
++ <1><a1e>: Abbrev Number: 8 (DW_TAG_pointer_type)
++    <a1f>   DW_AT_byte_size   : 8
++    <a20>   DW_AT_type        : <0x9ff>
++ <1><a24>: Abbrev Number: 21 (DW_TAG_subprogram)
++    <a25>   DW_AT_external    : 1
++    <a25>   DW_AT_name        : f14
++    <a29>   DW_AT_decl_file   : 2
++    <a2a>   DW_AT_decl_line   : 104
++    <a2b>   DW_AT_linkage_name: _Z3f14v
++    <a33>   DW_AT_type        : <0xa42>
++    <a37>   DW_AT_low_pc      : (addr_index: 0x7): <no .debug_addr section>
++    <a38>   DW_AT_high_pc     : 0xb
++    <a40>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <a42>   DW_AT_GNU_all_call_sites: 1
++ <1><a42>: Abbrev Number: 8 (DW_TAG_pointer_type)
++    <a43>   DW_AT_byte_size   : 8
++    <a44>   DW_AT_type        : <0xa48>
++ <1><a48>: Abbrev Number: 19 (DW_TAG_const_type)
++    <a49>   DW_AT_type        : <0xa4d>
++ <1><a4d>: Abbrev Number: 7 (DW_TAG_base_type)
++    <a4e>   DW_AT_byte_size   : 1
++    <a4f>   DW_AT_encoding    : 6     (signed char)
++    <a50>   DW_AT_name        : char
++ <1><a55>: Abbrev Number: 21 (DW_TAG_subprogram)
++    <a56>   DW_AT_external    : 1
++    <a56>   DW_AT_name        : f15
++    <a5a>   DW_AT_decl_file   : 2
++    <a5b>   DW_AT_decl_line   : 112
++    <a5c>   DW_AT_linkage_name: _Z3f15v
++    <a64>   DW_AT_type        : <0xa73>
++    <a68>   DW_AT_low_pc      : (addr_index: 0x8): <no .debug_addr section>
++    <a69>   DW_AT_high_pc     : 0xb
++    <a71>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <a73>   DW_AT_GNU_all_call_sites: 1
++ <1><a73>: Abbrev Number: 8 (DW_TAG_pointer_type)
++    <a74>   DW_AT_byte_size   : 8
++    <a75>   DW_AT_type        : <0xa79>
++ <1><a79>: Abbrev Number: 19 (DW_TAG_const_type)
++    <a7a>   DW_AT_type        : <0xa7e>
++ <1><a7e>: Abbrev Number: 7 (DW_TAG_base_type)
++    <a7f>   DW_AT_byte_size   : 4
++    <a80>   DW_AT_encoding    : 5     (signed)
++    <a81>   DW_AT_name        : wchar_t
++ <1><a89>: Abbrev Number: 26 (DW_TAG_subprogram)
++    <a8a>   DW_AT_external    : 1
++    <a8a>   DW_AT_name        : f18
++    <a8e>   DW_AT_decl_file   : 2
++    <a8f>   DW_AT_decl_line   : 127
++    <a90>   DW_AT_linkage_name: _Z3f18i
++    <a98>   DW_AT_type        : <0xa42>
++    <a9c>   DW_AT_low_pc      : (addr_index: 0x9): <no .debug_addr section>
++    <a9d>   DW_AT_high_pc     : 0x44
++    <aa5>   DW_AT_frame_base  : 1 byte block: 9c      (DW_OP_call_frame_cfa)
++    <aa7>   DW_AT_GNU_all_call_sites: 1
++    <aa7>   DW_AT_sibling     : <0xab8>
++ <2><aab>: Abbrev Number: 23 (DW_TAG_formal_parameter)
++    <aac>   DW_AT_name        : i
++    <aae>   DW_AT_decl_file   : 2
++    <aaf>   DW_AT_decl_line   : 127
++    <ab0>   DW_AT_type        : <0x8b7>
++    <ab4>   DW_AT_location    : 2 byte block: 91 6c   (DW_OP_fbreg: -20)
++ <2><ab7>: Abbrev Number: 0
++ <1><ab8>: Abbrev Number: 27 (DW_TAG_variable)
++    <ab9>   DW_AT_name        : v2
++    <abc>   DW_AT_decl_file   : 2
++    <abd>   DW_AT_decl_line   : 43
++    <abe>   DW_AT_type        : <0x8b7>
++    <ac2>   DW_AT_external    : 1
++    <ac2>   DW_AT_location    : 2 byte block: fb a    (DW_OP_GNU_addr_index <0xa>)
++ <1><ac5>: Abbrev Number: 27 (DW_TAG_variable)
++    <ac6>   DW_AT_name        : v3
++    <ac9>   DW_AT_decl_file   : 2
++    <aca>   DW_AT_decl_line   : 48
++    <acb>   DW_AT_type        : <0x8b7>
++    <acf>   DW_AT_external    : 1
++    <acf>   DW_AT_location    : 2 byte block: fb b    (DW_OP_GNU_addr_index <0xb>)
++ <1><ad2>: Abbrev Number: 28 (DW_TAG_array_type)
++    <ad3>   DW_AT_type        : <0xa4d>
++    <ad7>   DW_AT_sibling     : <0xae2>
++ <2><adb>: Abbrev Number: 29 (DW_TAG_subrange_type)
++    <adc>   DW_AT_type        : <0xae2>
++    <ae0>   DW_AT_upper_bound : 12
++ <2><ae1>: Abbrev Number: 0
++ <1><ae2>: Abbrev Number: 7 (DW_TAG_base_type)
++    <ae3>   DW_AT_byte_size   : 8
++    <ae4>   DW_AT_encoding    : 7     (unsigned)
++    <ae5>   DW_AT_name        : sizetype
++ <1><aee>: Abbrev Number: 27 (DW_TAG_variable)
++    <aef>   DW_AT_name        : v4
++    <af2>   DW_AT_decl_file   : 2
++    <af3>   DW_AT_decl_line   : 52
++    <af4>   DW_AT_type        : <0xad2>
++    <af8>   DW_AT_external    : 1
++    <af8>   DW_AT_location    : 2 byte block: fb c    (DW_OP_GNU_addr_index <0xc>)
++ <1><afb>: Abbrev Number: 27 (DW_TAG_variable)
++    <afc>   DW_AT_name        : v5
++    <aff>   DW_AT_decl_file   : 2
++    <b00>   DW_AT_decl_line   : 57
++    <b01>   DW_AT_type        : <0xad2>
++    <b05>   DW_AT_external    : 1
++    <b05>   DW_AT_location    : 2 byte block: fb d    (DW_OP_GNU_addr_index <0xd>)
++ <1><b08>: Abbrev Number: 28 (DW_TAG_array_type)
++    <b09>   DW_AT_type        : <0xa42>
++    <b0d>   DW_AT_sibling     : <0xb18>
++ <2><b11>: Abbrev Number: 29 (DW_TAG_subrange_type)
++    <b12>   DW_AT_type        : <0xae2>
++    <b16>   DW_AT_upper_bound : 4
++ <2><b17>: Abbrev Number: 0
++ <1><b18>: Abbrev Number: 27 (DW_TAG_variable)
++    <b19>   DW_AT_name        : t17data
++    <b21>   DW_AT_decl_file   : 2
++    <b22>   DW_AT_decl_line   : 119
++    <b23>   DW_AT_type        : <0xb08>
++    <b27>   DW_AT_external    : 1
++    <b27>   DW_AT_location    : 2 byte block: fb e    (DW_OP_GNU_addr_index <0xe>)
++ <1><b2a>: Abbrev Number: 0
++
++Contents of the .debug_types.dwo section:
++
++  Compilation Unit @ offset 0x0:
++   Length:        0xf7 (32-bit)
++   Version:       4
++   Abbrev Offset: 0x0
++   Pointer Size:  8
++   Signature:     0xb534bdc1f01629bb
++   Type Offset:   0x25
++   Section contributions:
++    .debug_abbrev.dwo:       0x0  0x154
++    .debug_line.dwo:         0x0  0x40
++    .debug_loc.dwo:          0x0  0x0
++    .debug_str_offsets.dwo:  0x0  0x14
++ <0><17>: Abbrev Number: 1 (DW_TAG_type_unit)
++    <18>   DW_AT_language    : 4      (C++)
++    <19>   DW_AT_GNU_odr_signature: 0x880a5c4d6e59da8a
++    <21>   DW_AT_stmt_list   : 0x0
++ <1><25>: Abbrev Number: 2 (DW_TAG_class_type)
++    <26>   DW_AT_name        : C3
++    <29>   DW_AT_byte_size   : 4
++    <2a>   DW_AT_decl_file   : 2
++    <2b>   DW_AT_decl_line   : 47
++    <2c>   DW_AT_sibling     : <0xda>
++ <2><30>: Abbrev Number: 3 (DW_TAG_member)
++    <31>   DW_AT_name        : (indexed string: 0x3): member1
++    <32>   DW_AT_decl_file   : 2
++    <33>   DW_AT_decl_line   : 54
++    <34>   DW_AT_type        : <0xda>
++    <38>   DW_AT_data_member_location: 0
++    <39>   DW_AT_accessibility: 1     (public)
++ <2><3a>: Abbrev Number: 4 (DW_TAG_subprogram)
++    <3b>   DW_AT_external    : 1
++    <3b>   DW_AT_name        : (indexed string: 0x0): testcase1
++    <3c>   DW_AT_decl_file   : 2
++    <3d>   DW_AT_decl_line   : 50
++    <3e>   DW_AT_linkage_name: _ZN2C39testcase1Ev
++    <51>   DW_AT_type        : <0xe1>
++    <55>   DW_AT_accessibility: 1     (public)
++    <56>   DW_AT_declaration : 1
++    <56>   DW_AT_object_pointer: <0x5e>
++    <5a>   DW_AT_sibling     : <0x64>
++ <3><5e>: Abbrev Number: 5 (DW_TAG_formal_parameter)
++    <5f>   DW_AT_type        : <0xe9>
++    <63>   DW_AT_artificial  : 1
++ <3><63>: Abbrev Number: 0
++ <2><64>: Abbrev Number: 4 (DW_TAG_subprogram)
++    <65>   DW_AT_external    : 1
++    <65>   DW_AT_name        : (indexed string: 0x1): testcase2
++    <66>   DW_AT_decl_file   : 2
++    <67>   DW_AT_decl_line   : 51
++    <68>   DW_AT_linkage_name: _ZN2C39testcase2Ev
++    <7b>   DW_AT_type        : <0xe1>
++    <7f>   DW_AT_accessibility: 1     (public)
++    <80>   DW_AT_declaration : 1
++    <80>   DW_AT_object_pointer: <0x88>
++    <84>   DW_AT_sibling     : <0x8e>
++ <3><88>: Abbrev Number: 5 (DW_TAG_formal_parameter)
++    <89>   DW_AT_type        : <0xe9>
++    <8d>   DW_AT_artificial  : 1
++ <3><8d>: Abbrev Number: 0
++ <2><8e>: Abbrev Number: 4 (DW_TAG_subprogram)
++    <8f>   DW_AT_external    : 1
++    <8f>   DW_AT_name        : (indexed string: 0x2): testcase3
++    <90>   DW_AT_decl_file   : 2
++    <91>   DW_AT_decl_line   : 52
++    <92>   DW_AT_linkage_name: _ZN2C39testcase3Ev
++    <a5>   DW_AT_type        : <0xe1>
++    <a9>   DW_AT_accessibility: 1     (public)
++    <aa>   DW_AT_declaration : 1
++    <aa>   DW_AT_object_pointer: <0xb2>
++    <ae>   DW_AT_sibling     : <0xb8>
++ <3><b2>: Abbrev Number: 5 (DW_TAG_formal_parameter)
++    <b3>   DW_AT_type        : <0xe9>
++    <b7>   DW_AT_artificial  : 1
++ <3><b7>: Abbrev Number: 0
++ <2><b8>: Abbrev Number: 6 (DW_TAG_subprogram)
++    <b9>   DW_AT_external    : 1
++    <b9>   DW_AT_name        : f4
++    <bc>   DW_AT_decl_file   : 2
++    <bd>   DW_AT_decl_line   : 53
++    <be>   DW_AT_linkage_name: _ZN2C32f4Ev
++    <ca>   DW_AT_type        : <0xef>
++    <ce>   DW_AT_accessibility: 1     (public)
++    <cf>   DW_AT_declaration : 1
++    <cf>   DW_AT_object_pointer: <0xd3>
++ <3><d3>: Abbrev Number: 5 (DW_TAG_formal_parameter)
++    <d4>   DW_AT_type        : <0xe9>
++    <d8>   DW_AT_artificial  : 1
++ <3><d8>: Abbrev Number: 0
++ <2><d9>: Abbrev Number: 0
++ <1><da>: Abbrev Number: 7 (DW_TAG_base_type)
++    <db>   DW_AT_byte_size   : 4
++    <dc>   DW_AT_encoding    : 5      (signed)
++    <dd>   DW_AT_name        : int
++ <1><e1>: Abbrev Number: 7 (DW_TAG_base_type)
++    <e2>   DW_AT_byte_size   : 1
++    <e3>   DW_AT_encoding    : 2      (boolean)
++    <e4>   DW_AT_name        : bool
++ <1><e9>: Abbrev Number: 8 (DW_TAG_pointer_type)
++    <ea>   DW_AT_byte_size   : 8
++    <eb>   DW_AT_type        : <0x25>
++ <1><ef>: Abbrev Number: 8 (DW_TAG_pointer_type)
++    <f0>   DW_AT_byte_size   : 8
++    <f1>   DW_AT_type        : <0xf5>
++ <1><f5>: Abbrev Number: 9 (DW_TAG_subroutine_type)
++    <f6>   DW_AT_type        : <0xe1>
++ <1><fa>: Abbrev Number: 0
++  Compilation Unit @ offset 0xfb:
++   Length:        0xf1 (32-bit)
++   Version:       4
++   Abbrev Offset: 0x0
++   Pointer Size:  8
++   Signature:     0xab98c7bc886f5266
++   Type Offset:   0x25
++   Section contributions:
++    .debug_abbrev.dwo:       0x0  0x154
++    .debug_line.dwo:         0x0  0x40
++    .debug_loc.dwo:          0x0  0x0
++    .debug_str_offsets.dwo:  0x0  0x14
++ <0><112>: Abbrev Number: 1 (DW_TAG_type_unit)
++    <113>   DW_AT_language    : 4     (C++)
++    <114>   DW_AT_GNU_odr_signature: 0xae4af0d8bfcef94b
++    <11c>   DW_AT_stmt_list   : 0x0
++ <1><120>: Abbrev Number: 2 (DW_TAG_class_type)
++    <121>   DW_AT_name        : C2
++    <124>   DW_AT_byte_size   : 4
++    <125>   DW_AT_decl_file   : 2
++    <126>   DW_AT_decl_line   : 37
++    <127>   DW_AT_sibling     : <0x1da>
++ <2><12b>: Abbrev Number: 3 (DW_TAG_member)
++    <12c>   DW_AT_name        : (indexed string: 0x3): member1
++    <12d>   DW_AT_decl_file   : 2
++    <12e>   DW_AT_decl_line   : 44
++    <12f>   DW_AT_type        : <0x1da>
++    <133>   DW_AT_data_member_location: 0
++    <134>   DW_AT_accessibility: 1    (public)
++ <2><135>: Abbrev Number: 4 (DW_TAG_subprogram)
++    <136>   DW_AT_external    : 1
++    <136>   DW_AT_name        : (indexed string: 0x0): testcase1
++    <137>   DW_AT_decl_file   : 2
++    <138>   DW_AT_decl_line   : 40
++    <139>   DW_AT_linkage_name: _ZN2C29testcase1Ev
++    <14c>   DW_AT_type        : <0x1e1>
++    <150>   DW_AT_accessibility: 1    (public)
++    <151>   DW_AT_declaration : 1
++    <151>   DW_AT_object_pointer: <0x159>
++    <155>   DW_AT_sibling     : <0x15f>
++ <3><159>: Abbrev Number: 5 (DW_TAG_formal_parameter)
++    <15a>   DW_AT_type        : <0x1e9>
++    <15e>   DW_AT_artificial  : 1
++ <3><15e>: Abbrev Number: 0
++ <2><15f>: Abbrev Number: 4 (DW_TAG_subprogram)
++    <160>   DW_AT_external    : 1
++    <160>   DW_AT_name        : (indexed string: 0x1): testcase2
++    <161>   DW_AT_decl_file   : 2
++    <162>   DW_AT_decl_line   : 41
++    <163>   DW_AT_linkage_name: _ZN2C29testcase2Ev
++    <176>   DW_AT_type        : <0x1e1>
++    <17a>   DW_AT_accessibility: 1    (public)
++    <17b>   DW_AT_declaration : 1
++    <17b>   DW_AT_object_pointer: <0x183>
++    <17f>   DW_AT_sibling     : <0x189>
++ <3><183>: Abbrev Number: 5 (DW_TAG_formal_parameter)
++    <184>   DW_AT_type        : <0x1e9>
++    <188>   DW_AT_artificial  : 1
++ <3><188>: Abbrev Number: 0
++ <2><189>: Abbrev Number: 4 (DW_TAG_subprogram)
++    <18a>   DW_AT_external    : 1
++    <18a>   DW_AT_name        : (indexed string: 0x2): testcase3
++    <18b>   DW_AT_decl_file   : 2
++    <18c>   DW_AT_decl_line   : 42
++    <18d>   DW_AT_linkage_name: _ZN2C29testcase3Ev
++    <1a0>   DW_AT_type        : <0x1e1>
++    <1a4>   DW_AT_accessibility: 1    (public)
++    <1a5>   DW_AT_declaration : 1
++    <1a5>   DW_AT_object_pointer: <0x1ad>
++    <1a9>   DW_AT_sibling     : <0x1b3>
++ <3><1ad>: Abbrev Number: 5 (DW_TAG_formal_parameter)
++    <1ae>   DW_AT_type        : <0x1e9>
++    <1b2>   DW_AT_artificial  : 1
++ <3><1b2>: Abbrev Number: 0
++ <2><1b3>: Abbrev Number: 10 (DW_TAG_subprogram)
++    <1b4>   DW_AT_external    : 1
++    <1b4>   DW_AT_name        : (indexed string: 0x4): testcase4
++    <1b5>   DW_AT_decl_file   : 2
++    <1b6>   DW_AT_decl_line   : 43
++    <1b7>   DW_AT_linkage_name: _ZN2C29testcase4Ev
++    <1ca>   DW_AT_type        : <0x1e1>
++    <1ce>   DW_AT_accessibility: 1    (public)
++    <1cf>   DW_AT_declaration : 1
++    <1cf>   DW_AT_object_pointer: <0x1d3>
++ <3><1d3>: Abbrev Number: 5 (DW_TAG_formal_parameter)
++    <1d4>   DW_AT_type        : <0x1e9>
++    <1d8>   DW_AT_artificial  : 1
++ <3><1d8>: Abbrev Number: 0
++ <2><1d9>: Abbrev Number: 0
++ <1><1da>: Abbrev Number: 7 (DW_TAG_base_type)
++    <1db>   DW_AT_byte_size   : 4
++    <1dc>   DW_AT_encoding    : 5     (signed)
++    <1dd>   DW_AT_name        : int
++ <1><1e1>: Abbrev Number: 7 (DW_TAG_base_type)
++    <1e2>   DW_AT_byte_size   : 1
++    <1e3>   DW_AT_encoding    : 2     (boolean)
++    <1e4>   DW_AT_name        : bool
++ <1><1e9>: Abbrev Number: 8 (DW_TAG_pointer_type)
++    <1ea>   DW_AT_byte_size   : 8
++    <1eb>   DW_AT_type        : <0x120>
++ <1><1ef>: Abbrev Number: 0
++  Compilation Unit @ offset 0x1f0:
++   Length:        0x141 (32-bit)
++   Version:       4
++   Abbrev Offset: 0x0
++   Pointer Size:  8
++   Signature:     0xb5faa2a4b7a919c4
++   Type Offset:   0x25
++   Section contributions:
++    .debug_abbrev.dwo:       0x0  0x154
++    .debug_line.dwo:         0x0  0x40
++    .debug_loc.dwo:          0x0  0x0
++    .debug_str_offsets.dwo:  0x0  0x14
++ <0><207>: Abbrev Number: 1 (DW_TAG_type_unit)
++    <208>   DW_AT_language    : 4     (C++)
++    <209>   DW_AT_GNU_odr_signature: 0xc7fbeb753b05ade3
++    <211>   DW_AT_stmt_list   : 0x0
++ <1><215>: Abbrev Number: 2 (DW_TAG_class_type)
++    <216>   DW_AT_name        : C1
++    <219>   DW_AT_byte_size   : 4
++    <21a>   DW_AT_decl_file   : 2
++    <21b>   DW_AT_decl_line   : 25
++    <21c>   DW_AT_sibling     : <0x31f>
++ <2><220>: Abbrev Number: 3 (DW_TAG_member)
++    <221>   DW_AT_name        : (indexed string: 0x3): member1
++    <222>   DW_AT_decl_file   : 2
++    <223>   DW_AT_decl_line   : 34
++    <224>   DW_AT_type        : <0x31f>
++    <228>   DW_AT_data_member_location: 0
++    <229>   DW_AT_accessibility: 1    (public)
++ <2><22a>: Abbrev Number: 4 (DW_TAG_subprogram)
++    <22b>   DW_AT_external    : 1
++    <22b>   DW_AT_name        : (indexed string: 0x0): testcase1
++    <22c>   DW_AT_decl_file   : 2
++    <22d>   DW_AT_decl_line   : 28
++    <22e>   DW_AT_linkage_name: _ZN2C19testcase1Ev
++    <241>   DW_AT_type        : <0x326>
++    <245>   DW_AT_accessibility: 1    (public)
++    <246>   DW_AT_declaration : 1
++    <246>   DW_AT_object_pointer: <0x24e>
++    <24a>   DW_AT_sibling     : <0x254>
++ <3><24e>: Abbrev Number: 5 (DW_TAG_formal_parameter)
++    <24f>   DW_AT_type        : <0x32e>
++    <253>   DW_AT_artificial  : 1
++ <3><253>: Abbrev Number: 0
++ <2><254>: Abbrev Number: 11 (DW_TAG_subprogram)
++    <255>   DW_AT_external    : 1
++    <255>   DW_AT_name        : t1a
++    <259>   DW_AT_decl_file   : 2
++    <25a>   DW_AT_decl_line   : 29
++    <25b>   DW_AT_linkage_name: _ZN2C13t1aEv
++    <268>   DW_AT_type        : <0x326>
++    <26c>   DW_AT_accessibility: 1    (public)
++    <26d>   DW_AT_declaration : 1
++    <26d>   DW_AT_object_pointer: <0x275>
++    <271>   DW_AT_sibling     : <0x27b>
++ <3><275>: Abbrev Number: 5 (DW_TAG_formal_parameter)
++    <276>   DW_AT_type        : <0x32e>
++    <27a>   DW_AT_artificial  : 1
++ <3><27a>: Abbrev Number: 0
++ <2><27b>: Abbrev Number: 11 (DW_TAG_subprogram)
++    <27c>   DW_AT_external    : 1
++    <27c>   DW_AT_name        : t1_2
++    <281>   DW_AT_decl_file   : 2
++    <282>   DW_AT_decl_line   : 30
++    <283>   DW_AT_linkage_name: _ZN2C14t1_2Ev
++    <291>   DW_AT_type        : <0x31f>
++    <295>   DW_AT_accessibility: 1    (public)
++    <296>   DW_AT_declaration : 1
++    <296>   DW_AT_object_pointer: <0x29e>
++    <29a>   DW_AT_sibling     : <0x2a4>
++ <3><29e>: Abbrev Number: 5 (DW_TAG_formal_parameter)
++    <29f>   DW_AT_type        : <0x32e>
++    <2a3>   DW_AT_artificial  : 1
++ <3><2a3>: Abbrev Number: 0
++ <2><2a4>: Abbrev Number: 4 (DW_TAG_subprogram)
++    <2a5>   DW_AT_external    : 1
++    <2a5>   DW_AT_name        : (indexed string: 0x1): testcase2
++    <2a6>   DW_AT_decl_file   : 2
++    <2a7>   DW_AT_decl_line   : 31
++    <2a8>   DW_AT_linkage_name: _ZN2C19testcase2Ev
++    <2bb>   DW_AT_type        : <0x326>
++    <2bf>   DW_AT_accessibility: 1    (public)
++    <2c0>   DW_AT_declaration : 1
++    <2c0>   DW_AT_object_pointer: <0x2c8>
++    <2c4>   DW_AT_sibling     : <0x2ce>
++ <3><2c8>: Abbrev Number: 5 (DW_TAG_formal_parameter)
++    <2c9>   DW_AT_type        : <0x32e>
++    <2cd>   DW_AT_artificial  : 1
++ <3><2cd>: Abbrev Number: 0
++ <2><2ce>: Abbrev Number: 4 (DW_TAG_subprogram)
++    <2cf>   DW_AT_external    : 1
++    <2cf>   DW_AT_name        : (indexed string: 0x2): testcase3
++    <2d0>   DW_AT_decl_file   : 2
++    <2d1>   DW_AT_decl_line   : 32
++    <2d2>   DW_AT_linkage_name: _ZN2C19testcase3Ev
++    <2e5>   DW_AT_type        : <0x326>
++    <2e9>   DW_AT_accessibility: 1    (public)
++    <2ea>   DW_AT_declaration : 1
++    <2ea>   DW_AT_object_pointer: <0x2f2>
++    <2ee>   DW_AT_sibling     : <0x2f8>
++ <3><2f2>: Abbrev Number: 5 (DW_TAG_formal_parameter)
++    <2f3>   DW_AT_type        : <0x32e>
++    <2f7>   DW_AT_artificial  : 1
++ <3><2f7>: Abbrev Number: 0
++ <2><2f8>: Abbrev Number: 10 (DW_TAG_subprogram)
++    <2f9>   DW_AT_external    : 1
++    <2f9>   DW_AT_name        : (indexed string: 0x4): testcase4
++    <2fa>   DW_AT_decl_file   : 2
++    <2fb>   DW_AT_decl_line   : 33
++    <2fc>   DW_AT_linkage_name: _ZN2C19testcase4Ev
++    <30f>   DW_AT_type        : <0x326>
++    <313>   DW_AT_accessibility: 1    (public)
++    <314>   DW_AT_declaration : 1
++    <314>   DW_AT_object_pointer: <0x318>
++ <3><318>: Abbrev Number: 5 (DW_TAG_formal_parameter)
++    <319>   DW_AT_type        : <0x32e>
++    <31d>   DW_AT_artificial  : 1
++ <3><31d>: Abbrev Number: 0
++ <2><31e>: Abbrev Number: 0
++ <1><31f>: Abbrev Number: 7 (DW_TAG_base_type)
++    <320>   DW_AT_byte_size   : 4
++    <321>   DW_AT_encoding    : 5     (signed)
++    <322>   DW_AT_name        : int
++ <1><326>: Abbrev Number: 7 (DW_TAG_base_type)
++    <327>   DW_AT_byte_size   : 1
++    <328>   DW_AT_encoding    : 2     (boolean)
++    <329>   DW_AT_name        : bool
++ <1><32e>: Abbrev Number: 8 (DW_TAG_pointer_type)
++    <32f>   DW_AT_byte_size   : 8
++    <330>   DW_AT_type        : <0x215>
++ <1><334>: Abbrev Number: 0
++
+diff --git a/binutils/testsuite/binutils-all/x86-64/pr26808.dwp.bz2 b/binutils/testsuite/binutils-all/x86-64/pr26808.dwp.bz2
+new file mode 100644
+index 00000000000..75cce36f8bc
+Binary files /dev/null and b/binutils/testsuite/binutils-all/x86-64/pr26808.dwp.bz2 differ
+diff --git a/binutils/testsuite/binutils-all/x86-64/x86-64.exp b/binutils/testsuite/binutils-all/x86-64/x86-64.exp
+index 7bd49ab619d..5f02ed35ade 100644
+--- a/binutils/testsuite/binutils-all/x86-64/x86-64.exp
++++ b/binutils/testsuite/binutils-all/x86-64/x86-64.exp
+@@ -27,3 +27,34 @@ foreach t $test_list {
+     verbose [file rootname $t]
+     run_dump_test [file rootname $t]
+ }
++
++set t $srcdir/$subdir/pr26808.dwp.bz2
++# We need to strip the ".bz2", but can leave the dirname.
++set test $subdir/[file tail $t]
++set testname [file rootname $test]
++verbose $testname
++if {[catch "system \"bzip2 -dc $t > $tempfile\""] != 0} {
++  untested "bzip2 -dc ($testname)"
++} else {
++    send_log "$READELF -wi $tempfile > tmpdir/pr26808.out 2> /dev/null\n"
++    verbose "$READELF -wi $tempfile > tmpdir/pr26808.out 2> /dev/null" 1
++    set got [catch "system \"$READELF -wi $tempfile > tmpdir/pr26808.out 2> /dev/null\""]
++
++    if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]]} then {
++      fail $testname
++    } else {
++      send_log "cmp tmpdir/pr26808.out $srcdir/$subdir/pr26808.dump\n"
++      verbose "cmp tmpdir/pr26808.out $srcdir/$subdir/pr26808.dump" 1
++      set status [remote_exec build cmp "tmpdir/pr26808.out $srcdir/$subdir/pr26808.dump"]
++      set exec_output [lindex $status 1]
++      set exec_output [prune_warnings $exec_output]
++
++      if [string match "" $exec_output] then {
++          pass "readelf -wi ($testname)"
++      } else {
++          send_log "$exec_output\n"
++          verbose "$exec_output" 1
++          fail "readelf -wi ($testname)"
++      }
++    }
++}
+diff --git a/elfcpp/ChangeLog b/elfcpp/ChangeLog
+index efb82c57703..fa1d20e5d9a 100644
+--- a/elfcpp/ChangeLog
++++ b/elfcpp/ChangeLog
+@@ -1,3 +1,10 @@
++2020-11-16  Mark Wielaard  <mark@klomp.org>
++
++      Backport from the mainline:
++      2020-09-25  Alan Modra  <amodra@gmail.com>
++
++      * dwarf.h (DW_FIRST_UT, DW_UT, DW_END_UT): Define.
++
+ 2020-07-04  Nick Clifton  <nickc@redhat.com>
+       Binutils 2.35 branch created.
+diff --git a/elfcpp/dwarf.h b/elfcpp/dwarf.h
+index 1221f37f8a6..d5e06d4d7d3 100644
+--- a/elfcpp/dwarf.h
++++ b/elfcpp/dwarf.h
+@@ -81,6 +81,11 @@ namespace elfcpp
+ #define DW_IDX_DUP(name, value) , name = value
+ #define DW_END_IDX };
++#define DW_FIRST_UT(name, value) enum dwarf_unit_type { \
++  name = value
++#define DW_UT(name, value) , name = value
++#define DW_END_UT };
++
+ #include "dwarf2.def"
+ #undef DW_FIRST_TAG
+@@ -117,6 +122,10 @@ namespace elfcpp
+ #undef DW_IDX_DUP
+ #undef DW_END_IDX
++#undef DW_FIRST_UT
++#undef DW_UT
++#undef DW_END_UT
++
+ // Frame unwind information.
+ enum DW_EH_PE
+diff --git a/gas/ChangeLog b/gas/ChangeLog
+index 26c703531d9..3ac2f7b72e2 100644
+--- a/gas/ChangeLog
++++ b/gas/ChangeLog
+@@ -1,3 +1,171 @@
++2020-11-15  Mark Wielaard  <mark@klomp.org>
++
++      Backport from the mainline:
++      2020-10-16  H.J. Lu  <hongjiu.lu@intel.com>
++
++      PR gas/25878
++      PR gas/26740
++      * dwarf2dbg.c (file_entry): Remove auto_assigned.
++      (assign_file_to_slot): Remove the auto_assign argument.
++      (allocate_filenum): Updated.
++      (allocate_filename_to_slot): Reuse the input file entry in the
++      file table.
++      (dwarf2_where): Replace as_where with as_where_physical.
++      * testsuite/gas/i386/dwarf5-line-1.d: New file.
++      * testsuite/gas/i386/dwarf5-line-1.s: Likewise.
++      * testsuite/gas/i386/i386.exp: Run dwarf5-line-1.
++
++      2020-10-17  H.J. Lu  <hongjiu.lu@intel.com>
++
++      PR gas/25878
++      PR gas/26740
++      * dwarf2dbg.c (allocate_filename_to_slot): Don't reuse the slot 1
++      here.
++      (dwarf2_where): Restore as_where.
++      (dwarf2_directive_filename): Clear the slot 1 if it was assigned
++      to the input file.
++      * testsuite/gas/i386/dwarf5-line-2.d: New file.
++      * testsuite/gas/i386/dwarf5-line-2.s: Likewise.
++      * testsuite/gas/i386/dwarf5-line-3.d: Likewise.
++      * testsuite/gas/i386/dwarf5-line-3.s: Likewise.
++      * testsuite/gas/i386/i386.exp: Run dwarf5-line-2 and
++      dwarf5-line-3.
++
++      2020-10-26  H.J. Lu  <hongjiu.lu@intel.com>
++
++      PR gas/26778
++      * * dwarf2dbg.c (num_of_auto_assigned): New.
++      (allocate_filenum): Increment num_of_auto_assigned.
++      (dwarf2_directive_filename): Clear the slots auto-assigned
++      before the first .file <NUMBER> directive was seen.
++      * testsuite/gas/i386/dwarf4-line-1.d: New file.
++      * testsuite/gas/i386/dwarf4-line-1.s: Likewise.
++      * testsuite/gas/i386/i386.exp: Run dwarf4-line-1.
++
++2020-11-15  Mark Wielaard  <mark@klomp.org>
++
++      Backport from the mainline:
++      2020-09-23  Mark Wielaard  <mark@klomp.org>
++
++      * testsuite/gas/elf/dwarf-5-cu.d: Adjust expected output.
++
++2020-11-05  Alex Coplan  <alex.coplan@arm.com>
++
++      * config/tc-aarch64.c (aarch64_cpus): Add neoverse-n2.
++      * doc/c-aarch64.texi: Document support for Neoverse N2.
++
++2020-10-21  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
++
++      PR target/26763
++      * config/tc-arm.c (parse_address_main): Add new MVE addressing mode
++      check.
++      * testsuite/gas/arm/mve-vldr-vstr-bad.d: New test.
++      * testsuite/gas/arm/mve-vldr-vstr-bad.l: Likewise.
++      * testsuite/gas/arm/mve-vldr-vstr-bad.s: Likewise.
++
++2020-10-09  Alex Coplan  <alex.coplan@arm.com>
++
++      * config/tc-arm.c (arm_cpus): Add Neoverse N2.
++      * doc/c-arm.texi: Document -mcpu=neoverse-n2.
++
++2020-10-09  Alex Coplan  <alex.coplan@arm.com>
++
++      * config/tc-arm.c (arm_cpus): Add Neoverse V1.
++      * doc/c-arm.texi: Document Neoverse V1 support.
++
++2020-10-07  H.J. Lu  <hongjiu.lu@intel.com>
++
++      PR gas/26685
++      * config/tc-i386.c (process_suffix): Also check the register
++      operand for the address size prefix if the memory operand has
++      no real registers.
++      * testsuite/gas/i386/enqcmd-16bit.d: New file.
++      * testsuite/gas/i386/enqcmd-16bit.s: Likewise.
++      * testsuite/gas/i386/movdir-16bit.d: Likewise.
++      * testsuite/gas/i386/movdir-16bit.s: Likewise.
++      * testsuite/gas/i386/enqcmd.s: Add tests with symbol and DISP.
++      * testsuite/gas/i386/x86-64-enqcmd.s: Likewise.
++      * testsuite/gas/i386/x86-64-movdir.s: Likewise.
++      * testsuite/gas/i386/movdir.s: Add tests with symbol and DISP.
++      Remove the .code16 test.
++      * testsuite/gas/i386/i386.exp: Run movdir-16bit and enqcmd-16bit.
++      * testsuite/gas/i386/x86-64-enqcmd-intel.d: Updated.
++      * testsuite/gas/i386/x86-64-enqcmd.d: Likewise.
++      * testsuite/gas/i386/x86-64-movdir-intel.d: Likewise.
++      * testsuite/gas/i386/x86-64-movdir.d: Likewise.
++      * testsuite/gas/i386/enqcmd-intel.d: Likewise.
++      * testsuite/gas/i386/enqcmd.d: Likewise.
++      * testsuite/gas/i386/movdir-intel.d: Likewise.
++      * testsuite/gas/i386/movdir.d: Likewise.
++      * testsuite/gas/i386/x86-64-enqcmd-intel.d: Likewise.
++      * testsuite/gas/i386/x86-64-enqcmd.d: Likewise.
++      * testsuite/gas/i386/x86-64-movdir-intel.d: Likewise.
++      * testsuite/gas/i386/x86-64-movdir.d: Likewise.
++
++2020-10-07  H.J. Lu  <hongjiu.lu@intel.com>
++
++      PR gas/26685
++      * config/tc-i386.c (process_suffix): Check the register operand
++      for the address size prefix if the memory operand is symbol(%rip).
++      * testsuite/gas/i386/x86-64-enqcmd.s: Add tests with RIP-relative
++      addressing.
++      * testsuite/gas/i386/x86-64-movdir.s: Likewise.
++      * testsuite/gas/i386/x86-64-enqcmd-intel.d: Updated.
++      * testsuite/gas/i386/x86-64-enqcmd.d: Likewise.
++      * testsuite/gas/i386/x86-64-movdir-intel.d: Likewise.
++      * testsuite/gas/i386/x86-64-movdir.d: Likewise.
++
++2020-10-07  Jan Beulich  <jbeulich@suse.com>
++
++      * testsuite/gas/i386/evex-no-scale-64.d,
++      testsuite/gas/i386/addr32.d,
++      testsuite/gas/i386/x86-64-addr32-intel.d,
++      testsuite/gas/i386/x86-64-addr32.d: Adjust expectations.
++
++2020-10-06  Alex Coplan  <alex.coplan@arm.com>
++
++      PR 26699
++      * config/tc-aarch64.c (asm_barrier_opt): Delete.
++      (parse_barrier): Fix bogus type punning.
++      * testsuite/gas/aarch64/system.d: Update disassembly.
++      * testsuite/gas/aarch64/system.s: Add isb sy test.
++
++2020-10-02  Alex Coplan  <alex.coplan@arm.com>
++
++      * config/tc-aarch64.c (aarch64_cpus): Add Neoverse V1.
++      * doc/c-aarch64.texi: Document Neoverse V1 support.
++
++2020-09-24  Alan Modra  <amodra@gmail.com>
++
++      Apply from master
++      2020-08-19  Alan Modra  <amodra@gmail.com>
++      * testsuite/gas/ppc/int128.s: Correct vcmpuq.
++      * testsuite/gas/ppc/int128.d: Update.
++      * testsuite/gas/ppc/xvtlsbb.d: Update.
++
++      2020-08-10  Alan Modra  <amodra@gmail.com>
++      * testsuite/gas/ppc/power8.d,
++      * testsuite/gas/ppc/power8.s: Add miso.
++      * testsuite/gas/ppc/power9.d,
++      * testsuite/gas/ppc/power8.s: Add exser, msgsndu, msgclru.
++
++      2020-08-10  Alan Modra  <amodra@gmail.com>
++      * testsuite/gas/ppc/power8.d: Update.
++      * testsuite/gas/ppc/vsx2.d: Update.
++
++      2020-08-10  Alan Modra  <amodra@gmail.com>
++      * config/tc-ppc.c (md_assemble): Error for lmw, stmw, lswi, lswx,
++      stswi, or stswx in little-endian mode.
++      * testsuite/gas/ppc/476.d,
++      * testsuite/gas/ppc/476.s: Delete lmw, stmw, lswi, lswx, stswi, stswx.
++      * testsuite/gas/ppc/a2.d,
++      * testsuite/gas/ppc/a2.s: Move lmw, stmw, lswi, lswx, stswi, stswx..
++      * testsuite/gas/ppc/be.d,
++      * testsuite/gas/ppc/be.s: ..to here, new big-endian only test.
++      * testsuite/gas/ppc/le_error.d,
++      * testsuite/gas/ppc/le_error.l: New little-endian test.
++      * testsuite/gas/ppc/ppc.exp: Run new tests.
++
+ 2020-09-19  Nick Clifton  <nickc@redhat.com>
+       This is the 2.35.1 point release.
+diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
+index ecb15d23437..12eb13594c9 100644
+--- a/gas/config/tc-aarch64.c
++++ b/gas/config/tc-aarch64.c
+@@ -247,12 +247,6 @@ set_fatal_syntax_error (const char *error)
+    present. */
+ #define COND_ALWAYS 0x10
+-typedef struct
+-{
+-  const char *template;
+-  unsigned long value;
+-} asm_barrier_opt;
+-
+ typedef struct
+ {
+   const char *template;
+@@ -3994,7 +3988,7 @@ static int
+ parse_barrier (char **str)
+ {
+   char *p, *q;
+-  const asm_barrier_opt *o;
++  const struct aarch64_name_value_pair *o;
+   p = q = *str;
+   while (ISALPHA (*q))
+@@ -8936,6 +8930,25 @@ static const struct aarch64_cpu_option_table aarch64_cpus[] = {
+                                 | AARCH64_FEATURE_DOTPROD
+                                 | AARCH64_FEATURE_PROFILE),
+                                 "Neoverse N1"},
++  {"neoverse-n2", AARCH64_FEATURE (AARCH64_ARCH_V8_5,
++                                 AARCH64_FEATURE_BFLOAT16
++                               | AARCH64_FEATURE_I8MM
++                               | AARCH64_FEATURE_F16
++                               | AARCH64_FEATURE_SVE
++                               | AARCH64_FEATURE_SVE2
++                               | AARCH64_FEATURE_SVE2_BITPERM
++                               | AARCH64_FEATURE_MEMTAG
++                               | AARCH64_FEATURE_RNG),
++                               "Neoverse N2"},
++  {"neoverse-v1", AARCH64_FEATURE (AARCH64_ARCH_V8_4,
++                          AARCH64_FEATURE_PROFILE
++                        | AARCH64_FEATURE_CVADP
++                        | AARCH64_FEATURE_SVE
++                        | AARCH64_FEATURE_SSBS
++                        | AARCH64_FEATURE_RNG
++                        | AARCH64_FEATURE_F16
++                        | AARCH64_FEATURE_BFLOAT16
++                        | AARCH64_FEATURE_I8MM), "Neoverse V1"},
+   {"qdf24xx", AARCH64_FEATURE (AARCH64_ARCH_V8,
+                              AARCH64_FEATURE_CRC | AARCH64_FEATURE_CRYPTO
+                              | AARCH64_FEATURE_RDMA),
+diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
+index e0d0cbd5463..b02e9fb1c8f 100644
+--- a/gas/config/tc-arm.c
++++ b/gas/config/tc-arm.c
+@@ -5936,7 +5936,15 @@ parse_address_main (char **str, int i, int group_relocations,
+   if (skip_past_char (&p, '[') == FAIL)
+     {
+-      if (skip_past_char (&p, '=') == FAIL)
++      if (group_type == GROUP_MVE
++        && (reg = arm_reg_parse (&p, REG_TYPE_RN)) != FAIL)
++      {
++        /* [r0-r15] expected as argument but receiving r0-r15 without
++           [] brackets.  */
++        inst.error = BAD_SYNTAX;
++        return PARSE_OPERAND_FAIL;
++      }
++      else if (skip_past_char (&p, '=') == FAIL)
+       {
+         /* Bare address - translate to PC-relative offset.  */
+         inst.relocs[0].pc_rel = 1;
+@@ -26506,14 +26514,14 @@ static const struct asm_opcode insns[] =
+ #define ARM_VARIANT  & fpu_vfp_ext_v1
+ #undef  THUMB_VARIANT
+ #define THUMB_VARIANT  & arm_ext_v6t2
+- mnCEF(vmla,     _vmla,    3, (RNSDQMQ, oRNSDQMQ, RNSDQ_RNSC_MQ_RR), neon_mac_maybe_scalar),
+- mnCEF(vmul,     _vmul,    3, (RNSDQMQ, oRNSDQMQ, RNSDQ_RNSC_MQ_RR), neon_mul),
+  mcCE(fcpyd,  eb00b40, 2, (RVD, RVD),       vfp_dp_rd_rm),
+ #undef  ARM_VARIANT
+ #define ARM_VARIANT  & fpu_vfp_ext_v1xd
++ mnCEF(vmla,     _vmla,    3, (RNSDQMQ, oRNSDQMQ, RNSDQ_RNSC_MQ_RR), neon_mac_maybe_scalar),
++ mnCEF(vmul,     _vmul,    3, (RNSDQMQ, oRNSDQMQ, RNSDQ_RNSC_MQ_RR), neon_mul),
+  MNCE(vmov,   0,      1, (VMOV),            neon_mov),
+  mcCE(fmrs,   e100a10, 2, (RR, RVS),        vfp_reg_from_sp),
+  mcCE(fmsr,   e000a10, 2, (RVS, RR),        vfp_sp_from_reg),
+@@ -31587,6 +31595,16 @@ static const struct arm_cpu_option_table arm_cpus[] =
+   ARM_CPU_OPT ("neoverse-n1",    "Neoverse N1",              ARM_ARCH_V8_2A,
+              ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST),
+              FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_DOTPROD),
++  ARM_CPU_OPT ("neoverse-n2",  "Neoverse N2",        ARM_ARCH_V8_5A,
++             ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST
++                                  | ARM_EXT2_BF16
++                                  | ARM_EXT2_I8MM),
++             FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_4),
++  ARM_CPU_OPT ("neoverse-v1", "Neoverse V1", ARM_ARCH_V8_4A,
++             ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST
++                                  | ARM_EXT2_BF16
++                                  | ARM_EXT2_I8MM),
++             FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_4),
+   /* ??? XSCALE is really an architecture.  */
+   ARM_CPU_OPT ("xscale",        NULL,                ARM_ARCH_XSCALE,
+              ARM_ARCH_NONE,
+diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
+index 037fe4d18b4..623ac77307e 100644
+--- a/gas/config/tc-i386.c
++++ b/gas/config/tc-i386.c
+@@ -7115,6 +7115,23 @@ process_suffix (void)
+         unsigned int op;
+         enum { need_word, need_dword, need_qword } need;
++        /* Check the register operand for the address size prefix if
++           the memory operand has no real registers, like symbol, DISP
++           or symbol(%rip).  */
++        if (i.mem_operands == 1
++            && i.reg_operands == 1
++            && i.operands == 2
++            && i.types[1].bitfield.class == Reg
++            && (flag_code == CODE_32BIT
++                ? i.op[1].regs->reg_type.bitfield.word
++                : i.op[1].regs->reg_type.bitfield.dword)
++            && ((i.base_reg == NULL && i.index_reg == NULL)
++                || (i.base_reg
++                    && i.base_reg->reg_num == RegIP
++                    && i.base_reg->reg_type.bitfield.qword))
++            && !add_prefix (ADDR_PREFIX_OPCODE))
++          return 0;
++
+         if (flag_code == CODE_32BIT)
+           need = i.prefix[ADDR_PREFIX] ? need_word : need_dword;
+         else if (i.prefix[ADDR_PREFIX])
+diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c
+index aa989e7d1c2..9719341c546 100644
+--- a/gas/config/tc-ppc.c
++++ b/gas/config/tc-ppc.c
+@@ -3335,6 +3335,15 @@ md_assemble (char *str)
+     }
+   insn = opcode->opcode;
++  if (!target_big_endian
++      && ((insn & ~(1 << 26)) == 46u << 26
++        || (insn & ~(0xc0 << 1)) == (31u << 26 | 533 << 1)))
++    {
++       /* lmw, stmw, lswi, lswx, stswi, stswx */
++      as_bad (_("`%s' invalid when little-endian"), str);
++      ppc_clear_labels ();
++      return;
++    }
+   str = s;
+   while (ISSPACE (*str))
+diff --git a/gas/doc/c-aarch64.texi b/gas/doc/c-aarch64.texi
+index 86b6efc52bd..f5d26695749 100644
+--- a/gas/doc/c-aarch64.texi
++++ b/gas/doc/c-aarch64.texi
+@@ -72,6 +72,8 @@ on the target processor.  The following processor names are recognized:
+ @code{exynos-m1},
+ @code{falkor},
+ @code{neoverse-n1},
++@code{neoverse-n2},
++@code{neoverse-v1},
+ @code{neoverse-e1},
+ @code{qdf24xx},
+ @code{saphira},
+diff --git a/gas/doc/c-arm.texi b/gas/doc/c-arm.texi
+index 91803605775..16c94de675c 100644
+--- a/gas/doc/c-arm.texi
++++ b/gas/doc/c-arm.texi
+@@ -151,6 +151,8 @@ recognized:
+ @code{marvell-pj4},
+ @code{marvell-whitney},
+ @code{neoverse-n1},
++@code{neoverse-n2},
++@code{neoverse-v1},
+ @code{xgene1},
+ @code{xgene2},
+ @code{ep9312} (ARM920 with Cirrus Maverick coprocessor),
+diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c
+index 6899a840eff..1160cafc13e 100644
+--- a/gas/dwarf2dbg.c
++++ b/gas/dwarf2dbg.c
+@@ -211,7 +211,6 @@ struct file_entry
+ {
+   const char *   filename;
+   unsigned int   dir;
+-  bfd_boolean    auto_assigned;
+   unsigned char  md5[NUM_MD5_BYTES];
+ };
+@@ -219,6 +218,7 @@ struct file_entry
+ static struct file_entry *files;
+ static unsigned int files_in_use;
+ static unsigned int files_allocated;
++static unsigned int num_of_auto_assigned;
+ /* Table of directories used by .debug_line.  */
+ static char **       dirs = NULL;
+@@ -633,7 +633,7 @@ get_directory_table_entry (const char *  dirname,
+ }
+ static bfd_boolean
+-assign_file_to_slot (unsigned long i, const char *file, unsigned int dir, bfd_boolean auto_assign)
++assign_file_to_slot (unsigned long i, const char *file, unsigned int dir)
+ {
+   if (i >= files_allocated)
+     {
+@@ -653,7 +653,6 @@ assign_file_to_slot (unsigned long i, const char *file, unsigned int dir, bfd_bo
+   files[i].filename = file;
+   files[i].dir = dir;
+-  files[i].auto_assigned = auto_assign;
+   memset (files[i].md5, 0, NUM_MD5_BYTES);
+   if (files_in_use < i + 1)
+@@ -717,9 +716,11 @@ allocate_filenum (const char * pathname)
+       return i;
+       }
+-  if (!assign_file_to_slot (i, file, dir, TRUE))
++  if (!assign_file_to_slot (i, file, dir))
+     return -1;
++  num_of_auto_assigned++;
++
+   last_used = i;
+   last_used_dir_len = dir_len;
+@@ -792,30 +793,15 @@ allocate_filename_to_slot (const char *  dirname,
+       }
+     fail:
+-      /* If NUM was previously allocated automatically then
+-       choose another slot for it, so that we can reuse NUM.  */
+-      if (files[num].auto_assigned)
+-      {
+-        /* Find an unused slot.  */
+-        for (i = 1; i < files_in_use; ++i)
+-          if (files[i].filename == NULL)
+-            break;
+-        if (! assign_file_to_slot (i, files[num].filename, files[num].dir, TRUE))
+-          return FALSE;
+-        files[num].filename = NULL;
+-      }
+-      else
+-      {
+-        as_bad (_("file table slot %u is already occupied by a different file (%s%s%s vs %s%s%s)"),
+-                num,
+-                dir == NULL ? "" : dir,
+-                dir == NULL ? "" : "/",
+-                files[num].filename,
+-                dirname == NULL ? "" : dirname,
+-                dirname == NULL ? "" : "/",
+-                filename);
+-        return FALSE;
+-      }
++      as_bad (_("file table slot %u is already occupied by a different file (%s%s%s vs %s%s%s)"),
++            num,
++            dir == NULL ? "" : dir,
++            dir == NULL ? "" : "/",
++            files[num].filename,
++            dirname == NULL ? "" : dirname,
++            dirname == NULL ? "" : "/",
++            filename);
++      return FALSE;
+     }
+   if (dirname == NULL)
+@@ -833,7 +819,7 @@ allocate_filename_to_slot (const char *  dirname,
+   d = get_directory_table_entry (dirname, dirlen, num == 0);
+   i = num;
+-  if (! assign_file_to_slot (i, file, d, FALSE))
++  if (! assign_file_to_slot (i, file, d))
+     return FALSE;
+   if (with_md5)
+@@ -1030,6 +1016,7 @@ dwarf2_directive_filename (void)
+   char *filename;
+   const char * dirname = NULL;
+   int filename_len;
++  unsigned int i;
+   /* Continue to accept a bare string and pass it off.  */
+   SKIP_WHITESPACE ();
+@@ -1096,6 +1083,18 @@ dwarf2_directive_filename (void)
+       return NULL;
+     }
++  if (num_of_auto_assigned)
++    {
++      /* Clear slots auto-assigned before the first .file <NUMBER>
++       directive was seen.  */
++      if (files_in_use != (num_of_auto_assigned + 1))
++      abort ();
++      for (i = 1; i < files_in_use; i++)
++      files[i].filename = NULL;
++      files_in_use = 0;
++      num_of_auto_assigned = 0;
++    }
++
+   if (! allocate_filename_to_slot (dirname, filename, (unsigned int) num,
+                                  with_md5))
+     return NULL;
+diff --git a/gas/testsuite/gas/aarch64/system.d b/gas/testsuite/gas/aarch64/system.d
+index 20d5c204094..c973584af59 100644
+--- a/gas/testsuite/gas/aarch64/system.d
++++ b/gas/testsuite/gas/aarch64/system.d
+@@ -190,6 +190,7 @@ Disassembly of section \.text:
+ .*:   d5033edf        isb     #0xe
+ .*:   d5033fdf        isb
+ .*:   d5033fdf        isb
++.*:   d5033fdf        isb
+ .*:   d503309f        ssbb
+ .*:   d503349f        pssbb
+ .*:   d8000000        prfm    pldl1keep, 0 <LABEL1>
+diff --git a/gas/testsuite/gas/aarch64/system.s b/gas/testsuite/gas/aarch64/system.s
+index 9d86f66806a..6f494f885a6 100644
+--- a/gas/testsuite/gas/aarch64/system.s
++++ b/gas/testsuite/gas/aarch64/system.s
+@@ -44,6 +44,7 @@
+       all_barriers    op=isb, from=0, to=15
+       isb
++      isb sy
+       ssbb
+       pssbb
+diff --git a/gas/testsuite/gas/arm/mve-vldr-vstr-bad.d b/gas/testsuite/gas/arm/mve-vldr-vstr-bad.d
+new file mode 100644
+index 00000000000..8989688f0f3
+--- /dev/null
++++ b/gas/testsuite/gas/arm/mve-vldr-vstr-bad.d
+@@ -0,0 +1,5 @@
++#name: bad MVE VLDR VSTR wrong error message for addressing mode without [].
++#as: -march=armv8.1-m.main+mve.fp -mthumb -mfloat-abi=hard
++#error_output: mve-vldr-vstr-bad.l
++
++.*: +file format .*arm.*
+diff --git a/gas/testsuite/gas/arm/mve-vldr-vstr-bad.l b/gas/testsuite/gas/arm/mve-vldr-vstr-bad.l
+new file mode 100644
+index 00000000000..2df3a37ac02
+--- /dev/null
++++ b/gas/testsuite/gas/arm/mve-vldr-vstr-bad.l
+@@ -0,0 +1,811 @@
++[^:]*: Assembler messages:
++[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r0'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r0'
++[^:]*:12: Error: syntax error -- `vstrb.8 q0,r0'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r1'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r1'
++[^:]*:12: Error: syntax error -- `vstrb.8 q0,r1'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r2'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r2'
++[^:]*:12: Error: syntax error -- `vstrb.8 q0,r2'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r4'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r4'
++[^:]*:12: Error: syntax error -- `vstrb.8 q0,r4'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r7'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r7'
++[^:]*:12: Error: syntax error -- `vstrb.8 q0,r7'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r8'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r8'
++[^:]*:12: Error: syntax error -- `vstrb.8 q0,r8'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r10'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r10'
++[^:]*:12: Error: syntax error -- `vstrb.8 q0,r10'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r12'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r12'
++[^:]*:12: Error: syntax error -- `vstrb.8 q0,r12'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r14'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r14'
++[^:]*:12: Error: syntax error -- `vstrb.8 q0,r14'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r0'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r0'
++[^:]*:12: Error: syntax error -- `vstrb.8 q1,r0'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r1'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r1'
++[^:]*:12: Error: syntax error -- `vstrb.8 q1,r1'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r2'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r2'
++[^:]*:12: Error: syntax error -- `vstrb.8 q1,r2'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r4'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r4'
++[^:]*:12: Error: syntax error -- `vstrb.8 q1,r4'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r7'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r7'
++[^:]*:12: Error: syntax error -- `vstrb.8 q1,r7'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r8'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r8'
++[^:]*:12: Error: syntax error -- `vstrb.8 q1,r8'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r10'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r10'
++[^:]*:12: Error: syntax error -- `vstrb.8 q1,r10'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r12'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r12'
++[^:]*:12: Error: syntax error -- `vstrb.8 q1,r12'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r14'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r14'
++[^:]*:12: Error: syntax error -- `vstrb.8 q1,r14'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r0'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r0'
++[^:]*:12: Error: syntax error -- `vstrb.8 q2,r0'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r1'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r1'
++[^:]*:12: Error: syntax error -- `vstrb.8 q2,r1'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r2'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r2'
++[^:]*:12: Error: syntax error -- `vstrb.8 q2,r2'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r4'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r4'
++[^:]*:12: Error: syntax error -- `vstrb.8 q2,r4'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r7'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r7'
++[^:]*:12: Error: syntax error -- `vstrb.8 q2,r7'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r8'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r8'
++[^:]*:12: Error: syntax error -- `vstrb.8 q2,r8'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r10'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r10'
++[^:]*:12: Error: syntax error -- `vstrb.8 q2,r10'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r12'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r12'
++[^:]*:12: Error: syntax error -- `vstrb.8 q2,r12'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r14'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r14'
++[^:]*:12: Error: syntax error -- `vstrb.8 q2,r14'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r0'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r0'
++[^:]*:12: Error: syntax error -- `vstrb.8 q4,r0'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r1'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r1'
++[^:]*:12: Error: syntax error -- `vstrb.8 q4,r1'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r2'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r2'
++[^:]*:12: Error: syntax error -- `vstrb.8 q4,r2'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r4'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r4'
++[^:]*:12: Error: syntax error -- `vstrb.8 q4,r4'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r7'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r7'
++[^:]*:12: Error: syntax error -- `vstrb.8 q4,r7'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r8'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r8'
++[^:]*:12: Error: syntax error -- `vstrb.8 q4,r8'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r10'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r10'
++[^:]*:12: Error: syntax error -- `vstrb.8 q4,r10'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r12'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r12'
++[^:]*:12: Error: syntax error -- `vstrb.8 q4,r12'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r14'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r14'
++[^:]*:12: Error: syntax error -- `vstrb.8 q4,r14'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r0'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r0'
++[^:]*:12: Error: syntax error -- `vstrb.8 q7,r0'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r1'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r1'
++[^:]*:12: Error: syntax error -- `vstrb.8 q7,r1'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r2'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r2'
++[^:]*:12: Error: syntax error -- `vstrb.8 q7,r2'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r4'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r4'
++[^:]*:12: Error: syntax error -- `vstrb.8 q7,r4'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r7'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r7'
++[^:]*:12: Error: syntax error -- `vstrb.8 q7,r7'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r8'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r8'
++[^:]*:12: Error: syntax error -- `vstrb.8 q7,r8'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r10'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r10'
++[^:]*:12: Error: syntax error -- `vstrb.8 q7,r10'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r12'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r12'
++[^:]*:12: Error: syntax error -- `vstrb.8 q7,r12'
++[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r14'
++[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r14'
++[^:]*:12: Error: syntax error -- `vstrb.8 q7,r14'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r0'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r0'
++[^:]*:12: Error: syntax error -- `vstrb.16 q0,r0'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r1'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r1'
++[^:]*:12: Error: syntax error -- `vstrb.16 q0,r1'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r2'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r2'
++[^:]*:12: Error: syntax error -- `vstrb.16 q0,r2'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r4'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r4'
++[^:]*:12: Error: syntax error -- `vstrb.16 q0,r4'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r7'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r7'
++[^:]*:12: Error: syntax error -- `vstrb.16 q0,r7'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r8'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r8'
++[^:]*:12: Error: syntax error -- `vstrb.16 q0,r8'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r10'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r10'
++[^:]*:12: Error: syntax error -- `vstrb.16 q0,r10'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r12'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r12'
++[^:]*:12: Error: syntax error -- `vstrb.16 q0,r12'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r14'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r14'
++[^:]*:12: Error: syntax error -- `vstrb.16 q0,r14'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r0'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r0'
++[^:]*:12: Error: syntax error -- `vstrb.16 q1,r0'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r1'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r1'
++[^:]*:12: Error: syntax error -- `vstrb.16 q1,r1'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r2'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r2'
++[^:]*:12: Error: syntax error -- `vstrb.16 q1,r2'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r4'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r4'
++[^:]*:12: Error: syntax error -- `vstrb.16 q1,r4'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r7'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r7'
++[^:]*:12: Error: syntax error -- `vstrb.16 q1,r7'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r8'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r8'
++[^:]*:12: Error: syntax error -- `vstrb.16 q1,r8'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r10'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r10'
++[^:]*:12: Error: syntax error -- `vstrb.16 q1,r10'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r12'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r12'
++[^:]*:12: Error: syntax error -- `vstrb.16 q1,r12'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r14'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r14'
++[^:]*:12: Error: syntax error -- `vstrb.16 q1,r14'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r0'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r0'
++[^:]*:12: Error: syntax error -- `vstrb.16 q2,r0'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r1'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r1'
++[^:]*:12: Error: syntax error -- `vstrb.16 q2,r1'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r2'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r2'
++[^:]*:12: Error: syntax error -- `vstrb.16 q2,r2'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r4'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r4'
++[^:]*:12: Error: syntax error -- `vstrb.16 q2,r4'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r7'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r7'
++[^:]*:12: Error: syntax error -- `vstrb.16 q2,r7'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r8'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r8'
++[^:]*:12: Error: syntax error -- `vstrb.16 q2,r8'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r10'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r10'
++[^:]*:12: Error: syntax error -- `vstrb.16 q2,r10'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r12'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r12'
++[^:]*:12: Error: syntax error -- `vstrb.16 q2,r12'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r14'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r14'
++[^:]*:12: Error: syntax error -- `vstrb.16 q2,r14'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r0'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r0'
++[^:]*:12: Error: syntax error -- `vstrb.16 q4,r0'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r1'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r1'
++[^:]*:12: Error: syntax error -- `vstrb.16 q4,r1'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r2'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r2'
++[^:]*:12: Error: syntax error -- `vstrb.16 q4,r2'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r4'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r4'
++[^:]*:12: Error: syntax error -- `vstrb.16 q4,r4'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r7'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r7'
++[^:]*:12: Error: syntax error -- `vstrb.16 q4,r7'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r8'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r8'
++[^:]*:12: Error: syntax error -- `vstrb.16 q4,r8'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r10'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r10'
++[^:]*:12: Error: syntax error -- `vstrb.16 q4,r10'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r12'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r12'
++[^:]*:12: Error: syntax error -- `vstrb.16 q4,r12'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r14'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r14'
++[^:]*:12: Error: syntax error -- `vstrb.16 q4,r14'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r0'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r0'
++[^:]*:12: Error: syntax error -- `vstrb.16 q7,r0'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r1'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r1'
++[^:]*:12: Error: syntax error -- `vstrb.16 q7,r1'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r2'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r2'
++[^:]*:12: Error: syntax error -- `vstrb.16 q7,r2'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r4'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r4'
++[^:]*:12: Error: syntax error -- `vstrb.16 q7,r4'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r7'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r7'
++[^:]*:12: Error: syntax error -- `vstrb.16 q7,r7'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r8'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r8'
++[^:]*:12: Error: syntax error -- `vstrb.16 q7,r8'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r10'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r10'
++[^:]*:12: Error: syntax error -- `vstrb.16 q7,r10'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r12'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r12'
++[^:]*:12: Error: syntax error -- `vstrb.16 q7,r12'
++[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r14'
++[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r14'
++[^:]*:12: Error: syntax error -- `vstrb.16 q7,r14'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r0'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r0'
++[^:]*:12: Error: syntax error -- `vstrb.32 q0,r0'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r1'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r1'
++[^:]*:12: Error: syntax error -- `vstrb.32 q0,r1'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r2'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r2'
++[^:]*:12: Error: syntax error -- `vstrb.32 q0,r2'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r4'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r4'
++[^:]*:12: Error: syntax error -- `vstrb.32 q0,r4'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r7'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r7'
++[^:]*:12: Error: syntax error -- `vstrb.32 q0,r7'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r8'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r8'
++[^:]*:12: Error: syntax error -- `vstrb.32 q0,r8'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r10'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r10'
++[^:]*:12: Error: syntax error -- `vstrb.32 q0,r10'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r12'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r12'
++[^:]*:12: Error: syntax error -- `vstrb.32 q0,r12'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r14'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r14'
++[^:]*:12: Error: syntax error -- `vstrb.32 q0,r14'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r0'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r0'
++[^:]*:12: Error: syntax error -- `vstrb.32 q1,r0'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r1'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r1'
++[^:]*:12: Error: syntax error -- `vstrb.32 q1,r1'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r2'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r2'
++[^:]*:12: Error: syntax error -- `vstrb.32 q1,r2'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r4'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r4'
++[^:]*:12: Error: syntax error -- `vstrb.32 q1,r4'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r7'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r7'
++[^:]*:12: Error: syntax error -- `vstrb.32 q1,r7'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r8'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r8'
++[^:]*:12: Error: syntax error -- `vstrb.32 q1,r8'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r10'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r10'
++[^:]*:12: Error: syntax error -- `vstrb.32 q1,r10'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r12'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r12'
++[^:]*:12: Error: syntax error -- `vstrb.32 q1,r12'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r14'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r14'
++[^:]*:12: Error: syntax error -- `vstrb.32 q1,r14'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r0'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r0'
++[^:]*:12: Error: syntax error -- `vstrb.32 q2,r0'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r1'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r1'
++[^:]*:12: Error: syntax error -- `vstrb.32 q2,r1'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r2'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r2'
++[^:]*:12: Error: syntax error -- `vstrb.32 q2,r2'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r4'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r4'
++[^:]*:12: Error: syntax error -- `vstrb.32 q2,r4'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r7'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r7'
++[^:]*:12: Error: syntax error -- `vstrb.32 q2,r7'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r8'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r8'
++[^:]*:12: Error: syntax error -- `vstrb.32 q2,r8'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r10'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r10'
++[^:]*:12: Error: syntax error -- `vstrb.32 q2,r10'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r12'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r12'
++[^:]*:12: Error: syntax error -- `vstrb.32 q2,r12'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r14'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r14'
++[^:]*:12: Error: syntax error -- `vstrb.32 q2,r14'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r0'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r0'
++[^:]*:12: Error: syntax error -- `vstrb.32 q4,r0'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r1'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r1'
++[^:]*:12: Error: syntax error -- `vstrb.32 q4,r1'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r2'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r2'
++[^:]*:12: Error: syntax error -- `vstrb.32 q4,r2'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r4'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r4'
++[^:]*:12: Error: syntax error -- `vstrb.32 q4,r4'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r7'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r7'
++[^:]*:12: Error: syntax error -- `vstrb.32 q4,r7'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r8'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r8'
++[^:]*:12: Error: syntax error -- `vstrb.32 q4,r8'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r10'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r10'
++[^:]*:12: Error: syntax error -- `vstrb.32 q4,r10'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r12'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r12'
++[^:]*:12: Error: syntax error -- `vstrb.32 q4,r12'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r14'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r14'
++[^:]*:12: Error: syntax error -- `vstrb.32 q4,r14'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r0'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r0'
++[^:]*:12: Error: syntax error -- `vstrb.32 q7,r0'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r1'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r1'
++[^:]*:12: Error: syntax error -- `vstrb.32 q7,r1'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r2'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r2'
++[^:]*:12: Error: syntax error -- `vstrb.32 q7,r2'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r4'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r4'
++[^:]*:12: Error: syntax error -- `vstrb.32 q7,r4'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r7'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r7'
++[^:]*:12: Error: syntax error -- `vstrb.32 q7,r7'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r8'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r8'
++[^:]*:12: Error: syntax error -- `vstrb.32 q7,r8'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r10'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r10'
++[^:]*:12: Error: syntax error -- `vstrb.32 q7,r10'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r12'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r12'
++[^:]*:12: Error: syntax error -- `vstrb.32 q7,r12'
++[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r14'
++[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r14'
++[^:]*:12: Error: syntax error -- `vstrb.32 q7,r14'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r0'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r0'
++[^:]*:22: Error: syntax error -- `vstrh.16 q0,r0'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r1'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r1'
++[^:]*:22: Error: syntax error -- `vstrh.16 q0,r1'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r2'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r2'
++[^:]*:22: Error: syntax error -- `vstrh.16 q0,r2'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r4'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r4'
++[^:]*:22: Error: syntax error -- `vstrh.16 q0,r4'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r7'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r7'
++[^:]*:22: Error: syntax error -- `vstrh.16 q0,r7'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r8'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r8'
++[^:]*:22: Error: syntax error -- `vstrh.16 q0,r8'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r10'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r10'
++[^:]*:22: Error: syntax error -- `vstrh.16 q0,r10'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r12'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r12'
++[^:]*:22: Error: syntax error -- `vstrh.16 q0,r12'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r14'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r14'
++[^:]*:22: Error: syntax error -- `vstrh.16 q0,r14'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r0'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r0'
++[^:]*:22: Error: syntax error -- `vstrh.16 q1,r0'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r1'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r1'
++[^:]*:22: Error: syntax error -- `vstrh.16 q1,r1'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r2'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r2'
++[^:]*:22: Error: syntax error -- `vstrh.16 q1,r2'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r4'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r4'
++[^:]*:22: Error: syntax error -- `vstrh.16 q1,r4'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r7'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r7'
++[^:]*:22: Error: syntax error -- `vstrh.16 q1,r7'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r8'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r8'
++[^:]*:22: Error: syntax error -- `vstrh.16 q1,r8'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r10'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r10'
++[^:]*:22: Error: syntax error -- `vstrh.16 q1,r10'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r12'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r12'
++[^:]*:22: Error: syntax error -- `vstrh.16 q1,r12'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r14'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r14'
++[^:]*:22: Error: syntax error -- `vstrh.16 q1,r14'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r0'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r0'
++[^:]*:22: Error: syntax error -- `vstrh.16 q2,r0'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r1'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r1'
++[^:]*:22: Error: syntax error -- `vstrh.16 q2,r1'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r2'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r2'
++[^:]*:22: Error: syntax error -- `vstrh.16 q2,r2'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r4'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r4'
++[^:]*:22: Error: syntax error -- `vstrh.16 q2,r4'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r7'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r7'
++[^:]*:22: Error: syntax error -- `vstrh.16 q2,r7'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r8'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r8'
++[^:]*:22: Error: syntax error -- `vstrh.16 q2,r8'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r10'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r10'
++[^:]*:22: Error: syntax error -- `vstrh.16 q2,r10'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r12'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r12'
++[^:]*:22: Error: syntax error -- `vstrh.16 q2,r12'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r14'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r14'
++[^:]*:22: Error: syntax error -- `vstrh.16 q2,r14'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r0'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r0'
++[^:]*:22: Error: syntax error -- `vstrh.16 q4,r0'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r1'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r1'
++[^:]*:22: Error: syntax error -- `vstrh.16 q4,r1'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r2'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r2'
++[^:]*:22: Error: syntax error -- `vstrh.16 q4,r2'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r4'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r4'
++[^:]*:22: Error: syntax error -- `vstrh.16 q4,r4'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r7'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r7'
++[^:]*:22: Error: syntax error -- `vstrh.16 q4,r7'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r8'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r8'
++[^:]*:22: Error: syntax error -- `vstrh.16 q4,r8'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r10'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r10'
++[^:]*:22: Error: syntax error -- `vstrh.16 q4,r10'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r12'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r12'
++[^:]*:22: Error: syntax error -- `vstrh.16 q4,r12'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r14'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r14'
++[^:]*:22: Error: syntax error -- `vstrh.16 q4,r14'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r0'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r0'
++[^:]*:22: Error: syntax error -- `vstrh.16 q7,r0'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r1'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r1'
++[^:]*:22: Error: syntax error -- `vstrh.16 q7,r1'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r2'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r2'
++[^:]*:22: Error: syntax error -- `vstrh.16 q7,r2'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r4'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r4'
++[^:]*:22: Error: syntax error -- `vstrh.16 q7,r4'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r7'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r7'
++[^:]*:22: Error: syntax error -- `vstrh.16 q7,r7'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r8'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r8'
++[^:]*:22: Error: syntax error -- `vstrh.16 q7,r8'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r10'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r10'
++[^:]*:22: Error: syntax error -- `vstrh.16 q7,r10'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r12'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r12'
++[^:]*:22: Error: syntax error -- `vstrh.16 q7,r12'
++[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r14'
++[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r14'
++[^:]*:22: Error: syntax error -- `vstrh.16 q7,r14'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r0'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r0'
++[^:]*:22: Error: syntax error -- `vstrh.32 q0,r0'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r1'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r1'
++[^:]*:22: Error: syntax error -- `vstrh.32 q0,r1'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r2'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r2'
++[^:]*:22: Error: syntax error -- `vstrh.32 q0,r2'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r4'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r4'
++[^:]*:22: Error: syntax error -- `vstrh.32 q0,r4'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r7'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r7'
++[^:]*:22: Error: syntax error -- `vstrh.32 q0,r7'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r8'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r8'
++[^:]*:22: Error: syntax error -- `vstrh.32 q0,r8'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r10'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r10'
++[^:]*:22: Error: syntax error -- `vstrh.32 q0,r10'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r12'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r12'
++[^:]*:22: Error: syntax error -- `vstrh.32 q0,r12'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r14'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r14'
++[^:]*:22: Error: syntax error -- `vstrh.32 q0,r14'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r0'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r0'
++[^:]*:22: Error: syntax error -- `vstrh.32 q1,r0'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r1'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r1'
++[^:]*:22: Error: syntax error -- `vstrh.32 q1,r1'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r2'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r2'
++[^:]*:22: Error: syntax error -- `vstrh.32 q1,r2'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r4'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r4'
++[^:]*:22: Error: syntax error -- `vstrh.32 q1,r4'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r7'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r7'
++[^:]*:22: Error: syntax error -- `vstrh.32 q1,r7'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r8'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r8'
++[^:]*:22: Error: syntax error -- `vstrh.32 q1,r8'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r10'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r10'
++[^:]*:22: Error: syntax error -- `vstrh.32 q1,r10'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r12'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r12'
++[^:]*:22: Error: syntax error -- `vstrh.32 q1,r12'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r14'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r14'
++[^:]*:22: Error: syntax error -- `vstrh.32 q1,r14'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r0'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r0'
++[^:]*:22: Error: syntax error -- `vstrh.32 q2,r0'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r1'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r1'
++[^:]*:22: Error: syntax error -- `vstrh.32 q2,r1'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r2'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r2'
++[^:]*:22: Error: syntax error -- `vstrh.32 q2,r2'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r4'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r4'
++[^:]*:22: Error: syntax error -- `vstrh.32 q2,r4'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r7'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r7'
++[^:]*:22: Error: syntax error -- `vstrh.32 q2,r7'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r8'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r8'
++[^:]*:22: Error: syntax error -- `vstrh.32 q2,r8'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r10'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r10'
++[^:]*:22: Error: syntax error -- `vstrh.32 q2,r10'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r12'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r12'
++[^:]*:22: Error: syntax error -- `vstrh.32 q2,r12'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r14'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r14'
++[^:]*:22: Error: syntax error -- `vstrh.32 q2,r14'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r0'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r0'
++[^:]*:22: Error: syntax error -- `vstrh.32 q4,r0'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r1'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r1'
++[^:]*:22: Error: syntax error -- `vstrh.32 q4,r1'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r2'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r2'
++[^:]*:22: Error: syntax error -- `vstrh.32 q4,r2'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r4'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r4'
++[^:]*:22: Error: syntax error -- `vstrh.32 q4,r4'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r7'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r7'
++[^:]*:22: Error: syntax error -- `vstrh.32 q4,r7'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r8'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r8'
++[^:]*:22: Error: syntax error -- `vstrh.32 q4,r8'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r10'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r10'
++[^:]*:22: Error: syntax error -- `vstrh.32 q4,r10'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r12'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r12'
++[^:]*:22: Error: syntax error -- `vstrh.32 q4,r12'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r14'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r14'
++[^:]*:22: Error: syntax error -- `vstrh.32 q4,r14'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r0'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r0'
++[^:]*:22: Error: syntax error -- `vstrh.32 q7,r0'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r1'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r1'
++[^:]*:22: Error: syntax error -- `vstrh.32 q7,r1'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r2'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r2'
++[^:]*:22: Error: syntax error -- `vstrh.32 q7,r2'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r4'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r4'
++[^:]*:22: Error: syntax error -- `vstrh.32 q7,r4'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r7'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r7'
++[^:]*:22: Error: syntax error -- `vstrh.32 q7,r7'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r8'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r8'
++[^:]*:22: Error: syntax error -- `vstrh.32 q7,r8'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r10'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r10'
++[^:]*:22: Error: syntax error -- `vstrh.32 q7,r10'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r12'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r12'
++[^:]*:22: Error: syntax error -- `vstrh.32 q7,r12'
++[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r14'
++[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r14'
++[^:]*:22: Error: syntax error -- `vstrh.32 q7,r14'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r0'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r0'
++[^:]*:30: Error: syntax error -- `vstrw.32 q0,r0'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r1'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r1'
++[^:]*:30: Error: syntax error -- `vstrw.32 q0,r1'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r2'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r2'
++[^:]*:30: Error: syntax error -- `vstrw.32 q0,r2'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r4'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r4'
++[^:]*:30: Error: syntax error -- `vstrw.32 q0,r4'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r7'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r7'
++[^:]*:30: Error: syntax error -- `vstrw.32 q0,r7'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r8'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r8'
++[^:]*:30: Error: syntax error -- `vstrw.32 q0,r8'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r10'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r10'
++[^:]*:30: Error: syntax error -- `vstrw.32 q0,r10'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r12'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r12'
++[^:]*:30: Error: syntax error -- `vstrw.32 q0,r12'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r14'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r14'
++[^:]*:30: Error: syntax error -- `vstrw.32 q0,r14'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r0'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r0'
++[^:]*:30: Error: syntax error -- `vstrw.32 q1,r0'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r1'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r1'
++[^:]*:30: Error: syntax error -- `vstrw.32 q1,r1'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r2'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r2'
++[^:]*:30: Error: syntax error -- `vstrw.32 q1,r2'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r4'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r4'
++[^:]*:30: Error: syntax error -- `vstrw.32 q1,r4'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r7'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r7'
++[^:]*:30: Error: syntax error -- `vstrw.32 q1,r7'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r8'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r8'
++[^:]*:30: Error: syntax error -- `vstrw.32 q1,r8'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r10'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r10'
++[^:]*:30: Error: syntax error -- `vstrw.32 q1,r10'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r12'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r12'
++[^:]*:30: Error: syntax error -- `vstrw.32 q1,r12'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r14'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r14'
++[^:]*:30: Error: syntax error -- `vstrw.32 q1,r14'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r0'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r0'
++[^:]*:30: Error: syntax error -- `vstrw.32 q2,r0'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r1'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r1'
++[^:]*:30: Error: syntax error -- `vstrw.32 q2,r1'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r2'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r2'
++[^:]*:30: Error: syntax error -- `vstrw.32 q2,r2'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r4'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r4'
++[^:]*:30: Error: syntax error -- `vstrw.32 q2,r4'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r7'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r7'
++[^:]*:30: Error: syntax error -- `vstrw.32 q2,r7'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r8'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r8'
++[^:]*:30: Error: syntax error -- `vstrw.32 q2,r8'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r10'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r10'
++[^:]*:30: Error: syntax error -- `vstrw.32 q2,r10'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r12'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r12'
++[^:]*:30: Error: syntax error -- `vstrw.32 q2,r12'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r14'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r14'
++[^:]*:30: Error: syntax error -- `vstrw.32 q2,r14'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r0'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r0'
++[^:]*:30: Error: syntax error -- `vstrw.32 q4,r0'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r1'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r1'
++[^:]*:30: Error: syntax error -- `vstrw.32 q4,r1'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r2'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r2'
++[^:]*:30: Error: syntax error -- `vstrw.32 q4,r2'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r4'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r4'
++[^:]*:30: Error: syntax error -- `vstrw.32 q4,r4'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r7'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r7'
++[^:]*:30: Error: syntax error -- `vstrw.32 q4,r7'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r8'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r8'
++[^:]*:30: Error: syntax error -- `vstrw.32 q4,r8'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r10'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r10'
++[^:]*:30: Error: syntax error -- `vstrw.32 q4,r10'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r12'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r12'
++[^:]*:30: Error: syntax error -- `vstrw.32 q4,r12'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r14'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r14'
++[^:]*:30: Error: syntax error -- `vstrw.32 q4,r14'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r0'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r0'
++[^:]*:30: Error: syntax error -- `vstrw.32 q7,r0'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r1'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r1'
++[^:]*:30: Error: syntax error -- `vstrw.32 q7,r1'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r2'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r2'
++[^:]*:30: Error: syntax error -- `vstrw.32 q7,r2'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r4'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r4'
++[^:]*:30: Error: syntax error -- `vstrw.32 q7,r4'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r7'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r7'
++[^:]*:30: Error: syntax error -- `vstrw.32 q7,r7'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r8'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r8'
++[^:]*:30: Error: syntax error -- `vstrw.32 q7,r8'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r10'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r10'
++[^:]*:30: Error: syntax error -- `vstrw.32 q7,r10'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r12'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r12'
++[^:]*:30: Error: syntax error -- `vstrw.32 q7,r12'
++[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r14'
++[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r14'
++[^:]*:30: Error: syntax error -- `vstrw.32 q7,r14'
+diff --git a/gas/testsuite/gas/arm/mve-vldr-vstr-bad.s b/gas/testsuite/gas/arm/mve-vldr-vstr-bad.s
+new file mode 100644
+index 00000000000..c72c1296d2f
+--- /dev/null
++++ b/gas/testsuite/gas/arm/mve-vldr-vstr-bad.s
+@@ -0,0 +1,30 @@
++.syntax unified
++.thumb
++
++.irp op1, 8, 16, 32
++.irp op2, q0, q1, q2, q4, q7
++.irp op3, r0, r1, r2, r4, r7, r8, r10, r12, r14
++vldrb.s\op1 \op2, \op3
++vldrb.u\op1 \op2, \op3
++vstrb.\op1 \op2, \op3
++.endr
++.endr
++.endr
++
++.irp op1, 16, 32
++.irp op2, q0, q1, q2, q4, q7
++.irp op3, r0, r1, r2, r4, r7, r8, r10, r12, r14
++vldrh.s\op1 \op2, \op3
++vldrh.u\op1 \op2, \op3
++vstrh.\op1 \op2, \op3
++.endr
++.endr
++.endr
++
++.irp op2, q0, q1, q2, q4, q7
++.irp op3, r0, r1, r2, r4, r7, r8, r10, r12, r14
++vldrw.s32 \op2, \op3
++vldrw.u32 \op2, \op3
++vstrw.32 \op2, \op3
++.endr
++.endr
+diff --git a/gas/testsuite/gas/arm/pr26858.d b/gas/testsuite/gas/arm/pr26858.d
+new file mode 100644
+index 00000000000..dbe4d7122ee
+--- /dev/null
++++ b/gas/testsuite/gas/arm/pr26858.d
+@@ -0,0 +1,8 @@
++# name: PR26858
++# objdump: -dr --prefix-addresses --show-raw-insn
++
++.*: +file format .*arm.*
++
++Disassembly of section .text:
++[^>]*> ee266a87       vmul.f32        s12, s13, s14
++[^>]*> ee000a81       vmla.f32        s0, s1, s2
+diff --git a/gas/testsuite/gas/arm/pr26858.s b/gas/testsuite/gas/arm/pr26858.s
+new file mode 100644
+index 00000000000..5a450e7bde7
+--- /dev/null
++++ b/gas/testsuite/gas/arm/pr26858.s
+@@ -0,0 +1,6 @@
++.syntax unified
++.arch armv8-r
++.arm
++.fpu fpv5-sp-d16
++vmul.f32 s12, s13, s14
++vmla.f32 s0, s1, s2
+diff --git a/gas/testsuite/gas/elf/dwarf-5-cu.d b/gas/testsuite/gas/elf/dwarf-5-cu.d
+index 839b4b7c77b..7db20a330b8 100644
+--- a/gas/testsuite/gas/elf/dwarf-5-cu.d
++++ b/gas/testsuite/gas/elf/dwarf-5-cu.d
+@@ -6,6 +6,7 @@
+   Compilation Unit @ offset 0x0:
+    Length:        0x.*
+    Version:       5
++   Unit Type:     DW_UT_compile \(1\)
+    Abbrev Offset: 0x0
+    Pointer Size:  .
+ #pass
+diff --git a/gas/testsuite/gas/i386/dwarf4-line-1.d b/gas/testsuite/gas/i386/dwarf4-line-1.d
+new file mode 100644
+index 00000000000..4f8321e9bfd
+--- /dev/null
++++ b/gas/testsuite/gas/i386/dwarf4-line-1.d
+@@ -0,0 +1,50 @@
++#as: -gdwarf-4
++#readelf: -wl
++#name: DWARF4 .debug_line 1
++
++Raw dump of debug contents of section \.z?debug_line:
++
++  Offset:                      0x0
++  Length:                      .*
++  DWARF Version:               4
++  Prologue Length:             .*
++  Minimum Instruction Length:  1
++  Maximum Ops per Instruction: 1
++  Initial value of 'is_stmt':  1
++  Line Base:                   -5
++  Line Range:                  14
++  Opcode Base:                 13
++
++ Opcodes:
++  Opcode 1 has 0 args
++  Opcode 2 has 1 arg
++  Opcode 3 has 1 arg
++  Opcode 4 has 1 arg
++  Opcode 5 has 1 arg
++  Opcode 6 has 0 args
++  Opcode 7 has 0 args
++  Opcode 8 has 0 args
++  Opcode 9 has 1 arg
++  Opcode 10 has 0 args
++  Opcode 11 has 0 args
++  Opcode 12 has 1 arg
++
++ The Directory Table \(offset 0x.*\):
++  1   .*/gas/testsuite/gas/i386
++
++ The File Name Table \(offset 0x.*\):
++  Entry       Dir     Time    Size    Name
++  1   0       0       0       foo.c
++  2   0       0       0       foo.h
++
++ Line Number Statements:
++  \[0x.*\]  Extended opcode 2: set Address to 0x0
++  \[0x.*\]  Advance Line by 81 to 82
++  \[0x.*\]  Copy
++  \[0x.*\]  Set File Name to entry 2 in the File Name Table
++  \[0x.*\]  Advance Line by -73 to 9
++  \[0x.*\]  Special opcode 19: advance Address by 1 to 0x1 and Line by 0 to 9
++  \[0x.*\]  Advance PC by 3 to 0x4
++  \[0x.*\]  Extended opcode 1: End of Sequence
++
++
+diff --git a/gas/testsuite/gas/i386/dwarf4-line-1.s b/gas/testsuite/gas/i386/dwarf4-line-1.s
+new file mode 100644
+index 00000000000..e558fdc0507
+--- /dev/null
++++ b/gas/testsuite/gas/i386/dwarf4-line-1.s
+@@ -0,0 +1,14 @@
++      .file   "foo.c"
++      .text
++bar:
++#APP
++# 82 "foo.h" 1
++      nop
++# 0 "" 2
++#NO_APP
++      ret
++foo:
++      .file 1 "foo.c"
++      nop
++      .file 2 "foo.h"
++      ret
+diff --git a/gas/testsuite/gas/i386/dwarf5-line-1.d b/gas/testsuite/gas/i386/dwarf5-line-1.d
+new file mode 100644
+index 00000000000..7d602d0594f
+--- /dev/null
++++ b/gas/testsuite/gas/i386/dwarf5-line-1.d
+@@ -0,0 +1,50 @@
++#as: -gdwarf-5
++#readelf: -wl
++#name: DWARF5 .debug_line 1
++
++Raw dump of debug contents of section \.z?debug_line:
++
++  Offset:                      0x0
++  Length:                      .*
++  DWARF Version:               5
++  Address size \(bytes\):        .*
++  Segment selector \(bytes\):    0
++  Prologue Length:             .*
++  Minimum Instruction Length:  1
++  Maximum Ops per Instruction: 1
++  Initial value of 'is_stmt':  1
++  Line Base:                   -5
++  Line Range:                  14
++  Opcode Base:                 13
++
++ Opcodes:
++  Opcode 1 has 0 args
++  Opcode 2 has 1 arg
++  Opcode 3 has 1 arg
++  Opcode 4 has 1 arg
++  Opcode 5 has 1 arg
++  Opcode 6 has 0 args
++  Opcode 7 has 0 args
++  Opcode 8 has 0 args
++  Opcode 9 has 1 arg
++  Opcode 10 has 0 args
++  Opcode 11 has 0 args
++  Opcode 12 has 1 arg
++
++ The Directory Table \(offset 0x.*, lines 2, columns 1\):
++  Entry       Name
++  0   \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386
++  1   \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386
++
++ The File Name Table \(offset 0x.*, lines 2, columns 3\):
++  Entry       Dir     MD5                             Name
++  0   0 0xbbd69fc03ce253b2dbaab2522dd519ae    \(indirect line string, offset: 0x.*\): core.c
++  1   0 0x00000000000000000000000000000000    \(indirect line string, offset: 0x.*\): types.h
++
++ Line Number Statements:
++  \[0x.*\]  Extended opcode 2: set Address to 0x0
++  \[0x.*\]  Special opcode 8: advance Address by 0 to 0x0 and Line by 3 to 4
++  \[0x.*\]  Advance PC by 1 to 0x1
++  \[0x.*\]  Extended opcode 1: End of Sequence
++
++
+diff --git a/gas/testsuite/gas/i386/dwarf5-line-1.s b/gas/testsuite/gas/i386/dwarf5-line-1.s
+new file mode 100644
+index 00000000000..6e343ad0d36
+--- /dev/null
++++ b/gas/testsuite/gas/i386/dwarf5-line-1.s
+@@ -0,0 +1,6 @@
++      .text
++      .global kretprobe_trampoline
++kretprobe_trampoline:
++      ret
++      .file   0 "core.c" md5 0xbbd69fc03ce253b2dbaab2522dd519ae
++      .file   1 "types.h"
+diff --git a/gas/testsuite/gas/i386/dwarf5-line-2.d b/gas/testsuite/gas/i386/dwarf5-line-2.d
+new file mode 100644
+index 00000000000..302a2d8fcc4
+--- /dev/null
++++ b/gas/testsuite/gas/i386/dwarf5-line-2.d
+@@ -0,0 +1,49 @@
++#as: -gdwarf-5
++#readelf: -wl
++#name: DWARF5 .debug_line 2
++
++Raw dump of debug contents of section \.z?debug_line:
++
++  Offset:                      0x0
++  Length:                      .*
++  DWARF Version:               5
++  Address size \(bytes\):        .*
++  Segment selector \(bytes\):    0
++  Prologue Length:             .*
++  Minimum Instruction Length:  1
++  Maximum Ops per Instruction: 1
++  Initial value of 'is_stmt':  1
++  Line Base:                   -5
++  Line Range:                  14
++  Opcode Base:                 13
++
++ Opcodes:
++  Opcode 1 has 0 args
++  Opcode 2 has 1 arg
++  Opcode 3 has 1 arg
++  Opcode 4 has 1 arg
++  Opcode 5 has 1 arg
++  Opcode 6 has 0 args
++  Opcode 7 has 0 args
++  Opcode 8 has 0 args
++  Opcode 9 has 1 arg
++  Opcode 10 has 0 args
++  Opcode 11 has 0 args
++  Opcode 12 has 1 arg
++
++ The Directory Table \(offset 0x.*, lines 2, columns 1\):
++  Entry       Name
++  0   \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386
++  1   \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386
++
++ The File Name Table \(offset 0x.*, lines 1, columns 3\):
++  Entry       Dir     MD5                             Name
++  0   0 0xbbd69fc03ce253b2dbaab2522dd519ae    \(indirect line string, offset: 0x.*\): core.c
++
++ Line Number Statements:
++  \[0x.*\]  Extended opcode 2: set Address to 0x0
++  \[0x.*\]  Special opcode 8: advance Address by 0 to 0x0 and Line by 3 to 4
++  \[0x.*\]  Advance PC by 1 to 0x1
++  \[0x.*\]  Extended opcode 1: End of Sequence
++
++
+diff --git a/gas/testsuite/gas/i386/dwarf5-line-2.s b/gas/testsuite/gas/i386/dwarf5-line-2.s
+new file mode 100644
+index 00000000000..4af7d7061c9
+--- /dev/null
++++ b/gas/testsuite/gas/i386/dwarf5-line-2.s
+@@ -0,0 +1,5 @@
++      .text
++      .global kretprobe_trampoline
++kretprobe_trampoline:
++      ret
++      .file   0 "core.c" md5 0xbbd69fc03ce253b2dbaab2522dd519ae
+diff --git a/gas/testsuite/gas/i386/dwarf5-line-3.d b/gas/testsuite/gas/i386/dwarf5-line-3.d
+new file mode 100644
+index 00000000000..6f4ebf04718
+--- /dev/null
++++ b/gas/testsuite/gas/i386/dwarf5-line-3.d
+@@ -0,0 +1,49 @@
++#as: -g -gdwarf-5
++#readelf: -wl
++#name: DWARF5 .debug_line 2
++
++Raw dump of debug contents of section \.z?debug_line:
++
++  Offset:                      0x0
++  Length:                      .*
++  DWARF Version:               5
++  Address size \(bytes\):        .*
++  Segment selector \(bytes\):    0
++  Prologue Length:             .*
++  Minimum Instruction Length:  1
++  Maximum Ops per Instruction: 1
++  Initial value of 'is_stmt':  1
++  Line Base:                   -5
++  Line Range:                  14
++  Opcode Base:                 13
++
++ Opcodes:
++  Opcode 1 has 0 args
++  Opcode 2 has 1 arg
++  Opcode 3 has 1 arg
++  Opcode 4 has 1 arg
++  Opcode 5 has 1 arg
++  Opcode 6 has 0 args
++  Opcode 7 has 0 args
++  Opcode 8 has 0 args
++  Opcode 9 has 1 arg
++  Opcode 10 has 0 args
++  Opcode 11 has 0 args
++  Opcode 12 has 1 arg
++
++ The Directory Table \(offset 0x.*, lines 1, columns 1\):
++  Entry       Name
++  0   \(indirect line string, offset: 0x.*\): .*
++
++ The File Name Table \(offset 0x.*, lines 2, columns 2\):
++  Entry       Dir     Name
++  0   0       \(indirect line string, offset: 0x.*\): dwarf5-line-2.S
++  1   0       \(indirect line string, offset: 0x.*\): dwarf5-line-2.S
++
++ Line Number Statements:
++  \[0x.*\]  Extended opcode 2: set Address to 0x0
++  \[0x.*\]  Special opcode 7: advance Address by 0 to 0x0 and Line by 2 to 3
++  \[0x.*\]  Advance PC by 1 to 0x1
++  \[0x.*\]  Extended opcode 1: End of Sequence
++
++
+diff --git a/gas/testsuite/gas/i386/dwarf5-line-3.s b/gas/testsuite/gas/i386/dwarf5-line-3.s
+new file mode 100644
+index 00000000000..52e259d1033
+--- /dev/null
++++ b/gas/testsuite/gas/i386/dwarf5-line-3.s
+@@ -0,0 +1,10 @@
++# 1 "foo.S"
++# 1 "<built-in>"
++# 1 "<command-line>"
++# 31 "<command-line>"
++# 1 "/usr/include/stdc-predef.h" 1 3 4
++# 32 "<command-line>" 2
++# 1 "dwarf5-line-2.S"
++ .text
++lbasename:
++ .nop
+diff --git a/gas/testsuite/gas/i386/enqcmd-16bit.d b/gas/testsuite/gas/i386/enqcmd-16bit.d
+new file mode 100644
+index 00000000000..04e8706d291
+--- /dev/null
++++ b/gas/testsuite/gas/i386/enqcmd-16bit.d
+@@ -0,0 +1,21 @@
++#as: -I${srcdir}/$subdir
++#objdump: -dw -Mi8086
++#name: i386 16-bit ENQCMD[S] insns
++
++.*: +file format .*
++
++Disassembly of section .text:
++
++0+ <_start>:
++ +[a-f0-9]+:  67 0f 38 f9 01          movdiri %eax,\(%ecx\)
++ +[a-f0-9]+:  67 66 0f 38 f8 01       movdir64b \(%ecx\),%eax
++ +[a-f0-9]+:  66 0f 38 f8 04          movdir64b \(%si\),%ax
++ +[a-f0-9]+:  66 0f 38 f8 0e 00 00    movdir64b 0x0,%cx
++ +[a-f0-9]+:  66 0f 38 f8 0e 34 12    movdir64b 0x1234,%cx
++ +[a-f0-9]+:  67 0f 38 f9 01          movdiri %eax,\(%ecx\)
++ +[a-f0-9]+:  67 0f 38 f9 01          movdiri %eax,\(%ecx\)
++ +[a-f0-9]+:  67 66 0f 38 f8 01       movdir64b \(%ecx\),%eax
++ +[a-f0-9]+:  66 0f 38 f8 04          movdir64b \(%si\),%ax
++ +[a-f0-9]+:  66 0f 38 f8 0e 00 00    movdir64b 0x0,%cx
++ +[a-f0-9]+:  66 0f 38 f8 0e 34 12    movdir64b 0x1234,%cx
++#pass
+diff --git a/gas/testsuite/gas/i386/enqcmd-16bit.s b/gas/testsuite/gas/i386/enqcmd-16bit.s
+new file mode 100644
+index 00000000000..1f21cec3634
+--- /dev/null
++++ b/gas/testsuite/gas/i386/enqcmd-16bit.s
+@@ -0,0 +1,4 @@
++# Check ENQCMD[S] 16-bit instructions
++
++      .code16
++.include "movdir.s"
+diff --git a/gas/testsuite/gas/i386/enqcmd-intel.d b/gas/testsuite/gas/i386/enqcmd-intel.d
+index b38c3ed6ee1..e1d30dacd70 100644
+--- a/gas/testsuite/gas/i386/enqcmd-intel.d
++++ b/gas/testsuite/gas/i386/enqcmd-intel.d
+@@ -8,13 +8,21 @@
+ Disassembly of section \.text:
+-00000000 <_start>:
+-[     ]*[a-f0-9]+:[   ]*f2 0f 38 f8 01[       ]*enqcmd eax,\[ecx\]
+-[     ]*[a-f0-9]+:[   ]*67 f2 0f 38 f8 04[    ]*enqcmd ax,\[si\]
+-[     ]*[a-f0-9]+:[   ]*f3 0f 38 f8 01[       ]*enqcmds eax,\[ecx\]
+-[     ]*[a-f0-9]+:[   ]*67 f3 0f 38 f8 04[    ]*enqcmds ax,\[si\]
+-[     ]*[a-f0-9]+:[   ]*f2 0f 38 f8 01[       ]*enqcmd eax,\[ecx\]
+-[     ]*[a-f0-9]+:[   ]*67 f2 0f 38 f8 04[    ]*enqcmd ax,\[si\]
+-[     ]*[a-f0-9]+:[   ]*f3 0f 38 f8 01[       ]*enqcmds eax,\[ecx\]
+-[     ]*[a-f0-9]+:[   ]*67 f3 0f 38 f8 04[    ]*enqcmds ax,\[si\]
++0+ <_start>:
++ +[a-f0-9]+:  f2 0f 38 f8 01          enqcmd eax,\[ecx\]
++ +[a-f0-9]+:  67 f2 0f 38 f8 04       enqcmd ax,\[si\]
++ +[a-f0-9]+:  f3 0f 38 f8 01          enqcmds eax,\[ecx\]
++ +[a-f0-9]+:  67 f3 0f 38 f8 04       enqcmds ax,\[si\]
++ +[a-f0-9]+:  67 f2 0f 38 f8 0e 00 00         enqcmd cx,ds:0x0
++ +[a-f0-9]+:  67 f2 0f 38 f8 0e 34 12         enqcmd cx,ds:0x1234
++ +[a-f0-9]+:  67 f3 0f 38 f8 0e 00 00         enqcmds cx,ds:0x0
++ +[a-f0-9]+:  67 f3 0f 38 f8 0e 34 12         enqcmds cx,ds:0x1234
++ +[a-f0-9]+:  f2 0f 38 f8 01          enqcmd eax,\[ecx\]
++ +[a-f0-9]+:  67 f2 0f 38 f8 04       enqcmd ax,\[si\]
++ +[a-f0-9]+:  f3 0f 38 f8 01          enqcmds eax,\[ecx\]
++ +[a-f0-9]+:  67 f3 0f 38 f8 04       enqcmds ax,\[si\]
++ +[a-f0-9]+:  67 f2 0f 38 f8 0e 00 00         enqcmd cx,ds:0x0
++ +[a-f0-9]+:  67 f2 0f 38 f8 0e 34 12         enqcmd cx,ds:0x1234
++ +[a-f0-9]+:  67 f3 0f 38 f8 0e 00 00         enqcmds cx,ds:0x0
++ +[a-f0-9]+:  67 f3 0f 38 f8 0e 34 12         enqcmds cx,ds:0x1234
+ #pass
+diff --git a/gas/testsuite/gas/i386/enqcmd.d b/gas/testsuite/gas/i386/enqcmd.d
+index c601185ba32..99b9c0a7299 100644
+--- a/gas/testsuite/gas/i386/enqcmd.d
++++ b/gas/testsuite/gas/i386/enqcmd.d
+@@ -8,13 +8,21 @@
+ Disassembly of section \.text:
+-00000000 <_start>:
+-[     ]*[a-f0-9]+:[   ]*f2 0f 38 f8 01[       ]*enqcmd \(%ecx\),%eax
+-[     ]*[a-f0-9]+:[   ]*67 f2 0f 38 f8 04[    ]*enqcmd \(%si\),%ax
+-[     ]*[a-f0-9]+:[   ]*f3 0f 38 f8 01[       ]*enqcmds \(%ecx\),%eax
+-[     ]*[a-f0-9]+:[   ]*67 f3 0f 38 f8 04[    ]*enqcmds \(%si\),%ax
+-[     ]*[a-f0-9]+:[   ]*f2 0f 38 f8 01[       ]*enqcmd \(%ecx\),%eax
+-[     ]*[a-f0-9]+:[   ]*67 f2 0f 38 f8 04[    ]*enqcmd \(%si\),%ax
+-[     ]*[a-f0-9]+:[   ]*f3 0f 38 f8 01[       ]*enqcmds \(%ecx\),%eax
+-[     ]*[a-f0-9]+:[   ]*67 f3 0f 38 f8 04[    ]*enqcmds \(%si\),%ax
++0+ <_start>:
++ +[a-f0-9]+:  f2 0f 38 f8 01          enqcmd \(%ecx\),%eax
++ +[a-f0-9]+:  67 f2 0f 38 f8 04       enqcmd \(%si\),%ax
++ +[a-f0-9]+:  f3 0f 38 f8 01          enqcmds \(%ecx\),%eax
++ +[a-f0-9]+:  67 f3 0f 38 f8 04       enqcmds \(%si\),%ax
++ +[a-f0-9]+:  67 f2 0f 38 f8 0e 00 00         enqcmd 0x0,%cx
++ +[a-f0-9]+:  67 f2 0f 38 f8 0e 34 12         enqcmd 0x1234,%cx
++ +[a-f0-9]+:  67 f3 0f 38 f8 0e 00 00         enqcmds 0x0,%cx
++ +[a-f0-9]+:  67 f3 0f 38 f8 0e 34 12         enqcmds 0x1234,%cx
++ +[a-f0-9]+:  f2 0f 38 f8 01          enqcmd \(%ecx\),%eax
++ +[a-f0-9]+:  67 f2 0f 38 f8 04       enqcmd \(%si\),%ax
++ +[a-f0-9]+:  f3 0f 38 f8 01          enqcmds \(%ecx\),%eax
++ +[a-f0-9]+:  67 f3 0f 38 f8 04       enqcmds \(%si\),%ax
++ +[a-f0-9]+:  67 f2 0f 38 f8 0e 00 00         enqcmd 0x0,%cx
++ +[a-f0-9]+:  67 f2 0f 38 f8 0e 34 12         enqcmd 0x1234,%cx
++ +[a-f0-9]+:  67 f3 0f 38 f8 0e 00 00         enqcmds 0x0,%cx
++ +[a-f0-9]+:  67 f3 0f 38 f8 0e 34 12         enqcmds 0x1234,%cx
+ #pass
+diff --git a/gas/testsuite/gas/i386/enqcmd.s b/gas/testsuite/gas/i386/enqcmd.s
+index 0a23b25a6ff..f7195fa7236 100644
+--- a/gas/testsuite/gas/i386/enqcmd.s
++++ b/gas/testsuite/gas/i386/enqcmd.s
+@@ -7,9 +7,17 @@ _start:
+       enqcmd (%si),%ax
+       enqcmds (%ecx),%eax
+       enqcmds (%si),%ax
++      enqcmd foo, %cx
++      enqcmd 0x1234, %cx
++      enqcmds foo, %cx
++      enqcmds 0x1234, %cx
+       .intel_syntax noprefix
+       enqcmd eax,[ecx]
+       enqcmd ax,[si]
+       enqcmds eax,[ecx]
+       enqcmds ax,[si]
++      enqcmd cx,ds:foo
++      enqcmd cx,ds:0x1234
++      enqcmds cx,ds:foo
++      enqcmds cx,ds:0x1234
+diff --git a/gas/testsuite/gas/i386/evex-no-scale-64.d b/gas/testsuite/gas/i386/evex-no-scale-64.d
+index 6c9f68faf23..33623656eef 100644
+--- a/gas/testsuite/gas/i386/evex-no-scale-64.d
++++ b/gas/testsuite/gas/i386/evex-no-scale-64.d
+@@ -10,5 +10,5 @@ Disassembly of section .text:
+  +[a-f0-9]+:  62 f1 7c 48 28 04 05 40 00 00 00        vmovaps 0x40\(,%rax,1\),%zmm0
+  +[a-f0-9]+:  62 f1 7c 48 28 04 25 40 00 00 00        vmovaps 0x40,%zmm0
+  +[a-f0-9]+:  67 62 f1 7c 48 28 04 05 40 00 00 00     vmovaps 0x40\(,%eax,1\),%zmm0
+- +[a-f0-9]+:  67 62 f1 7c 48 28 04 25 40 00 00 00     vmovaps 0x40,%zmm0
++ +[a-f0-9]+:  67 62 f1 7c 48 28 04 25 40 00 00 00     vmovaps 0x40\(,%eiz,1\),%zmm0
+  +[a-f0-9]+:  62 f1 7c 48 28 04 25 40 00 00 00        vmovaps 0x40,%zmm0
+diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp
+index 6563aae246c..3039c36a30a 100644
+--- a/gas/testsuite/gas/i386/i386.exp
++++ b/gas/testsuite/gas/i386/i386.exp
+@@ -475,9 +475,11 @@ if [expr ([istarget "i*86-*-*"] ||  [istarget "x86_64-*-*"]) && [gas_32_check]]
+     run_dump_test "cldemote-intel"
+     run_dump_test "movdir"
+     run_dump_test "movdir-intel"
++    run_dump_test "movdir-16bit"
+     run_list_test "movdir64b-reg"
+     run_dump_test "enqcmd"
+     run_dump_test "enqcmd-intel"
++    run_dump_test "enqcmd-16bit"
+     run_list_test "enqcmd-inval"
+     run_dump_test "serialize"
+     run_dump_test "tsxldtrk"
+@@ -594,6 +596,10 @@ if [expr ([istarget "i*86-*-*"] ||  [istarget "x86_64-*-*"]) && [gas_32_check]]
+       run_dump_test "dwarf2-line-2"
+       run_dump_test "dwarf2-line-3"
+       run_dump_test "dwarf2-line-4"
++      run_dump_test "dwarf4-line-1"
++      run_dump_test "dwarf5-line-1"
++      run_dump_test "dwarf5-line-2"
++      run_dump_test "dwarf5-line-3"
+       run_dump_test "dw2-compress-2"
+       run_dump_test "dw2-compressed-2"
+diff --git a/gas/testsuite/gas/i386/movdir-16bit.d b/gas/testsuite/gas/i386/movdir-16bit.d
+new file mode 100644
+index 00000000000..ac5d82507f1
+--- /dev/null
++++ b/gas/testsuite/gas/i386/movdir-16bit.d
+@@ -0,0 +1,21 @@
++#as: -I${srcdir}/$subdir
++#objdump: -dw -Mi8086
++#name: i386 16-bit MOVDIR[I,64B] insns
++
++.*: +file format .*
++
++Disassembly of section .text:
++
++0+ <_start>:
++ +[a-f0-9]+:  67 0f 38 f9 01          movdiri %eax,\(%ecx\)
++ +[a-f0-9]+:  67 66 0f 38 f8 01       movdir64b \(%ecx\),%eax
++ +[a-f0-9]+:  66 0f 38 f8 04          movdir64b \(%si\),%ax
++ +[a-f0-9]+:  66 0f 38 f8 0e 00 00    movdir64b 0x0,%cx
++ +[a-f0-9]+:  66 0f 38 f8 0e 34 12    movdir64b 0x1234,%cx
++ +[a-f0-9]+:  67 0f 38 f9 01          movdiri %eax,\(%ecx\)
++ +[a-f0-9]+:  67 0f 38 f9 01          movdiri %eax,\(%ecx\)
++ +[a-f0-9]+:  67 66 0f 38 f8 01       movdir64b \(%ecx\),%eax
++ +[a-f0-9]+:  66 0f 38 f8 04          movdir64b \(%si\),%ax
++ +[a-f0-9]+:  66 0f 38 f8 0e 00 00    movdir64b 0x0,%cx
++ +[a-f0-9]+:  66 0f 38 f8 0e 34 12    movdir64b 0x1234,%cx
++#pass
+diff --git a/gas/testsuite/gas/i386/movdir-16bit.s b/gas/testsuite/gas/i386/movdir-16bit.s
+new file mode 100644
+index 00000000000..27f5fda5a58
+--- /dev/null
++++ b/gas/testsuite/gas/i386/movdir-16bit.s
+@@ -0,0 +1,4 @@
++# Check MOVDIR[I,64B] 16-bit instructions
++
++      .code16
++.include "movdir.s"
+diff --git a/gas/testsuite/gas/i386/movdir-intel.d b/gas/testsuite/gas/i386/movdir-intel.d
+index 04f58a7892e..56f4fa929a7 100644
+--- a/gas/testsuite/gas/i386/movdir-intel.d
++++ b/gas/testsuite/gas/i386/movdir-intel.d
+@@ -8,19 +8,16 @@
+ Disassembly of section \.text:
+-00000000 <_start>:
+-[     ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri DWORD PTR \[ecx\],eax
+-[     ]*[a-f0-9]+:[   ]*66 0f 38 f8 01[       ]*movdir64b eax,\[ecx\]
+-[     ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 04[    ]*movdir64b ax,\[si\]
+-[     ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri DWORD PTR \[ecx\],eax
+-[     ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri DWORD PTR \[ecx\],eax
+-[     ]*[a-f0-9]+:[   ]*66 0f 38 f8 01[       ]*movdir64b eax,\[ecx\]
+-[     ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 04[    ]*movdir64b ax,\[si\]
+-[     ]*[a-f0-9]+:[   ]*67 0f 38 f9 01[       ]*movdiri DWORD PTR \[bx\+di\],eax
+-[     ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 01[    ]*movdir64b ax,\[bx\+di\]
+-[     ]*[a-f0-9]+:[   ]*66 0f 38 f8 04 67[    ]*movdir64b eax,\[edi\+eiz\*2\]
+-[     ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri DWORD PTR \[ecx\],eax
+-[     ]*[a-f0-9]+:[   ]*67 0f 38 f9 01[       ]*movdiri DWORD PTR \[bx\+di\],eax
+-[     ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 01[    ]*movdir64b ax,\[bx\+di\]
+-[     ]*[a-f0-9]+:[   ]*66 0f 38 f8 04 90[    ]*movdir64b eax,\[eax\+edx\*4\]
++0+ <_start>:
++ +[a-f0-9]+:  0f 38 f9 01             movdiri DWORD PTR \[ecx\],eax
++ +[a-f0-9]+:  66 0f 38 f8 01          movdir64b eax,\[ecx\]
++ +[a-f0-9]+:  67 66 0f 38 f8 04       movdir64b ax,\[si\]
++ +[a-f0-9]+:  67 66 0f 38 f8 0e 00 00         movdir64b cx,ds:0x0
++ +[a-f0-9]+:  67 66 0f 38 f8 0e 34 12         movdir64b cx,ds:0x1234
++ +[a-f0-9]+:  0f 38 f9 01             movdiri DWORD PTR \[ecx\],eax
++ +[a-f0-9]+:  0f 38 f9 01             movdiri DWORD PTR \[ecx\],eax
++ +[a-f0-9]+:  66 0f 38 f8 01          movdir64b eax,\[ecx\]
++ +[a-f0-9]+:  67 66 0f 38 f8 04       movdir64b ax,\[si\]
++ +[a-f0-9]+:  67 66 0f 38 f8 0e 00 00         movdir64b cx,ds:0x0
++ +[a-f0-9]+:  67 66 0f 38 f8 0e 34 12         movdir64b cx,ds:0x1234
+ #pass
+diff --git a/gas/testsuite/gas/i386/movdir.d b/gas/testsuite/gas/i386/movdir.d
+index 192dad9920e..a8f324bddec 100644
+--- a/gas/testsuite/gas/i386/movdir.d
++++ b/gas/testsuite/gas/i386/movdir.d
+@@ -8,19 +8,16 @@
+ Disassembly of section \.text:
+-00000000 <_start>:
+-[     ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri %eax,\(%ecx\)
+-[     ]*[a-f0-9]+:[   ]*66 0f 38 f8 01[       ]*movdir64b \(%ecx\),%eax
+-[     ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 04[    ]*movdir64b \(%si\),%ax
+-[     ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri %eax,\(%ecx\)
+-[     ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri %eax,\(%ecx\)
+-[     ]*[a-f0-9]+:[   ]*66 0f 38 f8 01[       ]*movdir64b \(%ecx\),%eax
+-[     ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 04[    ]*movdir64b \(%si\),%ax
+-[     ]*[a-f0-9]+:[   ]*67 0f 38 f9 01[       ]*movdiri %eax,\(%bx,%di\)
+-[     ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 01[    ]*movdir64b \(%bx,%di\),%ax
+-[     ]*[a-f0-9]+:[   ]*66 0f 38 f8 04 67[    ]*movdir64b \(%edi,%eiz,2\),%eax
+-[     ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri %eax,\(%ecx\)
+-[     ]*[a-f0-9]+:[   ]*67 0f 38 f9 01[       ]*movdiri %eax,\(%bx,%di\)
+-[     ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 01[    ]*movdir64b \(%bx,%di\),%ax
+-[     ]*[a-f0-9]+:[   ]*66 0f 38 f8 04 90[    ]*movdir64b \(%eax,%edx,4\),%eax
++0+ <_start>:
++ +[a-f0-9]+:  0f 38 f9 01             movdiri %eax,\(%ecx\)
++ +[a-f0-9]+:  66 0f 38 f8 01          movdir64b \(%ecx\),%eax
++ +[a-f0-9]+:  67 66 0f 38 f8 04       movdir64b \(%si\),%ax
++ +[a-f0-9]+:  67 66 0f 38 f8 0e 00 00         movdir64b 0x0,%cx
++ +[a-f0-9]+:  67 66 0f 38 f8 0e 34 12         movdir64b 0x1234,%cx
++ +[a-f0-9]+:  0f 38 f9 01             movdiri %eax,\(%ecx\)
++ +[a-f0-9]+:  0f 38 f9 01             movdiri %eax,\(%ecx\)
++ +[a-f0-9]+:  66 0f 38 f8 01          movdir64b \(%ecx\),%eax
++ +[a-f0-9]+:  67 66 0f 38 f8 04       movdir64b \(%si\),%ax
++ +[a-f0-9]+:  67 66 0f 38 f8 0e 00 00         movdir64b 0x0,%cx
++ +[a-f0-9]+:  67 66 0f 38 f8 0e 34 12         movdir64b 0x1234,%cx
+ #pass
+diff --git a/gas/testsuite/gas/i386/movdir.s b/gas/testsuite/gas/i386/movdir.s
+index 29c381ca23c..00c57db141a 100644
+--- a/gas/testsuite/gas/i386/movdir.s
++++ b/gas/testsuite/gas/i386/movdir.s
+@@ -3,19 +3,16 @@
+       .allow_index_reg
+       .text
+ _start:
+-      .rept 2
+       movdiri %eax, (%ecx)
+       movdir64b (%ecx),%eax
+       movdir64b (%si),%ax
++      movdir64b foo, %cx
++      movdir64b 0x1234, %cx
+       .intel_syntax noprefix
+       movdiri [ecx], eax
+       movdiri dword ptr [ecx], eax
+       movdir64b eax,[ecx]
+       movdir64b ax,[si]
+-
+-      .att_syntax prefix
+-      .code16
+-      .endr
+-
+-      nop
++      movdir64b cx,ds:foo
++      movdir64b cx,ds:0x1234
+diff --git a/gas/testsuite/gas/i386/x86-64-addr32-intel.d b/gas/testsuite/gas/i386/x86-64-addr32-intel.d
+index 7a25d40162c..0988457b34c 100644
+--- a/gas/testsuite/gas/i386/x86-64-addr32-intel.d
++++ b/gas/testsuite/gas/i386/x86-64-addr32-intel.d
+@@ -11,15 +11,15 @@ Disassembly of section .text:
+ [     ]*[a-f0-9]+:    67 48 8d 80 00 00 00 00[        ]+lea[  ]+rax,\[eax\+0x0\].*
+ [     ]*[a-f0-9]+:    67 49 8d 80 00 00 00 00[        ]+lea[  ]+rax,\[r8d\+0x0\].*
+ [     ]*[a-f0-9]+:    67 48 8d 05 00 00 00 00[        ]+lea[  ]+rax,\[eip\+0x0\].*
+-[     ]*[a-f0-9]+:    67 48 8d 04 25 00 00 00 00      lea[ ]+rax,ds:0x0       .*
++[     ]*[a-f0-9]+:    67 48 8d 04 25 00 00 00 00      lea[ ]+rax,\[eiz\*1\+0x0\].*
+ [     ]*[a-f0-9]+:    67 a0 98 08 60 00       addr32 mov al,ds:0x600898
+ [     ]*[a-f0-9]+:    67 66 a1 98 08 60 00    addr32 mov ax,ds:0x600898
+ [     ]*[a-f0-9]+:    67 a1 98 08 60 00       addr32 mov eax,ds:0x600898
+ [     ]*[a-f0-9]+:    67 48 a1 98 08 60 00    addr32 mov rax,ds:0x600898
+ [     ]*[a-f0-9]+:    67 48 a1 98 08 80 00    addr32 mov rax,ds:0x800898
+-[     ]*[a-f0-9]+:    67 48 8b 1c 25 98 08 80 00      mov[ ]+rbx,QWORD PTR ds:0x800898
++[     ]*[a-f0-9]+:    67 48 8b 1c 25 98 08 80 00      mov[ ]+rbx,QWORD PTR \[eiz\*1\+0x800898\]
+ [     ]*[a-f0-9]+:    67 48 a1 ef cd ab 89    addr32 mov rax,ds:0x89abcdef
+-[     ]*[a-f0-9]+:    67 48 8b 1c 25 ef cd ab 89      mov[ ]+rbx,QWORD PTR ds:0x89abcdef
++[     ]*[a-f0-9]+:    67 48 8b 1c 25 ef cd ab 89      mov[ ]+rbx,QWORD PTR \[eiz\*1\+0x89abcdef\]
+ [     ]*[a-f0-9]+:    67 48 b8 ef cd ab 89 00 00 00 00        addr32 movabs rax,0x89abcdef
+ [     ]*[a-f0-9]+:    67 48 bb ef cd ab 89 00 00 00 00        addr32 movabs rbx,0x89abcdef
+ [     ]*[a-f0-9]+:    67 a2 98 08 60 00       addr32 mov ds:0x600898,al
+@@ -27,9 +27,9 @@ Disassembly of section .text:
+ [     ]*[a-f0-9]+:    67 a3 98 08 60 00       addr32 mov ds:0x600898,eax
+ [     ]*[a-f0-9]+:    67 48 a3 98 08 60 00    addr32 mov ds:0x600898,rax
+ [     ]*[a-f0-9]+:    67 48 a3 98 08 80 00    addr32 mov ds:0x800898,rax
+-[     ]*[a-f0-9]+:    67 48 89 1c 25 98 08 80 00      mov[ ]+QWORD PTR ds:0x800898,rbx
++[     ]*[a-f0-9]+:    67 48 89 1c 25 98 08 80 00      mov[ ]+QWORD PTR \[eiz\*1\+0x800898\],rbx
+ [     ]*[a-f0-9]+:    67 48 a3 ef cd ab 89    addr32 mov ds:0x89abcdef,rax
+-[     ]*[a-f0-9]+:    67 48 89 1c 25 ef cd ab 89      mov[ ]+QWORD PTR ds:0x89abcdef,rbx
+-[     ]*[a-f0-9]+:    67 89 04 25 11 22 33 ff         mov[ ]+DWORD PTR ds:0xff332211,eax
++[     ]*[a-f0-9]+:    67 48 89 1c 25 ef cd ab 89      mov[ ]+QWORD PTR \[eiz\*1\+0x89abcdef\],rbx
++[     ]*[a-f0-9]+:    67 89 04 25 11 22 33 ff         mov[ ]+DWORD PTR \[eiz\*1\+0xff332211\],eax
+ [     ]*[a-f0-9]+:    67 89 04 65 11 22 33 ff         mov[ ]+DWORD PTR \[eiz\*2\+0xff332211\],eax
+ #pass
+diff --git a/gas/testsuite/gas/i386/x86-64-addr32.d b/gas/testsuite/gas/i386/x86-64-addr32.d
+index c513f0dd8e1..d9481a7439e 100644
+--- a/gas/testsuite/gas/i386/x86-64-addr32.d
++++ b/gas/testsuite/gas/i386/x86-64-addr32.d
+@@ -10,15 +10,15 @@ Disassembly of section .text:
+ [     ]*[a-f0-9]+:    67 48 8d 80 00 00 00 00[        ]+lea[  ]+0x0\(%eax\),%rax.*
+ [     ]*[a-f0-9]+:    67 49 8d 80 00 00 00 00[        ]+lea[  ]+0x0\(%r8d\),%rax.*
+ [     ]*[a-f0-9]+:    67 48 8d 05 00 00 00 00[        ]+lea[  ]+0x0\(%eip\),%rax.*
+-[     ]*[a-f0-9]+:    67 48 8d 04 25 00 00 00 00[     ]+lea[ ]+0x0,%rax.*
++[     ]*[a-f0-9]+:    67 48 8d 04 25 00 00 00 00[     ]+lea[ ]+0x0\(,%eiz,1\),%rax.*
+ [     ]*[a-f0-9]+:    67 a0 98 08 60 00       addr32 mov 0x600898,%al
+ [     ]*[a-f0-9]+:    67 66 a1 98 08 60 00    addr32 mov 0x600898,%ax
+ [     ]*[a-f0-9]+:    67 a1 98 08 60 00       addr32 mov 0x600898,%eax
+ [     ]*[a-f0-9]+:    67 48 a1 98 08 60 00    addr32 mov 0x600898,%rax
+ [     ]*[a-f0-9]+:    67 48 a1 98 08 80 00    addr32 mov 0x800898,%rax
+-[     ]*[a-f0-9]+:    67 48 8b 1c 25 98 08 80 00      mov[ ]+0x800898,%rbx
++[     ]*[a-f0-9]+:    67 48 8b 1c 25 98 08 80 00      mov[ ]+0x800898\(,%eiz,1\),%rbx
+ [     ]*[a-f0-9]+:    67 48 a1 ef cd ab 89    addr32 mov 0x89abcdef,%rax
+-[     ]*[a-f0-9]+:    67 48 8b 1c 25 ef cd ab 89      mov[ ]+0x89abcdef,%rbx
++[     ]*[a-f0-9]+:    67 48 8b 1c 25 ef cd ab 89      mov[ ]+0x89abcdef\(,%eiz,1\),%rbx
+ [     ]*[a-f0-9]+:    67 48 b8 ef cd ab 89 00 00 00 00        addr32 movabs \$0x89abcdef,%rax
+ [     ]*[a-f0-9]+:    67 48 bb ef cd ab 89 00 00 00 00        addr32 movabs \$0x89abcdef,%rbx
+ [     ]*[a-f0-9]+:    67 a2 98 08 60 00       addr32 mov %al,0x600898
+@@ -26,9 +26,9 @@ Disassembly of section .text:
+ [     ]*[a-f0-9]+:    67 a3 98 08 60 00       addr32 mov %eax,0x600898
+ [     ]*[a-f0-9]+:    67 48 a3 98 08 60 00    addr32 mov %rax,0x600898
+ [     ]*[a-f0-9]+:    67 48 a3 98 08 80 00    addr32 mov %rax,0x800898
+-[     ]*[a-f0-9]+:    67 48 89 1c 25 98 08 80 00      mov[ ]+%rbx,0x800898
++[     ]*[a-f0-9]+:    67 48 89 1c 25 98 08 80 00      mov[ ]+%rbx,0x800898\(,%eiz,1\)
+ [     ]*[a-f0-9]+:    67 48 a3 ef cd ab 89    addr32 mov %rax,0x89abcdef
+-[     ]*[a-f0-9]+:    67 48 89 1c 25 ef cd ab 89      mov[ ]+%rbx,0x89abcdef
+-[     ]*[a-f0-9]+:    67 89 04 25 11 22 33 ff         mov[ ]+%eax,0xff332211
++[     ]*[a-f0-9]+:    67 48 89 1c 25 ef cd ab 89      mov[ ]+%rbx,0x89abcdef\(,%eiz,1\)
++[     ]*[a-f0-9]+:    67 89 04 25 11 22 33 ff         mov[ ]+%eax,0xff332211\(,%eiz,1\)
+ [     ]*[a-f0-9]+:    67 89 04 65 11 22 33 ff         mov[ ]+%eax,0xff332211\(,%eiz,2\)
+ #pass
+diff --git a/gas/testsuite/gas/i386/x86-64-enqcmd-intel.d b/gas/testsuite/gas/i386/x86-64-enqcmd-intel.d
+index e483d570b92..d8dc7facba3 100644
+--- a/gas/testsuite/gas/i386/x86-64-enqcmd-intel.d
++++ b/gas/testsuite/gas/i386/x86-64-enqcmd-intel.d
+@@ -9,12 +9,32 @@
+ Disassembly of section \.text:
+ 0+ <_start>:
+-[     ]*[a-f0-9]+:[   ]*f2 0f 38 f8 01[       ]*enqcmd rax,\[rcx\]
+-[     ]*[a-f0-9]+:[   ]*67 f2 0f 38 f8 01[    ]*enqcmd eax,\[ecx\]
+-[     ]*[a-f0-9]+:[   ]*f3 0f 38 f8 01[       ]*enqcmds rax,\[rcx\]
+-[     ]*[a-f0-9]+:[   ]*67 f3 0f 38 f8 01[    ]*enqcmds eax,\[ecx\]
+-[     ]*[a-f0-9]+:[   ]*f2 0f 38 f8 01[       ]*enqcmd rax,\[rcx\]
+-[     ]*[a-f0-9]+:[   ]*67 f2 0f 38 f8 01[    ]*enqcmd eax,\[ecx\]
+-[     ]*[a-f0-9]+:[   ]*f3 0f 38 f8 01[       ]*enqcmds rax,\[rcx\]
+-[     ]*[a-f0-9]+:[   ]*67 f3 0f 38 f8 01[    ]*enqcmds eax,\[ecx\]
++ +[a-f0-9]+:  f2 0f 38 f8 01          enqcmd rax,\[rcx\]
++ +[a-f0-9]+:  67 f2 0f 38 f8 01       enqcmd eax,\[ecx\]
++ +[a-f0-9]+:  f3 0f 38 f8 01          enqcmds rax,\[rcx\]
++ +[a-f0-9]+:  67 f3 0f 38 f8 01       enqcmds eax,\[ecx\]
++ +[a-f0-9]+:  f2 0f 38 f8 0d 00 00 00 00      enqcmd rcx,\[rip\+0x0\]        #.*
++ +[a-f0-9]+:  67 f2 0f 38 f8 0d 00 00 00 00   enqcmd ecx,\[eip\+0x0\]        #.*
++ +[a-f0-9]+:  67 f2 0f 38 f8 0d 00 00 00 00   enqcmd ecx,\[eip\+0x0\]        #.*
++ +[a-f0-9]+:  f3 0f 38 f8 0d 00 00 00 00      enqcmds rcx,\[rip\+0x0\]        #.*
++ +[a-f0-9]+:  67 f3 0f 38 f8 0d 00 00 00 00   enqcmds ecx,\[eip\+0x0\]        #.*
++ +[a-f0-9]+:  67 f3 0f 38 f8 0d 00 00 00 00   enqcmds ecx,\[eip\+0x0\]        #.*
++ +[a-f0-9]+:  67 f2 0f 38 f8 0c 25 00 00 00 00        enqcmd ecx,\[eiz\*1\+0x0\]
++ +[a-f0-9]+:  67 f2 0f 38 f8 0c 25 78 56 34 12        enqcmd ecx,\[eiz\*1\+0x12345678\]
++ +[a-f0-9]+:  67 f3 0f 38 f8 0c 25 00 00 00 00        enqcmds ecx,\[eiz\*1\+0x0\]
++ +[a-f0-9]+:  67 f3 0f 38 f8 0c 25 78 56 34 12        enqcmds ecx,\[eiz\*1\+0x12345678\]
++ +[a-f0-9]+:  f2 0f 38 f8 01          enqcmd rax,\[rcx\]
++ +[a-f0-9]+:  67 f2 0f 38 f8 01       enqcmd eax,\[ecx\]
++ +[a-f0-9]+:  f3 0f 38 f8 01          enqcmds rax,\[rcx\]
++ +[a-f0-9]+:  67 f3 0f 38 f8 01       enqcmds eax,\[ecx\]
++ +[a-f0-9]+:  f2 0f 38 f8 0d 00 00 00 00      enqcmd rcx,\[rip\+0x0\]        #.*
++ +[a-f0-9]+:  67 f2 0f 38 f8 0d 00 00 00 00   enqcmd ecx,\[eip\+0x0\]        #.*
++ +[a-f0-9]+:  67 f2 0f 38 f8 0d 00 00 00 00   enqcmd ecx,\[eip\+0x0\]        #.*
++ +[a-f0-9]+:  f3 0f 38 f8 0d 00 00 00 00      enqcmds rcx,\[rip\+0x0\]        #.*
++ +[a-f0-9]+:  67 f3 0f 38 f8 0d 00 00 00 00   enqcmds ecx,\[eip\+0x0\]        #.*
++ +[a-f0-9]+:  67 f3 0f 38 f8 0d 00 00 00 00   enqcmds ecx,\[eip\+0x0\]        #.*
++ +[a-f0-9]+:  67 f2 0f 38 f8 0c 25 00 00 00 00        enqcmd ecx,\[eiz\*1\+0x0\]
++ +[a-f0-9]+:  67 f2 0f 38 f8 0c 25 78 56 34 12        enqcmd ecx,\[eiz\*1\+0x12345678\]
++ +[a-f0-9]+:  67 f3 0f 38 f8 0c 25 00 00 00 00        enqcmds ecx,\[eiz\*1\+0x0\]
++ +[a-f0-9]+:  67 f3 0f 38 f8 0c 25 78 56 34 12        enqcmds ecx,\[eiz\*1\+0x12345678\]
+ #pass
+diff --git a/gas/testsuite/gas/i386/x86-64-enqcmd.d b/gas/testsuite/gas/i386/x86-64-enqcmd.d
+index 337febf320f..e6f627ff09a 100644
+--- a/gas/testsuite/gas/i386/x86-64-enqcmd.d
++++ b/gas/testsuite/gas/i386/x86-64-enqcmd.d
+@@ -9,12 +9,32 @@
+ Disassembly of section \.text:
+ 0+ <_start>:
+-[     ]*[a-f0-9]+:[   ]*f2 0f 38 f8 01[       ]*enqcmd \(%rcx\),%rax
+-[     ]*[a-f0-9]+:[   ]*67 f2 0f 38 f8 01[    ]*enqcmd \(%ecx\),%eax
+-[     ]*[a-f0-9]+:[   ]*f3 0f 38 f8 01[       ]*enqcmds \(%rcx\),%rax
+-[     ]*[a-f0-9]+:[   ]*67 f3 0f 38 f8 01[    ]*enqcmds \(%ecx\),%eax
+-[     ]*[a-f0-9]+:[   ]*f2 0f 38 f8 01[       ]*enqcmd \(%rcx\),%rax
+-[     ]*[a-f0-9]+:[   ]*67 f2 0f 38 f8 01[    ]*enqcmd \(%ecx\),%eax
+-[     ]*[a-f0-9]+:[   ]*f3 0f 38 f8 01[       ]*enqcmds \(%rcx\),%rax
+-[     ]*[a-f0-9]+:[   ]*67 f3 0f 38 f8 01[    ]*enqcmds \(%ecx\),%eax
++ +[a-f0-9]+:  f2 0f 38 f8 01          enqcmd \(%rcx\),%rax
++ +[a-f0-9]+:  67 f2 0f 38 f8 01       enqcmd \(%ecx\),%eax
++ +[a-f0-9]+:  f3 0f 38 f8 01          enqcmds \(%rcx\),%rax
++ +[a-f0-9]+:  67 f3 0f 38 f8 01       enqcmds \(%ecx\),%eax
++ +[a-f0-9]+:  f2 0f 38 f8 0d 00 00 00 00      enqcmd 0x0\(%rip\),%rcx        #.*
++ +[a-f0-9]+:  67 f2 0f 38 f8 0d 00 00 00 00   enqcmd 0x0\(%eip\),%ecx        #.*
++ +[a-f0-9]+:  67 f2 0f 38 f8 0d 00 00 00 00   enqcmd 0x0\(%eip\),%ecx        #.*
++ +[a-f0-9]+:  f3 0f 38 f8 0d 00 00 00 00      enqcmds 0x0\(%rip\),%rcx        #.*
++ +[a-f0-9]+:  67 f3 0f 38 f8 0d 00 00 00 00   enqcmds 0x0\(%eip\),%ecx        #.*
++ +[a-f0-9]+:  67 f3 0f 38 f8 0d 00 00 00 00   enqcmds 0x0\(%eip\),%ecx        #.*
++ +[a-f0-9]+:  67 f2 0f 38 f8 0c 25 00 00 00 00        enqcmd 0x0\(,%eiz,1\),%ecx
++ +[a-f0-9]+:  67 f2 0f 38 f8 0c 25 78 56 34 12        enqcmd 0x12345678\(,%eiz,1\),%ecx
++ +[a-f0-9]+:  67 f3 0f 38 f8 0c 25 00 00 00 00        enqcmds 0x0\(,%eiz,1\),%ecx
++ +[a-f0-9]+:  67 f3 0f 38 f8 0c 25 78 56 34 12        enqcmds 0x12345678\(,%eiz,1\),%ecx
++ +[a-f0-9]+:  f2 0f 38 f8 01          enqcmd \(%rcx\),%rax
++ +[a-f0-9]+:  67 f2 0f 38 f8 01       enqcmd \(%ecx\),%eax
++ +[a-f0-9]+:  f3 0f 38 f8 01          enqcmds \(%rcx\),%rax
++ +[a-f0-9]+:  67 f3 0f 38 f8 01       enqcmds \(%ecx\),%eax
++ +[a-f0-9]+:  f2 0f 38 f8 0d 00 00 00 00      enqcmd 0x0\(%rip\),%rcx        #.*
++ +[a-f0-9]+:  67 f2 0f 38 f8 0d 00 00 00 00   enqcmd 0x0\(%eip\),%ecx        #.*
++ +[a-f0-9]+:  67 f2 0f 38 f8 0d 00 00 00 00   enqcmd 0x0\(%eip\),%ecx        #.*
++ +[a-f0-9]+:  f3 0f 38 f8 0d 00 00 00 00      enqcmds 0x0\(%rip\),%rcx        #.*
++ +[a-f0-9]+:  67 f3 0f 38 f8 0d 00 00 00 00   enqcmds 0x0\(%eip\),%ecx        #.*
++ +[a-f0-9]+:  67 f3 0f 38 f8 0d 00 00 00 00   enqcmds 0x0\(%eip\),%ecx        #.*
++ +[a-f0-9]+:  67 f2 0f 38 f8 0c 25 00 00 00 00        enqcmd 0x0\(,%eiz,1\),%ecx
++ +[a-f0-9]+:  67 f2 0f 38 f8 0c 25 78 56 34 12        enqcmd 0x12345678\(,%eiz,1\),%ecx
++ +[a-f0-9]+:  67 f3 0f 38 f8 0c 25 00 00 00 00        enqcmds 0x0\(,%eiz,1\),%ecx
++ +[a-f0-9]+:  67 f3 0f 38 f8 0c 25 78 56 34 12        enqcmds 0x12345678\(,%eiz,1\),%ecx
+ #pass
+diff --git a/gas/testsuite/gas/i386/x86-64-enqcmd.s b/gas/testsuite/gas/i386/x86-64-enqcmd.s
+index f790b28fc20..a03a5ffc5f3 100644
+--- a/gas/testsuite/gas/i386/x86-64-enqcmd.s
++++ b/gas/testsuite/gas/i386/x86-64-enqcmd.s
+@@ -7,9 +7,29 @@ _start:
+       enqcmd (%ecx),%eax
+       enqcmds (%rcx),%rax
+       enqcmds (%ecx),%eax
++      enqcmd foo(%rip),%rcx
++      enqcmd foo(%rip),%ecx
++      enqcmd foo(%eip),%ecx
++      enqcmds foo(%rip),%rcx
++      enqcmds foo(%rip),%ecx
++      enqcmds foo(%eip),%ecx
++      enqcmd foo, %ecx
++      enqcmd 0x12345678, %ecx
++      enqcmds foo, %ecx
++      enqcmds 0x12345678, %ecx
+       .intel_syntax noprefix
+       enqcmd rax,[rcx]
+       enqcmd eax,[ecx]
+       enqcmds rax,[rcx]
+       enqcmds eax,[ecx]
++      enqcmd rcx,[rip+foo]
++      enqcmd ecx,[rip+foo]
++      enqcmd ecx,[eip+foo]
++      enqcmds rcx,[rip+foo]
++      enqcmds ecx,[rip+foo]
++      enqcmds ecx,[eip+foo]
++      enqcmd ecx,ds:foo
++      enqcmd ecx,ds:0x12345678
++      enqcmds ecx,ds:foo
++      enqcmds ecx,ds:0x12345678
+diff --git a/gas/testsuite/gas/i386/x86-64-movdir-intel.d b/gas/testsuite/gas/i386/x86-64-movdir-intel.d
+index 0f3a5abd610..a35bc6ca5d8 100644
+--- a/gas/testsuite/gas/i386/x86-64-movdir-intel.d
++++ b/gas/testsuite/gas/i386/x86-64-movdir-intel.d
+@@ -9,13 +9,23 @@
+ Disassembly of section \.text:
+ 0+ <_start>:
+-[     ]*[a-f0-9]+:[   ]*48 0f 38 f9 01[       ]*movdiri QWORD PTR \[rcx\],rax
+-[     ]*[a-f0-9]+:[   ]*66 0f 38 f8 01[       ]*movdir64b rax,\[rcx\]
+-[     ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 01[    ]*movdir64b eax,\[ecx]
+-[     ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri DWORD PTR \[rcx\],eax
+-[     ]*[a-f0-9]+:[   ]*48 0f 38 f9 01[       ]*movdiri QWORD PTR \[rcx\],rax
+-[     ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri DWORD PTR \[rcx\],eax
+-[     ]*[a-f0-9]+:[   ]*48 0f 38 f9 01[       ]*movdiri QWORD PTR \[rcx\],rax
+-[     ]*[a-f0-9]+:[   ]*66 0f 38 f8 01[       ]*movdir64b rax,\[rcx\]
+-[     ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 01[    ]*movdir64b eax,\[ecx\]
++ +[a-f0-9]+:  48 0f 38 f9 01          movdiri QWORD PTR \[rcx\],rax
++ +[a-f0-9]+:  66 0f 38 f8 01          movdir64b rax,\[rcx\]
++ +[a-f0-9]+:  67 66 0f 38 f8 01       movdir64b eax,\[ecx\]
++ +[a-f0-9]+:  66 0f 38 f8 0d 00 00 00 00      movdir64b rcx,\[rip\+0x0\]        #.*
++ +[a-f0-9]+:  67 66 0f 38 f8 0d 00 00 00 00   movdir64b ecx,\[eip\+0x0\]        #.*
++ +[a-f0-9]+:  67 66 0f 38 f8 0d 00 00 00 00   movdir64b ecx,\[eip\+0x0\]        #.*
++ +[a-f0-9]+:  67 66 0f 38 f8 0c 25 00 00 00 00        movdir64b ecx,\[eiz\*1\+0x0\]
++ +[a-f0-9]+:  67 66 0f 38 f8 0c 25 78 56 34 12        movdir64b ecx,\[eiz\*1\+0x12345678\]
++ +[a-f0-9]+:  0f 38 f9 01             movdiri DWORD PTR \[rcx\],eax
++ +[a-f0-9]+:  48 0f 38 f9 01          movdiri QWORD PTR \[rcx\],rax
++ +[a-f0-9]+:  0f 38 f9 01             movdiri DWORD PTR \[rcx\],eax
++ +[a-f0-9]+:  48 0f 38 f9 01          movdiri QWORD PTR \[rcx\],rax
++ +[a-f0-9]+:  66 0f 38 f8 01          movdir64b rax,\[rcx\]
++ +[a-f0-9]+:  67 66 0f 38 f8 01       movdir64b eax,\[ecx\]
++ +[a-f0-9]+:  66 0f 38 f8 0d 00 00 00 00      movdir64b rcx,\[rip\+0x0\]        #.*
++ +[a-f0-9]+:  67 66 0f 38 f8 0d 00 00 00 00   movdir64b ecx,\[eip\+0x0\]        #.*
++ +[a-f0-9]+:  67 66 0f 38 f8 0d 00 00 00 00   movdir64b ecx,\[eip\+0x0\]        #.*
++ +[a-f0-9]+:  67 66 0f 38 f8 0c 25 00 00 00 00        movdir64b ecx,\[eiz\*1\+0x0\]
++ +[a-f0-9]+:  67 66 0f 38 f8 0c 25 78 56 34 12        movdir64b ecx,\[eiz\*1\+0x12345678\]
+ #pass
+diff --git a/gas/testsuite/gas/i386/x86-64-movdir.d b/gas/testsuite/gas/i386/x86-64-movdir.d
+index 2deab8928e6..d65787177dc 100644
+--- a/gas/testsuite/gas/i386/x86-64-movdir.d
++++ b/gas/testsuite/gas/i386/x86-64-movdir.d
+@@ -9,13 +9,23 @@
+ Disassembly of section \.text:
+ 0+ <_start>:
+-[     ]*[a-f0-9]+:[   ]*48 0f 38 f9 01[       ]*movdiri %rax,\(%rcx\)
+-[     ]*[a-f0-9]+:[   ]*66 0f 38 f8 01[       ]*movdir64b \(%rcx\),%rax
+-[     ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 01[    ]*movdir64b \(%ecx\),%eax
+-[     ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri %eax,\(%rcx\)
+-[     ]*[a-f0-9]+:[   ]*48 0f 38 f9 01[       ]*movdiri %rax,\(%rcx\)
+-[     ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri %eax,\(%rcx\)
+-[     ]*[a-f0-9]+:[   ]*48 0f 38 f9 01[       ]*movdiri %rax,\(%rcx\)
+-[     ]*[a-f0-9]+:[   ]*66 0f 38 f8 01[       ]*movdir64b \(%rcx\),%rax
+-[     ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 01[    ]*movdir64b \(%ecx\),%eax
++ +[a-f0-9]+:  48 0f 38 f9 01          movdiri %rax,\(%rcx\)
++ +[a-f0-9]+:  66 0f 38 f8 01          movdir64b \(%rcx\),%rax
++ +[a-f0-9]+:  67 66 0f 38 f8 01       movdir64b \(%ecx\),%eax
++ +[a-f0-9]+:  66 0f 38 f8 0d 00 00 00 00      movdir64b 0x0\(%rip\),%rcx        #.*
++ +[a-f0-9]+:  67 66 0f 38 f8 0d 00 00 00 00   movdir64b 0x0\(%eip\),%ecx        #.*
++ +[a-f0-9]+:  67 66 0f 38 f8 0d 00 00 00 00   movdir64b 0x0\(%eip\),%ecx        #.*
++ +[a-f0-9]+:  67 66 0f 38 f8 0c 25 00 00 00 00        movdir64b 0x0\(,%eiz,1\),%ecx
++ +[a-f0-9]+:  67 66 0f 38 f8 0c 25 78 56 34 12        movdir64b 0x12345678\(,%eiz,1\),%ecx
++ +[a-f0-9]+:  0f 38 f9 01             movdiri %eax,\(%rcx\)
++ +[a-f0-9]+:  48 0f 38 f9 01          movdiri %rax,\(%rcx\)
++ +[a-f0-9]+:  0f 38 f9 01             movdiri %eax,\(%rcx\)
++ +[a-f0-9]+:  48 0f 38 f9 01          movdiri %rax,\(%rcx\)
++ +[a-f0-9]+:  66 0f 38 f8 01          movdir64b \(%rcx\),%rax
++ +[a-f0-9]+:  67 66 0f 38 f8 01       movdir64b \(%ecx\),%eax
++ +[a-f0-9]+:  66 0f 38 f8 0d 00 00 00 00      movdir64b 0x0\(%rip\),%rcx        #.*
++ +[a-f0-9]+:  67 66 0f 38 f8 0d 00 00 00 00   movdir64b 0x0\(%eip\),%ecx        #.*
++ +[a-f0-9]+:  67 66 0f 38 f8 0d 00 00 00 00   movdir64b 0x0\(%eip\),%ecx        #.*
++ +[a-f0-9]+:  67 66 0f 38 f8 0c 25 00 00 00 00        movdir64b 0x0\(,%eiz,1\),%ecx
++ +[a-f0-9]+:  67 66 0f 38 f8 0c 25 78 56 34 12        movdir64b 0x12345678\(,%eiz,1\),%ecx
+ #pass
+diff --git a/gas/testsuite/gas/i386/x86-64-movdir.s b/gas/testsuite/gas/i386/x86-64-movdir.s
+index 6f9032dc4b3..ad69bb13223 100644
+--- a/gas/testsuite/gas/i386/x86-64-movdir.s
++++ b/gas/testsuite/gas/i386/x86-64-movdir.s
+@@ -6,6 +6,11 @@ _start:
+       movdiri %rax, (%rcx)
+       movdir64b (%rcx),%rax
+       movdir64b (%ecx),%eax
++      movdir64b foo(%rip),%rcx
++      movdir64b foo(%rip),%ecx
++      movdir64b foo(%eip),%ecx
++      movdir64b foo, %ecx
++      movdir64b 0x12345678, %ecx
+       .intel_syntax noprefix
+       movdiri [rcx],eax
+@@ -14,3 +19,8 @@ _start:
+       movdiri qword ptr [rcx],rax
+       movdir64b rax,[rcx]
+       movdir64b eax,[ecx]
++      movdir64b rcx,[rip+foo]
++      movdir64b ecx,[rip+foo]
++      movdir64b ecx,[eip+foo]
++      movdir64b ecx,ds:foo
++      movdir64b ecx,ds:0x12345678
+diff --git a/gas/testsuite/gas/ppc/476.d b/gas/testsuite/gas/ppc/476.d
+index 7818b86b134..0b75d75ae2d 100644
+--- a/gas/testsuite/gas/ppc/476.d
++++ b/gas/testsuite/gas/ppc/476.d
+@@ -7,491 +7,485 @@
+ Disassembly of section \.text:
+ 0+00 <ppc476>:
+-   0: (7c 64 2a 14|14 2a 64 7c)       add     r3,r4,r5
+-   4: (7c 64 2a 15|15 2a 64 7c)       add\.    r3,r4,r5
+-   8: (7c 64 28 14|14 28 64 7c)       addc    r3,r4,r5
+-   c: (7c 64 28 15|15 28 64 7c)       addc\.   r3,r4,r5
+-  10: (7c 64 2c 14|14 2c 64 7c)       addco   r3,r4,r5
+-  14: (7c 64 2c 15|15 2c 64 7c)       addco\.  r3,r4,r5
+-  18: (7c 64 29 14|14 29 64 7c)       adde    r3,r4,r5
+-  1c: (7c 64 29 15|15 29 64 7c)       adde\.   r3,r4,r5
+-  20: (7c 64 2d 14|14 2d 64 7c)       addeo   r3,r4,r5
+-  24: (7c 64 2d 15|15 2d 64 7c)       addeo\.  r3,r4,r5
+-  28: (38 64 ff 80|80 ff 64 38)       addi    r3,r4,-128
+-  2c: (30 64 ff 80|80 ff 64 30)       addic   r3,r4,-128
+-  30: (34 64 ff 80|80 ff 64 34)       addic\.  r3,r4,-128
+-  34: (3c 64 ff 80|80 ff 64 3c)       addis   r3,r4,-128
+-  38: (7c 64 01 d4|d4 01 64 7c)       addme   r3,r4
+-  3c: (7c 64 01 d5|d5 01 64 7c)       addme\.  r3,r4
+-  40: (7c 64 05 d4|d4 05 64 7c)       addmeo  r3,r4
+-  44: (7c 64 05 d5|d5 05 64 7c)       addmeo\. r3,r4
+-  48: (7c 64 2e 14|14 2e 64 7c)       addo    r3,r4,r5
+-  4c: (7c 64 2e 15|15 2e 64 7c)       addo\.   r3,r4,r5
+-  50: (7c 64 01 94|94 01 64 7c)       addze   r3,r4
+-  54: (7c 64 01 95|95 01 64 7c)       addze\.  r3,r4
+-  58: (7c 64 05 94|94 05 64 7c)       addzeo  r3,r4
+-  5c: (7c 64 05 95|95 05 64 7c)       addzeo\. r3,r4
+-  60: (7c 83 28 38|38 28 83 7c)       and     r3,r4,r5
+-  64: (7c 83 28 39|39 28 83 7c)       and\.    r3,r4,r5
+-  68: (7d cd 78 78|78 78 cd 7d)       andc    r13,r14,r15
+-  6c: (7e 30 90 79|79 90 30 7e)       andc\.   r16,r17,r18
+-  70: (70 83 de ad|ad de 83 70)       andi\.   r3,r4,57005
+-  74: (74 83 de ad|ad de 83 74)       andis\.  r3,r4,57005
+-  78: (48 00 00 02|02 00 00 48)       ba      0 <ppc476>
+-  7c: (40 01 00 00|00 00 01 40)       bdnzf   gt,7c <ppc476\+0x7c>
+-  80: (40 85 00 02|02 00 85 40)       blea    cr1,0 <ppc476>
+-  84: (4d 80 04 20|20 04 80 4d)       bltctr
+-  88: (4c 8a 04 20|20 04 8a 4c)       bnectr  cr2
+-  8c: (4c 86 04 20|20 04 86 4c)       bnectr  cr1
+-  90: (4c 86 04 20|20 04 86 4c)       bnectr  cr1
+-  94: (4d 80 04 21|21 04 80 4d)       bltctrl
+-  98: (4c 8a 04 21|21 04 8a 4c)       bnectrl cr2
+-  9c: (4c 86 04 21|21 04 86 4c)       bnectrl cr1
+-  a0: (4c 86 04 21|21 04 86 4c)       bnectrl cr1
+-  a4: (40 43 00 01|01 00 43 40)       bdzfl   so,a4 <ppc476\+0xa4>
+-  a8: (4d 80 00 20|20 00 80 4d)       bltlr
+-  ac: (4c 8a 00 20|20 00 8a 4c)       bnelr   cr2
+-  b0: (4c 86 00 20|20 00 86 4c)       bnelr   cr1
+-  b4: (4c 86 00 20|20 00 86 4c)       bnelr   cr1
+-  b8: (4d 80 00 21|21 00 80 4d)       bltlrl
+-  bc: (4c 8a 00 21|21 00 8a 4c)       bnelrl  cr2
+-  c0: (4c 86 00 21|21 00 86 4c)       bnelrl  cr1
+-  c4: (4c 86 00 21|21 00 86 4c)       bnelrl  cr1
+-  c8: (48 00 00 00|00 00 00 48)       b       c8 <ppc476\+0xc8>
+-  cc: (48 00 00 01|01 00 00 48)       bl      cc <ppc476\+0xcc>
+-  d0: (54 83 00 36|36 00 83 54)       rlwinm  r3,r4,0,0,27
+-  d4: (7c 03 20 00|00 20 03 7c)       cmpw    r3,r4
+-  d8: (7f 83 20 00|00 20 83 7f)       cmpw    cr7,r3,r4
+-  dc: (7c 83 2b f8|f8 2b 83 7c)       cmpb    r3,r4,r5
+-  e0: (7c 83 2b f8|f8 2b 83 7c)       cmpb    r3,r4,r5
+-  e4: (2c 03 ff 59|59 ff 03 2c)       cmpwi   r3,-167
+-  e8: (2f 83 ff 59|59 ff 83 2f)       cmpwi   cr7,r3,-167
+-  ec: (7c 03 20 40|40 20 03 7c)       cmplw   r3,r4
+-  f0: (7f 83 20 40|40 20 83 7f)       cmplw   cr7,r3,r4
+-  f4: (28 03 00 a7|a7 00 03 28)       cmplwi  r3,167
+-  f8: (2b 83 00 a7|a7 00 83 2b)       cmplwi  cr7,r3,167
+-  fc: (7c 03 20 40|40 20 03 7c)       cmplw   r3,r4
+- 100: (28 03 00 a7|a7 00 03 28)       cmplwi  r3,167
+- 104: (7c 03 20 00|00 20 03 7c)       cmpw    r3,r4
+- 108: (2c 03 ff 59|59 ff 03 2c)       cmpwi   r3,-167
+- 10c: (7d 6a 00 34|34 00 6a 7d)       cntlzw  r10,r11
+- 110: (7d 6a 00 35|35 00 6a 7d)       cntlzw\. r10,r11
+- 114: (4c 85 32 02|02 32 85 4c)       crand   4\*cr1\+lt,4\*cr1\+gt,4\*cr1\+eq
+- 118: (4c 64 29 02|02 29 64 4c)       crandc  so,4\*cr1\+lt,4\*cr1\+gt
+- 11c: (4c e0 0a 42|42 0a e0 4c)       creqv   4\*cr1\+so,lt,gt
+- 120: (4c 22 19 c2|c2 19 22 4c)       crnand  gt,eq,so
+- 124: (4c 01 10 42|42 10 01 4c)       crnor   lt,gt,eq
+- 128: (4c a6 3b 82|82 3b a6 4c)       cror    4\*cr1\+gt,4\*cr1\+eq,4\*cr1\+so
+- 12c: (4c 43 23 42|42 23 43 4c)       crorc   eq,so,4\*cr1\+lt
+- 130: (4c c7 01 82|82 01 c7 4c)       crxor   4\*cr1\+eq,4\*cr1\+so,lt
+- 134: (7c 09 55 ec|ec 55 09 7c)       dcba    r9,r10
+- 138: (7c 06 38 ac|ac 38 06 7c)       dcbf    r6,r7
+- 13c: (7c 06 38 ac|ac 38 06 7c)       dcbf    r6,r7
+- 140: (7c 06 3b ac|ac 3b 06 7c)       dcbi    r6,r7
+- 144: (7c 85 33 0c|0c 33 85 7c)       dcblc   4,r5,r6
+- 148: (7c 06 38 6c|6c 38 06 7c)       dcbst   r6,r7
+- 14c: (7c 05 32 2c|2c 32 05 7c)       dcbt    r5,r6
+- 150: (7c 05 32 2c|2c 32 05 7c)       dcbt    r5,r6
+- 154: (7d 05 32 2c|2c 32 05 7d)       dcbt    8,r5,r6
+- 158: (7c e8 49 4c|4c 49 e8 7c)       dcbtls  7,r8,r9
+- 15c: (7c 06 39 ec|ec 39 06 7c)       dcbtst  r6,r7
+- 160: (7c 06 39 ec|ec 39 06 7c)       dcbtst  r6,r7
+- 164: (7d 26 39 ec|ec 39 26 7d)       dcbtst  9,r6,r7
+- 168: (7d 4b 61 0c|0c 61 4b 7d)       dcbtstls 10,r11,r12
+- 16c: (7c 01 17 ec|ec 17 01 7c)       dcbz    r1,r2
+- 170: (7c 05 37 ec|ec 37 05 7c)       dcbz    r5,r6
+- 174: (7c 00 03 8c|8c 03 00 7c)       dccci
+- 178: (7c 00 03 8c|8c 03 00 7c)       dccci
+- 17c: (7c 00 03 8c|8c 03 00 7c)       dccci
+- 180: (7c 20 03 8c|8c 03 20 7c)       dci     1
+- 184: (7d 4b 63 d6|d6 63 4b 7d)       divw    r10,r11,r12
+- 188: (7d 6c 6b d7|d7 6b 6c 7d)       divw\.   r11,r12,r13
+- 18c: (7d 4b 67 d6|d6 67 4b 7d)       divwo   r10,r11,r12
+- 190: (7d 6c 6f d7|d7 6f 6c 7d)       divwo\.  r11,r12,r13
+- 194: (7d 4b 63 96|96 63 4b 7d)       divwu   r10,r11,r12
+- 198: (7d 6c 6b 97|97 6b 6c 7d)       divwu\.  r11,r12,r13
+- 19c: (7d 4b 67 96|96 67 4b 7d)       divwuo  r10,r11,r12
+- 1a0: (7d 6c 6f 97|97 6f 6c 7d)       divwuo\. r11,r12,r13
+- 1a4: (7c 83 28 9c|9c 28 83 7c)       dlmzb   r3,r4,r5
+- 1a8: (7c 83 28 9d|9d 28 83 7c)       dlmzb\.  r3,r4,r5
+- 1ac: (7d 6a 62 38|38 62 6a 7d)       eqv     r10,r11,r12
+- 1b0: (7d 6a 62 39|39 62 6a 7d)       eqv\.    r10,r11,r12
+- 1b4: (54 83 20 26|26 20 83 54)       rlwinm  r3,r4,4,0,19
+- 1b8: (7c 83 07 74|74 07 83 7c)       extsb   r3,r4
+- 1bc: (7c 83 07 75|75 07 83 7c)       extsb\.  r3,r4
+- 1c0: (7c 83 07 34|34 07 83 7c)       extsh   r3,r4
+- 1c4: (7c 83 07 35|35 07 83 7c)       extsh\.  r3,r4
+- 1c8: (fe a0 fa 10|10 fa a0 fe)       fabs    f21,f31
+- 1cc: (fe a0 fa 11|11 fa a0 fe)       fabs\.   f21,f31
+- 1d0: (fd 4b 60 2a|2a 60 4b fd)       fadd    f10,f11,f12
+- 1d4: (fd 4b 60 2b|2b 60 4b fd)       fadd\.   f10,f11,f12
+- 1d8: (ed 4b 60 2a|2a 60 4b ed)       fadds   f10,f11,f12
+- 1dc: (ed 4b 60 2b|2b 60 4b ed)       fadds\.  f10,f11,f12
+- 1e0: (fd 40 5e 9c|9c 5e 40 fd)       fcfid   f10,f11
+- 1e4: (fd 40 5e 9d|9d 5e 40 fd)       fcfid\.  f10,f11
+- 1e8: (fd 8a 58 40|40 58 8a fd)       fcmpo   cr3,f10,f11
+- 1ec: (fd 84 28 00|00 28 84 fd)       fcmpu   cr3,f4,f5
+- 1f0: (fd 4b 60 10|10 60 4b fd)       fcpsgn  f10,f11,f12
+- 1f4: (fd 4b 60 11|11 60 4b fd)       fcpsgn\. f10,f11,f12
+- 1f8: (fd 40 5e 5c|5c 5e 40 fd)       fctid   f10,f11
+- 1fc: (fd 40 5e 5d|5d 5e 40 fd)       fctid\.  f10,f11
+- 200: (fd 40 5e 5e|5e 5e 40 fd)       fctidz  f10,f11
+- 204: (fd 40 5e 5f|5f 5e 40 fd)       fctidz\. f10,f11
+- 208: (fd 40 58 1c|1c 58 40 fd)       fctiw   f10,f11
+- 20c: (fd 40 58 1d|1d 58 40 fd)       fctiw\.  f10,f11
+- 210: (fd 40 58 1e|1e 58 40 fd)       fctiwz  f10,f11
+- 214: (fd 40 58 1f|1f 58 40 fd)       fctiwz\. f10,f11
+- 218: (fd 4b 60 24|24 60 4b fd)       fdiv    f10,f11,f12
+- 21c: (fd 4b 60 25|25 60 4b fd)       fdiv\.   f10,f11,f12
+- 220: (ed 4b 60 24|24 60 4b ed)       fdivs   f10,f11,f12
+- 224: (ed 4b 60 25|25 60 4b ed)       fdivs\.  f10,f11,f12
+- 228: (fd 4b 6b 3a|3a 6b 4b fd)       fmadd   f10,f11,f12,f13
+- 22c: (fd 4b 6b 3b|3b 6b 4b fd)       fmadd\.  f10,f11,f12,f13
+- 230: (ed 4b 6b 3a|3a 6b 4b ed)       fmadds  f10,f11,f12,f13
+- 234: (ed 4b 6b 3b|3b 6b 4b ed)       fmadds\. f10,f11,f12,f13
+- 238: (fc 60 20 90|90 20 60 fc)       fmr     f3,f4
+- 23c: (fc 60 20 91|91 20 60 fc)       fmr\.    f3,f4
+- 240: (fd 4b 6b 38|38 6b 4b fd)       fmsub   f10,f11,f12,f13
+- 244: (fd 4b 6b 39|39 6b 4b fd)       fmsub\.  f10,f11,f12,f13
+- 248: (ed 4b 6b 38|38 6b 4b ed)       fmsubs  f10,f11,f12,f13
+- 24c: (ed 4b 6b 39|39 6b 4b ed)       fmsubs\. f10,f11,f12,f13
+- 250: (fd 4b 03 32|32 03 4b fd)       fmul    f10,f11,f12
+- 254: (fd 4b 03 33|33 03 4b fd)       fmul\.   f10,f11,f12
+- 258: (ed 4b 03 32|32 03 4b ed)       fmuls   f10,f11,f12
+- 25c: (ed 4b 03 33|33 03 4b ed)       fmuls\.  f10,f11,f12
+- 260: (fe 80 f1 10|10 f1 80 fe)       fnabs   f20,f30
+- 264: (fe 80 f1 11|11 f1 80 fe)       fnabs\.  f20,f30
+- 268: (fc 60 20 50|50 20 60 fc)       fneg    f3,f4
+- 26c: (fc 60 20 51|51 20 60 fc)       fneg\.   f3,f4
+- 270: (fd 4b 6b 3e|3e 6b 4b fd)       fnmadd  f10,f11,f12,f13
+- 274: (fd 4b 6b 3f|3f 6b 4b fd)       fnmadd\. f10,f11,f12,f13
+- 278: (ed 4b 6b 3e|3e 6b 4b ed)       fnmadds f10,f11,f12,f13
+- 27c: (ed 4b 6b 3f|3f 6b 4b ed)       fnmadds\. f10,f11,f12,f13
+- 280: (fd 4b 6b 3c|3c 6b 4b fd)       fnmsub  f10,f11,f12,f13
+- 284: (fd 4b 6b 3d|3d 6b 4b fd)       fnmsub\. f10,f11,f12,f13
+- 288: (ed 4b 6b 3c|3c 6b 4b ed)       fnmsubs f10,f11,f12,f13
+- 28c: (ed 4b 6b 3d|3d 6b 4b ed)       fnmsubs\. f10,f11,f12,f13
+- 290: (fd c0 78 30|30 78 c0 fd)       fre     f14,f15
+- 294: (fd c0 78 31|31 78 c0 fd)       fre\.    f14,f15
+- 298: (ed c0 78 30|30 78 c0 ed)       fres    f14,f15
+- 29c: (ed c0 78 31|31 78 c0 ed)       fres\.   f14,f15
+- 2a0: (fd 40 5b d0|d0 5b 40 fd)       frim    f10,f11
+- 2a4: (fd 40 5b d1|d1 5b 40 fd)       frim\.   f10,f11
+- 2a8: (fd 40 5b 10|10 5b 40 fd)       frin    f10,f11
+- 2ac: (fd 40 5b 11|11 5b 40 fd)       frin\.   f10,f11
+- 2b0: (fd 40 5b 90|90 5b 40 fd)       frip    f10,f11
+- 2b4: (fd 40 5b 91|91 5b 40 fd)       frip\.   f10,f11
+- 2b8: (fd 40 5b 50|50 5b 40 fd)       friz    f10,f11
+- 2bc: (fd 40 5b 51|51 5b 40 fd)       friz\.   f10,f11
+- 2c0: (fc c0 38 18|18 38 c0 fc)       frsp    f6,f7
+- 2c4: (fd 00 48 19|19 48 00 fd)       frsp\.   f8,f9
+- 2c8: (fd c0 78 34|34 78 c0 fd)       frsqrte f14,f15
+- 2cc: (fd c0 78 35|35 78 c0 fd)       frsqrte\. f14,f15
+- 2d0: (ed c0 78 34|34 78 c0 ed)       frsqrtes f14,f15
+- 2d4: (ed c0 78 35|35 78 c0 ed)       frsqrtes\. f14,f15
+- 2d8: (fd 4b 6b 2e|2e 6b 4b fd)       fsel    f10,f11,f12,f13
+- 2dc: (fd 4b 6b 2f|2f 6b 4b fd)       fsel\.   f10,f11,f12,f13
+- 2e0: (fd 40 58 2c|2c 58 40 fd)       fsqrt   f10,f11
+- 2e4: (fd 40 58 2d|2d 58 40 fd)       fsqrt\.  f10,f11
+- 2e8: (ed 40 58 2c|2c 58 40 ed)       fsqrts  f10,f11
+- 2ec: (ed 40 58 2d|2d 58 40 ed)       fsqrts\. f10,f11
+- 2f0: (fd 4b 60 28|28 60 4b fd)       fsub    f10,f11,f12
+- 2f4: (fd 4b 60 29|29 60 4b fd)       fsub\.   f10,f11,f12
+- 2f8: (ed 4b 60 28|28 60 4b ed)       fsubs   f10,f11,f12
+- 2fc: (ed 4b 60 29|29 60 4b ed)       fsubs\.  f10,f11,f12
+- 300: (7c 03 27 ac|ac 27 03 7c)       icbi    r3,r4
+- 304: (7e 11 91 cc|cc 91 11 7e)       icblc   16,r17,r18
+- 308: (7c a8 48 2c|2c 48 a8 7c)       icbt    5,r8,r9
+- 30c: (7d ae 7b cc|cc 7b ae 7d)       icbtls  13,r14,r15
+- 310: (7c 00 07 8c|8c 07 00 7c)       iccci
+- 314: (7c 00 07 8c|8c 07 00 7c)       iccci
+- 318: (7c 00 07 8c|8c 07 00 7c)       iccci
+- 31c: (7c 20 07 8c|8c 07 20 7c)       ici     1
+- 320: (7c 03 27 cc|cc 27 03 7c)       icread  r3,r4
+- 324: (50 83 65 36|36 65 83 50)       rlwimi  r3,r4,12,20,27
+- 328: (7c 43 27 1e|1e 27 43 7c)       isel    r2,r3,r4,28
+- 32c: (4c 00 01 2c|2c 01 00 4c)       isync
+- 330: (89 21 00 00|00 00 21 89)       lbz     r9,0\(r1\)
+- 334: (8d 41 00 01|01 00 41 8d)       lbzu    r10,1\(r1\)
+- 338: (7e 95 b0 ee|ee b0 95 7e)       lbzux   r20,r21,r22
+- 33c: (7c 64 28 ae|ae 28 64 7c)       lbzx    r3,r4,r5
+- 340: (ca a1 00 08|08 00 a1 ca)       lfd     f21,8\(r1\)
+- 344: (ce c1 00 10|10 00 c1 ce)       lfdu    f22,16\(r1\)
+- 348: (7e 95 b4 ee|ee b4 95 7e)       lfdux   f20,r21,r22
+- 34c: (7d ae 7c ae|ae 7c ae 7d)       lfdx    f13,r14,r15
+- 350: (7d 43 26 ae|ae 26 43 7d)       lfiwax  f10,r3,r4
+- 354: (c2 61 00 00|00 00 61 c2)       lfs     f19,0\(r1\)
+- 358: (c6 81 00 04|04 00 81 c6)       lfsu    f20,4\(r1\)
+- 35c: (7d 4b 64 6e|6e 64 4b 7d)       lfsux   f10,r11,r12
+- 360: (7d 4b 64 2e|2e 64 4b 7d)       lfsx    f10,r11,r12
+- 364: (a9 e1 00 06|06 00 e1 a9)       lha     r15,6\(r1\)
+- 368: (ae 01 00 08|08 00 01 ae)       lhau    r16,8\(r1\)
+- 36c: (7d 2a 5a ee|ee 5a 2a 7d)       lhaux   r9,r10,r11
+- 370: (7d 2a 5a ae|ae 5a 2a 7d)       lhax    r9,r10,r11
+- 374: (7c 64 2e 2c|2c 2e 64 7c)       lhbrx   r3,r4,r5
+- 378: (a1 a1 00 00|00 00 a1 a1)       lhz     r13,0\(r1\)
+- 37c: (a5 c1 00 02|02 00 c1 a5)       lhzu    r14,2\(r1\)
+- 380: (7e 96 c2 6e|6e c2 96 7e)       lhzux   r20,r22,r24
+- 384: (7e f8 ca 2e|2e ca f8 7e)       lhzx    r23,r24,r25
+- 388: (b8 61 ff f0|f0 ff 61 b8)       lmw     r3,-16\(r1\)
+- 38c: (7c a4 84 aa|aa 84 a4 7c)       lswi    r5,r4,16
+- 390: (7c 64 2c 2a|2a 2c 64 7c)       lswx    r3,r4,r5
+- 394: (7c 64 28 28|28 28 64 7c)       lwarx   r3,r4,r5
+- 398: (7c 64 28 28|28 28 64 7c)       lwarx   r3,r4,r5
+- 39c: (7c 64 28 29|29 28 64 7c)       lwarx   r3,r4,r5,1
+- 3a0: (7c 64 2c 2c|2c 2c 64 7c)       lwbrx   r3,r4,r5
+- 3a4: (80 c7 00 00|00 00 c7 80)       lwz     r6,0\(r7\)
+- 3a8: (84 61 00 10|10 00 61 84)       lwzu    r3,16\(r1\)
+- 3ac: (7c 64 28 6e|6e 28 64 7c)       lwzux   r3,r4,r5
+- 3b0: (7c 64 28 2e|2e 28 64 7c)       lwzx    r3,r4,r5
+- 3b4: (10 64 29 58|58 29 64 10)       macchw  r3,r4,r5
+- 3b8: (10 64 29 59|59 29 64 10)       macchw\. r3,r4,r5
+- 3bc: (10 64 2d 58|58 2d 64 10)       macchwo r3,r4,r5
+- 3c0: (10 64 2d 59|59 2d 64 10)       macchwo\. r3,r4,r5
+- 3c4: (10 64 29 d8|d8 29 64 10)       macchws r3,r4,r5
+- 3c8: (10 64 29 d9|d9 29 64 10)       macchws\. r3,r4,r5
+- 3cc: (10 64 2d d8|d8 2d 64 10)       macchwso r3,r4,r5
+- 3d0: (10 64 2d d9|d9 2d 64 10)       macchwso\. r3,r4,r5
+- 3d4: (10 64 29 98|98 29 64 10)       macchwsu r3,r4,r5
+- 3d8: (10 64 29 99|99 29 64 10)       macchwsu\. r3,r4,r5
+- 3dc: (10 64 2d 98|98 2d 64 10)       macchwsuo r3,r4,r5
+- 3e0: (10 64 2d 99|99 2d 64 10)       macchwsuo\. r3,r4,r5
+- 3e4: (10 64 29 18|18 29 64 10)       macchwu r3,r4,r5
+- 3e8: (10 64 29 19|19 29 64 10)       macchwu\. r3,r4,r5
+- 3ec: (10 64 2d 18|18 2d 64 10)       macchwuo r3,r4,r5
+- 3f0: (10 64 2d 19|19 2d 64 10)       macchwuo\. r3,r4,r5
+- 3f4: (10 64 28 58|58 28 64 10)       machhw  r3,r4,r5
+- 3f8: (10 64 28 59|59 28 64 10)       machhw\. r3,r4,r5
+- 3fc: (10 64 2c 58|58 2c 64 10)       machhwo r3,r4,r5
+- 400: (10 64 2c 59|59 2c 64 10)       machhwo\. r3,r4,r5
+- 404: (10 64 28 d8|d8 28 64 10)       machhws r3,r4,r5
+- 408: (10 64 28 d9|d9 28 64 10)       machhws\. r3,r4,r5
+- 40c: (10 64 2c d8|d8 2c 64 10)       machhwso r3,r4,r5
+- 410: (10 64 2c d9|d9 2c 64 10)       machhwso\. r3,r4,r5
+- 414: (10 64 28 98|98 28 64 10)       machhwsu r3,r4,r5
+- 418: (10 64 28 99|99 28 64 10)       machhwsu\. r3,r4,r5
+- 41c: (10 64 2c 98|98 2c 64 10)       machhwsuo r3,r4,r5
+- 420: (10 64 2c 99|99 2c 64 10)       machhwsuo\. r3,r4,r5
+- 424: (10 64 28 18|18 28 64 10)       machhwu r3,r4,r5
+- 428: (10 64 28 19|19 28 64 10)       machhwu\. r3,r4,r5
+- 42c: (10 64 2c 18|18 2c 64 10)       machhwuo r3,r4,r5
+- 430: (10 64 2c 19|19 2c 64 10)       machhwuo\. r3,r4,r5
+- 434: (10 64 2b 58|58 2b 64 10)       maclhw  r3,r4,r5
+- 438: (10 64 2b 59|59 2b 64 10)       maclhw\. r3,r4,r5
+- 43c: (10 64 2f 58|58 2f 64 10)       maclhwo r3,r4,r5
+- 440: (10 64 2f 59|59 2f 64 10)       maclhwo\. r3,r4,r5
+- 444: (10 64 2b d8|d8 2b 64 10)       maclhws r3,r4,r5
+- 448: (10 64 2b d9|d9 2b 64 10)       maclhws\. r3,r4,r5
+- 44c: (10 64 2f d8|d8 2f 64 10)       maclhwso r3,r4,r5
+- 450: (10 64 2f d9|d9 2f 64 10)       maclhwso\. r3,r4,r5
+- 454: (10 64 2b 98|98 2b 64 10)       maclhwsu r3,r4,r5
+- 458: (10 64 2b 99|99 2b 64 10)       maclhwsu\. r3,r4,r5
+- 45c: (10 64 2f 98|98 2f 64 10)       maclhwsuo r3,r4,r5
+- 460: (10 64 2f 99|99 2f 64 10)       maclhwsuo\. r3,r4,r5
+- 464: (10 64 2b 18|18 2b 64 10)       maclhwu r3,r4,r5
+- 468: (10 64 2b 19|19 2b 64 10)       maclhwu\. r3,r4,r5
+- 46c: (10 64 2f 18|18 2f 64 10)       maclhwuo r3,r4,r5
+- 470: (10 64 2f 19|19 2f 64 10)       maclhwuo\. r3,r4,r5
+- 474: (7c 00 06 ac|ac 06 00 7c)       mbar
+- 478: (7c 00 06 ac|ac 06 00 7c)       mbar
+- 47c: (7c 20 06 ac|ac 06 20 7c)       mbar    1
+- 480: (4c 04 00 00|00 00 04 4c)       mcrf    cr0,cr1
+- 484: (fd 90 00 80|80 00 90 fd)       mcrfs   cr3,cr4
+- 488: (7d 80 04 00|00 04 80 7d)       mcrxr   cr3
+- 48c: (7c 60 00 26|26 00 60 7c)       mfcr    r3
+- 490: (7c 60 00 26|26 00 60 7c)       mfcr    r3
+- 494: (7c aa 3a 86|86 3a aa 7c)       mfdcr   r5,234
+- 498: (7c 64 02 46|46 02 64 7c)       mfdcrux r3,r4
+- 49c: (7c 85 02 06|06 02 85 7c)       mfdcrx  r4,r5
+- 4a0: (ff c0 04 8e|8e 04 c0 ff)       mffs    f30
+- 4a4: (ff e0 04 8f|8f 04 e0 ff)       mffs\.   f31
+- 4a8: (7e 60 00 a6|a6 00 60 7e)       mfmsr   r19
+- 4ac: (7c 78 00 26|26 00 78 7c)       mfocrf  r3,128
+- 4b0: (7c 60 22 a6|a6 22 60 7c)       mfspr   r3,128
+- 4b4: (7c 6c 42 a6|a6 42 6c 7c)       mftb    r3
+- 4b8: (7c 00 04 ac|ac 04 00 7c)       msync
+- 4bc: (7c 78 01 20|20 01 78 7c)       mtocrf  128,r3
+- 4c0: (7c 6f f1 20|20 f1 6f 7c)       mtcr    r3
+- 4c4: (7d 10 6b 86|86 6b 10 7d)       mtdcr   432,r8
+- 4c8: (7c 83 03 46|46 03 83 7c)       mtdcrux r3,r4
+- 4cc: (7c e6 03 06|06 03 e6 7c)       mtdcrx  r6,r7
+- 4d0: (fc 60 00 8c|8c 00 60 fc)       mtfsb0  3
+- 4d4: (fc 60 00 8d|8d 00 60 fc)       mtfsb0\. 3
+- 4d8: (fc 60 00 4c|4c 00 60 fc)       mtfsb1  3
+- 4dc: (fc 60 00 4d|4d 00 60 fc)       mtfsb1\. 3
+- 4e0: (fc 0c 55 8e|8e 55 0c fc)       mtfsf   6,f10
+- 4e4: (fc 0c 55 8e|8e 55 0c fc)       mtfsf   6,f10
+- 4e8: (fc 0d 55 8e|8e 55 0d fc)       mtfsf   6,f10,0,1
+- 4ec: (fe 0c 55 8e|8e 55 0c fe)       mtfsf   6,f10,1
+- 4f0: (fc 0c 5d 8f|8f 5d 0c fc)       mtfsf\.  6,f11
+- 4f4: (fc 0c 5d 8f|8f 5d 0c fc)       mtfsf\.  6,f11
+- 4f8: (fc 0d 5d 8f|8f 5d 0d fc)       mtfsf\.  6,f11,0,1
+- 4fc: (fe 0c 5d 8f|8f 5d 0c fe)       mtfsf\.  6,f11,1
+- 500: (ff 00 01 0c|0c 01 00 ff)       mtfsfi  6,0
+- 504: (ff 00 01 0c|0c 01 00 ff)       mtfsfi  6,0
+- 508: (ff 00 01 0c|0c 01 00 ff)       mtfsfi  6,0
+- 50c: (ff 01 01 0c|0c 01 01 ff)       mtfsfi  6,0,1
+- 510: (ff 00 f1 0d|0d f1 00 ff)       mtfsfi\. 6,15
+- 514: (ff 00 f1 0d|0d f1 00 ff)       mtfsfi\. 6,15
+- 518: (ff 00 f1 0d|0d f1 00 ff)       mtfsfi\. 6,15
+- 51c: (ff 01 f1 0d|0d f1 01 ff)       mtfsfi\. 6,15,1
+- 520: (7d 40 01 24|24 01 40 7d)       mtmsr   r10
+- 524: (7c 78 01 20|20 01 78 7c)       mtocrf  128,r3
+- 528: (7c 60 23 a6|a6 23 60 7c)       mtspr   128,r3
+- 52c: (10 64 29 50|50 29 64 10)       mulchw  r3,r4,r5
+- 530: (10 64 29 51|51 29 64 10)       mulchw\. r3,r4,r5
+- 534: (10 64 29 10|10 29 64 10)       mulchwu r3,r4,r5
+- 538: (10 64 29 11|11 29 64 10)       mulchwu\. r3,r4,r5
+- 53c: (10 64 28 50|50 28 64 10)       mulhhw  r3,r4,r5
+- 540: (10 64 28 51|51 28 64 10)       mulhhw\. r3,r4,r5
+- 544: (10 64 28 10|10 28 64 10)       mulhhwu r3,r4,r5
+- 548: (10 64 28 11|11 28 64 10)       mulhhwu\. r3,r4,r5
+- 54c: (7c 64 28 96|96 28 64 7c)       mulhw   r3,r4,r5
+- 550: (7c 64 28 97|97 28 64 7c)       mulhw\.  r3,r4,r5
+- 554: (7c 64 28 16|16 28 64 7c)       mulhwu  r3,r4,r5
+- 558: (7c 64 28 17|17 28 64 7c)       mulhwu\. r3,r4,r5
+- 55c: (10 64 2b 50|50 2b 64 10)       mullhw  r3,r4,r5
+- 560: (10 64 2b 51|51 2b 64 10)       mullhw\. r3,r4,r5
+- 564: (10 64 2b 10|10 2b 64 10)       mullhwu r3,r4,r5
+- 568: (10 64 2b 11|11 2b 64 10)       mullhwu\. r3,r4,r5
+- 56c: (1c 64 00 05|05 00 64 1c)       mulli   r3,r4,5
+- 570: (7c 64 29 d6|d6 29 64 7c)       mullw   r3,r4,r5
+- 574: (7c 64 29 d7|d7 29 64 7c)       mullw\.  r3,r4,r5
+- 578: (7c 64 2d d6|d6 2d 64 7c)       mullwo  r3,r4,r5
+- 57c: (7c 64 2d d7|d7 2d 64 7c)       mullwo\. r3,r4,r5
+- 580: (7f bc f3 b8|b8 f3 bc 7f)       nand    r28,r29,r30
+- 584: (7f bc f3 b9|b9 f3 bc 7f)       nand\.   r28,r29,r30
+- 588: (7c 64 00 d0|d0 00 64 7c)       neg     r3,r4
+- 58c: (7c 64 00 d1|d1 00 64 7c)       neg\.    r3,r4
+- 590: (7e 11 04 d0|d0 04 11 7e)       nego    r16,r17
+- 594: (7e 53 04 d1|d1 04 53 7e)       nego\.   r18,r19
+- 598: (10 64 29 5c|5c 29 64 10)       nmacchw r3,r4,r5
+- 59c: (10 64 29 5d|5d 29 64 10)       nmacchw\. r3,r4,r5
+- 5a0: (10 64 2d 5c|5c 2d 64 10)       nmacchwo r3,r4,r5
+- 5a4: (10 64 2d 5d|5d 2d 64 10)       nmacchwo\. r3,r4,r5
+- 5a8: (10 64 29 dc|dc 29 64 10)       nmacchws r3,r4,r5
+- 5ac: (10 64 29 dd|dd 29 64 10)       nmacchws\. r3,r4,r5
+- 5b0: (10 64 2d dc|dc 2d 64 10)       nmacchwso r3,r4,r5
+- 5b4: (10 64 2d dd|dd 2d 64 10)       nmacchwso\. r3,r4,r5
+- 5b8: (10 64 28 5c|5c 28 64 10)       nmachhw r3,r4,r5
+- 5bc: (10 64 28 5d|5d 28 64 10)       nmachhw\. r3,r4,r5
+- 5c0: (10 64 2c 5c|5c 2c 64 10)       nmachhwo r3,r4,r5
+- 5c4: (10 64 2c 5d|5d 2c 64 10)       nmachhwo\. r3,r4,r5
+- 5c8: (10 64 28 dc|dc 28 64 10)       nmachhws r3,r4,r5
+- 5cc: (10 64 28 dd|dd 28 64 10)       nmachhws\. r3,r4,r5
+- 5d0: (10 64 2c dc|dc 2c 64 10)       nmachhwso r3,r4,r5
+- 5d4: (10 64 2c dd|dd 2c 64 10)       nmachhwso\. r3,r4,r5
+- 5d8: (10 64 2b 5c|5c 2b 64 10)       nmaclhw r3,r4,r5
+- 5dc: (10 64 2b 5d|5d 2b 64 10)       nmaclhw\. r3,r4,r5
+- 5e0: (10 64 2f 5c|5c 2f 64 10)       nmaclhwo r3,r4,r5
+- 5e4: (10 64 2f 5d|5d 2f 64 10)       nmaclhwo\. r3,r4,r5
+- 5e8: (10 64 2b dc|dc 2b 64 10)       nmaclhws r3,r4,r5
+- 5ec: (10 64 2b dd|dd 2b 64 10)       nmaclhws\. r3,r4,r5
+- 5f0: (10 64 2f dc|dc 2f 64 10)       nmaclhwso r3,r4,r5
+- 5f4: (10 64 2f dd|dd 2f 64 10)       nmaclhwso\. r3,r4,r5
+- 5f8: (7e b4 b0 f8|f8 b0 b4 7e)       nor     r20,r21,r22
+- 5fc: (7e b4 b0 f9|f9 b0 b4 7e)       nor\.    r20,r21,r22
+- 600: (7c 40 23 78|78 23 40 7c)       or      r0,r2,r4
+- 604: (7d cc 83 79|79 83 cc 7d)       or\.     r12,r14,r16
+- 608: (7e 0f 8b 38|38 8b 0f 7e)       orc     r15,r16,r17
+- 60c: (7e 72 a3 39|39 a3 72 7e)       orc\.    r18,r19,r20
+- 610: (60 21 00 00|00 00 21 60)       ori     r1,r1,0
+- 614: (64 83 de ad|ad de 83 64)       oris    r3,r4,57005
+- 618: (7c 83 00 f4|f4 00 83 7c)       popcntb r3,r4
+- 61c: (7c 83 01 34|34 01 83 7c)       prtyw   r3,r4
+- 620: (4c 00 00 66|66 00 00 4c)       rfci
+- 624: (4c 00 00 64|64 00 00 4c)       rfi
+- 628: (4c 00 00 4c|4c 00 00 4c)       rfmci
+- 62c: (50 83 65 36|36 65 83 50)       rlwimi  r3,r4,12,20,27
+- 630: (50 83 65 37|37 65 83 50)       rlwimi\. r3,r4,12,20,27
+- 634: (54 83 00 36|36 00 83 54)       rlwinm  r3,r4,0,0,27
+- 638: (54 83 d1 be|be d1 83 54)       rlwinm  r3,r4,26,6,31
+- 63c: (54 83 20 26|26 20 83 54)       rlwinm  r3,r4,4,0,19
+- 640: (54 83 00 37|37 00 83 54)       rlwinm\. r3,r4,0,0,27
+- 644: (5c 83 28 3e|3e 28 83 5c)       rotlw   r3,r4,r5
+- 648: (5c 83 28 3f|3f 28 83 5c)       rotlw\.  r3,r4,r5
+- 64c: (5c 83 28 3e|3e 28 83 5c)       rotlw   r3,r4,r5
+- 650: (5c 83 28 3f|3f 28 83 5c)       rotlw\.  r3,r4,r5
+- 654: (44 00 00 02|02 00 00 44)       sc
+- 658: (7c 83 28 30|30 28 83 7c)       slw     r3,r4,r5
+- 65c: (7c 83 28 31|31 28 83 7c)       slw\.    r3,r4,r5
+- 660: (7c 83 2e 30|30 2e 83 7c)       sraw    r3,r4,r5
+- 664: (7c 83 2e 31|31 2e 83 7c)       sraw\.   r3,r4,r5
+- 668: (7c 83 86 70|70 86 83 7c)       srawi   r3,r4,16
+- 66c: (7c 83 86 71|71 86 83 7c)       srawi\.  r3,r4,16
+- 670: (7c 83 2c 30|30 2c 83 7c)       srw     r3,r4,r5
+- 674: (7c 83 2c 31|31 2c 83 7c)       srw\.    r3,r4,r5
+- 678: (54 83 d1 be|be d1 83 54)       rlwinm  r3,r4,26,6,31
+- 67c: (99 61 00 02|02 00 61 99)       stb     r11,2\(r1\)
+- 680: (9d 81 00 03|03 00 81 9d)       stbu    r12,3\(r1\)
+- 684: (7d ae 79 ee|ee 79 ae 7d)       stbux   r13,r14,r15
+- 688: (7c 64 29 ae|ae 29 64 7c)       stbx    r3,r4,r5
+- 68c: (db 21 00 20|20 00 21 db)       stfd    f25,32\(r1\)
+- 690: (df 41 00 28|28 00 41 df)       stfdu   f26,40\(r1\)
+- 694: (7c 01 15 ee|ee 15 01 7c)       stfdux  f0,r1,r2
+- 698: (7f be fd ae|ae fd be 7f)       stfdx   f29,r30,r31
+- 69c: (7d 43 27 ae|ae 27 43 7d)       stfiwx  f10,r3,r4
+- 6a0: (d2 e1 00 14|14 00 e1 d2)       stfs    f23,20\(r1\)
+- 6a4: (d7 01 00 18|18 00 01 d7)       stfsu   f24,24\(r1\)
+- 6a8: (7f 5b e5 6e|6e e5 5b 7f)       stfsux  f26,r27,r28
+- 6ac: (7e f8 cd 2e|2e cd f8 7e)       stfsx   f23,r24,r25
+- 6b0: (b2 21 00 0a|0a 00 21 b2)       sth     r17,10\(r1\)
+- 6b4: (7c c7 47 2c|2c 47 c7 7c)       sthbrx  r6,r7,r8
+- 6b8: (b6 41 00 0c|0c 00 41 b6)       sthu    r18,12\(r1\)
+- 6bc: (7e b6 bb 6e|6e bb b6 7e)       sthux   r21,r22,r23
+- 6c0: (7d 8d 73 2e|2e 73 8d 7d)       sthx    r12,r13,r14
+- 6c4: (bc c1 ff f0|f0 ff c1 bc)       stmw    r6,-16\(r1\)
+- 6c8: (7c 64 85 aa|aa 85 64 7c)       stswi   r3,r4,16
+- 6cc: (7c 64 2d 2a|2a 2d 64 7c)       stswx   r3,r4,r5
+- 6d0: (90 c7 ff f0|f0 ff c7 90)       stw     r6,-16\(r7\)
+- 6d4: (7c 64 2d 2c|2c 2d 64 7c)       stwbrx  r3,r4,r5
+- 6d8: (7c 64 29 2d|2d 29 64 7c)       stwcx\.  r3,r4,r5
+- 6dc: (94 61 00 10|10 00 61 94)       stwu    r3,16\(r1\)
+- 6e0: (7c 64 29 6e|6e 29 64 7c)       stwux   r3,r4,r5
+- 6e4: (7c 64 29 2e|2e 29 64 7c)       stwx    r3,r4,r5
+- 6e8: (7c 64 28 50|50 28 64 7c)       subf    r3,r4,r5
+- 6ec: (7c 64 28 51|51 28 64 7c)       subf\.   r3,r4,r5
+- 6f0: (7c 64 28 10|10 28 64 7c)       subfc   r3,r4,r5
+- 6f4: (7c 64 28 11|11 28 64 7c)       subfc\.  r3,r4,r5
+- 6f8: (7c 64 2c 10|10 2c 64 7c)       subfco  r3,r4,r5
+- 6fc: (7c 64 2c 11|11 2c 64 7c)       subfco\. r3,r4,r5
+- 700: (7c 64 29 10|10 29 64 7c)       subfe   r3,r4,r5
+- 704: (7c 64 29 11|11 29 64 7c)       subfe\.  r3,r4,r5
+- 708: (7c 64 2d 10|10 2d 64 7c)       subfeo  r3,r4,r5
+- 70c: (7c 64 2d 11|11 2d 64 7c)       subfeo\. r3,r4,r5
+- 710: (20 64 00 05|05 00 64 20)       subfic  r3,r4,5
+- 714: (7c 64 01 d0|d0 01 64 7c)       subfme  r3,r4
+- 718: (7c 64 01 d1|d1 01 64 7c)       subfme\. r3,r4
+- 71c: (7c 64 05 d0|d0 05 64 7c)       subfmeo r3,r4
+- 720: (7c 64 05 d1|d1 05 64 7c)       subfmeo\. r3,r4
+- 724: (7c 64 2c 50|50 2c 64 7c)       subfo   r3,r4,r5
+- 728: (7c 64 2c 51|51 2c 64 7c)       subfo\.  r3,r4,r5
+- 72c: (7c 64 01 90|90 01 64 7c)       subfze  r3,r4
+- 730: (7c 64 01 91|91 01 64 7c)       subfze\. r3,r4
+- 734: (7c 64 05 90|90 05 64 7c)       subfzeo r3,r4
+- 738: (7c 64 05 91|91 05 64 7c)       subfzeo\. r3,r4
+- 73c: (7c 07 46 24|24 46 07 7c)       tlbivax r7,r8
+- 740: (7c 22 3f 64|64 3f 22 7c)       tlbre   r1,r2,7
+- 744: (7c 0b 67 24|24 67 0b 7c)       tlbsx   r11,r12
+- 748: (7d 8d 77 24|24 77 8d 7d)       tlbsx   r12,r13,r14
+- 74c: (7d 8d 77 25|25 77 8d 7d)       tlbsx\.  r12,r13,r14
+- 750: (7c 00 04 6c|6c 04 00 7c)       tlbsync
+- 754: (7c 00 07 a4|a4 07 00 7c)       tlbwe
+- 758: (7c 00 07 a4|a4 07 00 7c)       tlbwe
+- 75c: (7c 21 0f a4|a4 0f 21 7c)       tlbwe   r1,r1,1
+- 760: (7f e0 00 08|08 00 e0 7f)       trap
+- 764: (7f e0 00 08|08 00 e0 7f)       trap
+- 768: (7c 83 20 08|08 20 83 7c)       tweq    r3,r4
+- 76c: (7c a3 20 08|08 20 a3 7c)       twlge   r3,r4
+- 770: (7c 83 20 08|08 20 83 7c)       tweq    r3,r4
+- 774: (0d 03 00 0f|0f 00 03 0d)       twgti   r3,15
+- 778: (0c c3 00 0f|0f 00 c3 0c)       twllei  r3,15
+- 77c: (0d 03 00 0f|0f 00 03 0d)       twgti   r3,15
+- 780: (7c a3 20 08|08 20 a3 7c)       twlge   r3,r4
+- 784: (0c c3 00 0f|0f 00 c3 0c)       twllei  r3,15
+- 788: (7c 60 01 06|06 01 60 7c)       wrtee   r3
+- 78c: (7c 00 81 46|46 81 00 7c)       wrteei  1
+- 790: (7f dd fa 78|78 fa dd 7f)       xor     r29,r30,r31
+- 794: (7f dd fa 79|79 fa dd 7f)       xor\.    r29,r30,r31
+- 798: (68 83 de ad|ad de 83 68)       xori    r3,r4,57005
+- 79c: (6c 83 de ad|ad de 83 6c)       xoris   r3,r4,57005
++.*:   (7c 64 2a 14|14 2a 64 7c)       add     r3,r4,r5
++.*:   (7c 64 2a 15|15 2a 64 7c)       add\.    r3,r4,r5
++.*:   (7c 64 28 14|14 28 64 7c)       addc    r3,r4,r5
++.*:   (7c 64 28 15|15 28 64 7c)       addc\.   r3,r4,r5
++.*:   (7c 64 2c 14|14 2c 64 7c)       addco   r3,r4,r5
++.*:   (7c 64 2c 15|15 2c 64 7c)       addco\.  r3,r4,r5
++.*:   (7c 64 29 14|14 29 64 7c)       adde    r3,r4,r5
++.*:   (7c 64 29 15|15 29 64 7c)       adde\.   r3,r4,r5
++.*:   (7c 64 2d 14|14 2d 64 7c)       addeo   r3,r4,r5
++.*:   (7c 64 2d 15|15 2d 64 7c)       addeo\.  r3,r4,r5
++.*:   (38 64 ff 80|80 ff 64 38)       addi    r3,r4,-128
++.*:   (30 64 ff 80|80 ff 64 30)       addic   r3,r4,-128
++.*:   (34 64 ff 80|80 ff 64 34)       addic\.  r3,r4,-128
++.*:   (3c 64 ff 80|80 ff 64 3c)       addis   r3,r4,-128
++.*:   (7c 64 01 d4|d4 01 64 7c)       addme   r3,r4
++.*:   (7c 64 01 d5|d5 01 64 7c)       addme\.  r3,r4
++.*:   (7c 64 05 d4|d4 05 64 7c)       addmeo  r3,r4
++.*:   (7c 64 05 d5|d5 05 64 7c)       addmeo\. r3,r4
++.*:   (7c 64 2e 14|14 2e 64 7c)       addo    r3,r4,r5
++.*:   (7c 64 2e 15|15 2e 64 7c)       addo\.   r3,r4,r5
++.*:   (7c 64 01 94|94 01 64 7c)       addze   r3,r4
++.*:   (7c 64 01 95|95 01 64 7c)       addze\.  r3,r4
++.*:   (7c 64 05 94|94 05 64 7c)       addzeo  r3,r4
++.*:   (7c 64 05 95|95 05 64 7c)       addzeo\. r3,r4
++.*:   (7c 83 28 38|38 28 83 7c)       and     r3,r4,r5
++.*:   (7c 83 28 39|39 28 83 7c)       and\.    r3,r4,r5
++.*:   (7d cd 78 78|78 78 cd 7d)       andc    r13,r14,r15
++.*:   (7e 30 90 79|79 90 30 7e)       andc\.   r16,r17,r18
++.*:   (70 83 de ad|ad de 83 70)       andi\.   r3,r4,57005
++.*:   (74 83 de ad|ad de 83 74)       andis\.  r3,r4,57005
++.*:   (48 00 00 02|02 00 00 48)       ba      0 <ppc476>
++.*:   (40 01 00 00|00 00 01 40)       bdnzf   gt,7c <ppc476\+0x7c>
++.*:   (40 85 00 02|02 00 85 40)       blea    cr1,0 <ppc476>
++.*:   (4d 80 04 20|20 04 80 4d)       bltctr
++.*:   (4c 8a 04 20|20 04 8a 4c)       bnectr  cr2
++.*:   (4c 86 04 20|20 04 86 4c)       bnectr  cr1
++.*:   (4c 86 04 20|20 04 86 4c)       bnectr  cr1
++.*:   (4d 80 04 21|21 04 80 4d)       bltctrl
++.*:   (4c 8a 04 21|21 04 8a 4c)       bnectrl cr2
++.*:   (4c 86 04 21|21 04 86 4c)       bnectrl cr1
++.*:   (4c 86 04 21|21 04 86 4c)       bnectrl cr1
++.*:   (40 43 00 01|01 00 43 40)       bdzfl   so,a4 <ppc476\+0xa4>
++.*:   (4d 80 00 20|20 00 80 4d)       bltlr
++.*:   (4c 8a 00 20|20 00 8a 4c)       bnelr   cr2
++.*:   (4c 86 00 20|20 00 86 4c)       bnelr   cr1
++.*:   (4c 86 00 20|20 00 86 4c)       bnelr   cr1
++.*:   (4d 80 00 21|21 00 80 4d)       bltlrl
++.*:   (4c 8a 00 21|21 00 8a 4c)       bnelrl  cr2
++.*:   (4c 86 00 21|21 00 86 4c)       bnelrl  cr1
++.*:   (4c 86 00 21|21 00 86 4c)       bnelrl  cr1
++.*:   (48 00 00 00|00 00 00 48)       b       c8 <ppc476\+0xc8>
++.*:   (48 00 00 01|01 00 00 48)       bl      cc <ppc476\+0xcc>
++.*:   (54 83 00 36|36 00 83 54)       rlwinm  r3,r4,0,0,27
++.*:   (7c 03 20 00|00 20 03 7c)       cmpw    r3,r4
++.*:   (7f 83 20 00|00 20 83 7f)       cmpw    cr7,r3,r4
++.*:   (7c 83 2b f8|f8 2b 83 7c)       cmpb    r3,r4,r5
++.*:   (7c 83 2b f8|f8 2b 83 7c)       cmpb    r3,r4,r5
++.*:   (2c 03 ff 59|59 ff 03 2c)       cmpwi   r3,-167
++.*:   (2f 83 ff 59|59 ff 83 2f)       cmpwi   cr7,r3,-167
++.*:   (7c 03 20 40|40 20 03 7c)       cmplw   r3,r4
++.*:   (7f 83 20 40|40 20 83 7f)       cmplw   cr7,r3,r4
++.*:   (28 03 00 a7|a7 00 03 28)       cmplwi  r3,167
++.*:   (2b 83 00 a7|a7 00 83 2b)       cmplwi  cr7,r3,167
++.*:   (7c 03 20 40|40 20 03 7c)       cmplw   r3,r4
++.*:   (28 03 00 a7|a7 00 03 28)       cmplwi  r3,167
++.*:   (7c 03 20 00|00 20 03 7c)       cmpw    r3,r4
++.*:   (2c 03 ff 59|59 ff 03 2c)       cmpwi   r3,-167
++.*:   (7d 6a 00 34|34 00 6a 7d)       cntlzw  r10,r11
++.*:   (7d 6a 00 35|35 00 6a 7d)       cntlzw\. r10,r11
++.*:   (4c 85 32 02|02 32 85 4c)       crand   4\*cr1\+lt,4\*cr1\+gt,4\*cr1\+eq
++.*:   (4c 64 29 02|02 29 64 4c)       crandc  so,4\*cr1\+lt,4\*cr1\+gt
++.*:   (4c e0 0a 42|42 0a e0 4c)       creqv   4\*cr1\+so,lt,gt
++.*:   (4c 22 19 c2|c2 19 22 4c)       crnand  gt,eq,so
++.*:   (4c 01 10 42|42 10 01 4c)       crnor   lt,gt,eq
++.*:   (4c a6 3b 82|82 3b a6 4c)       cror    4\*cr1\+gt,4\*cr1\+eq,4\*cr1\+so
++.*:   (4c 43 23 42|42 23 43 4c)       crorc   eq,so,4\*cr1\+lt
++.*:   (4c c7 01 82|82 01 c7 4c)       crxor   4\*cr1\+eq,4\*cr1\+so,lt
++.*:   (7c 09 55 ec|ec 55 09 7c)       dcba    r9,r10
++.*:   (7c 06 38 ac|ac 38 06 7c)       dcbf    r6,r7
++.*:   (7c 06 38 ac|ac 38 06 7c)       dcbf    r6,r7
++.*:   (7c 06 3b ac|ac 3b 06 7c)       dcbi    r6,r7
++.*:   (7c 85 33 0c|0c 33 85 7c)       dcblc   4,r5,r6
++.*:   (7c 06 38 6c|6c 38 06 7c)       dcbst   r6,r7
++.*:   (7c 05 32 2c|2c 32 05 7c)       dcbt    r5,r6
++.*:   (7c 05 32 2c|2c 32 05 7c)       dcbt    r5,r6
++.*:   (7d 05 32 2c|2c 32 05 7d)       dcbt    8,r5,r6
++.*:   (7c e8 49 4c|4c 49 e8 7c)       dcbtls  7,r8,r9
++.*:   (7c 06 39 ec|ec 39 06 7c)       dcbtst  r6,r7
++.*:   (7c 06 39 ec|ec 39 06 7c)       dcbtst  r6,r7
++.*:   (7d 26 39 ec|ec 39 26 7d)       dcbtst  9,r6,r7
++.*:   (7d 4b 61 0c|0c 61 4b 7d)       dcbtstls 10,r11,r12
++.*:   (7c 01 17 ec|ec 17 01 7c)       dcbz    r1,r2
++.*:   (7c 05 37 ec|ec 37 05 7c)       dcbz    r5,r6
++.*:   (7c 00 03 8c|8c 03 00 7c)       dccci
++.*:   (7c 00 03 8c|8c 03 00 7c)       dccci
++.*:   (7c 00 03 8c|8c 03 00 7c)       dccci
++.*:   (7c 20 03 8c|8c 03 20 7c)       dci     1
++.*:   (7d 4b 63 d6|d6 63 4b 7d)       divw    r10,r11,r12
++.*:   (7d 6c 6b d7|d7 6b 6c 7d)       divw\.   r11,r12,r13
++.*:   (7d 4b 67 d6|d6 67 4b 7d)       divwo   r10,r11,r12
++.*:   (7d 6c 6f d7|d7 6f 6c 7d)       divwo\.  r11,r12,r13
++.*:   (7d 4b 63 96|96 63 4b 7d)       divwu   r10,r11,r12
++.*:   (7d 6c 6b 97|97 6b 6c 7d)       divwu\.  r11,r12,r13
++.*:   (7d 4b 67 96|96 67 4b 7d)       divwuo  r10,r11,r12
++.*:   (7d 6c 6f 97|97 6f 6c 7d)       divwuo\. r11,r12,r13
++.*:   (7c 83 28 9c|9c 28 83 7c)       dlmzb   r3,r4,r5
++.*:   (7c 83 28 9d|9d 28 83 7c)       dlmzb\.  r3,r4,r5
++.*:   (7d 6a 62 38|38 62 6a 7d)       eqv     r10,r11,r12
++.*:   (7d 6a 62 39|39 62 6a 7d)       eqv\.    r10,r11,r12
++.*:   (54 83 20 26|26 20 83 54)       rlwinm  r3,r4,4,0,19
++.*:   (7c 83 07 74|74 07 83 7c)       extsb   r3,r4
++.*:   (7c 83 07 75|75 07 83 7c)       extsb\.  r3,r4
++.*:   (7c 83 07 34|34 07 83 7c)       extsh   r3,r4
++.*:   (7c 83 07 35|35 07 83 7c)       extsh\.  r3,r4
++.*:   (fe a0 fa 10|10 fa a0 fe)       fabs    f21,f31
++.*:   (fe a0 fa 11|11 fa a0 fe)       fabs\.   f21,f31
++.*:   (fd 4b 60 2a|2a 60 4b fd)       fadd    f10,f11,f12
++.*:   (fd 4b 60 2b|2b 60 4b fd)       fadd\.   f10,f11,f12
++.*:   (ed 4b 60 2a|2a 60 4b ed)       fadds   f10,f11,f12
++.*:   (ed 4b 60 2b|2b 60 4b ed)       fadds\.  f10,f11,f12
++.*:   (fd 40 5e 9c|9c 5e 40 fd)       fcfid   f10,f11
++.*:   (fd 40 5e 9d|9d 5e 40 fd)       fcfid\.  f10,f11
++.*:   (fd 8a 58 40|40 58 8a fd)       fcmpo   cr3,f10,f11
++.*:   (fd 84 28 00|00 28 84 fd)       fcmpu   cr3,f4,f5
++.*:   (fd 4b 60 10|10 60 4b fd)       fcpsgn  f10,f11,f12
++.*:   (fd 4b 60 11|11 60 4b fd)       fcpsgn\. f10,f11,f12
++.*:   (fd 40 5e 5c|5c 5e 40 fd)       fctid   f10,f11
++.*:   (fd 40 5e 5d|5d 5e 40 fd)       fctid\.  f10,f11
++.*:   (fd 40 5e 5e|5e 5e 40 fd)       fctidz  f10,f11
++.*:   (fd 40 5e 5f|5f 5e 40 fd)       fctidz\. f10,f11
++.*:   (fd 40 58 1c|1c 58 40 fd)       fctiw   f10,f11
++.*:   (fd 40 58 1d|1d 58 40 fd)       fctiw\.  f10,f11
++.*:   (fd 40 58 1e|1e 58 40 fd)       fctiwz  f10,f11
++.*:   (fd 40 58 1f|1f 58 40 fd)       fctiwz\. f10,f11
++.*:   (fd 4b 60 24|24 60 4b fd)       fdiv    f10,f11,f12
++.*:   (fd 4b 60 25|25 60 4b fd)       fdiv\.   f10,f11,f12
++.*:   (ed 4b 60 24|24 60 4b ed)       fdivs   f10,f11,f12
++.*:   (ed 4b 60 25|25 60 4b ed)       fdivs\.  f10,f11,f12
++.*:   (fd 4b 6b 3a|3a 6b 4b fd)       fmadd   f10,f11,f12,f13
++.*:   (fd 4b 6b 3b|3b 6b 4b fd)       fmadd\.  f10,f11,f12,f13
++.*:   (ed 4b 6b 3a|3a 6b 4b ed)       fmadds  f10,f11,f12,f13
++.*:   (ed 4b 6b 3b|3b 6b 4b ed)       fmadds\. f10,f11,f12,f13
++.*:   (fc 60 20 90|90 20 60 fc)       fmr     f3,f4
++.*:   (fc 60 20 91|91 20 60 fc)       fmr\.    f3,f4
++.*:   (fd 4b 6b 38|38 6b 4b fd)       fmsub   f10,f11,f12,f13
++.*:   (fd 4b 6b 39|39 6b 4b fd)       fmsub\.  f10,f11,f12,f13
++.*:   (ed 4b 6b 38|38 6b 4b ed)       fmsubs  f10,f11,f12,f13
++.*:   (ed 4b 6b 39|39 6b 4b ed)       fmsubs\. f10,f11,f12,f13
++.*:   (fd 4b 03 32|32 03 4b fd)       fmul    f10,f11,f12
++.*:   (fd 4b 03 33|33 03 4b fd)       fmul\.   f10,f11,f12
++.*:   (ed 4b 03 32|32 03 4b ed)       fmuls   f10,f11,f12
++.*:   (ed 4b 03 33|33 03 4b ed)       fmuls\.  f10,f11,f12
++.*:   (fe 80 f1 10|10 f1 80 fe)       fnabs   f20,f30
++.*:   (fe 80 f1 11|11 f1 80 fe)       fnabs\.  f20,f30
++.*:   (fc 60 20 50|50 20 60 fc)       fneg    f3,f4
++.*:   (fc 60 20 51|51 20 60 fc)       fneg\.   f3,f4
++.*:   (fd 4b 6b 3e|3e 6b 4b fd)       fnmadd  f10,f11,f12,f13
++.*:   (fd 4b 6b 3f|3f 6b 4b fd)       fnmadd\. f10,f11,f12,f13
++.*:   (ed 4b 6b 3e|3e 6b 4b ed)       fnmadds f10,f11,f12,f13
++.*:   (ed 4b 6b 3f|3f 6b 4b ed)       fnmadds\. f10,f11,f12,f13
++.*:   (fd 4b 6b 3c|3c 6b 4b fd)       fnmsub  f10,f11,f12,f13
++.*:   (fd 4b 6b 3d|3d 6b 4b fd)       fnmsub\. f10,f11,f12,f13
++.*:   (ed 4b 6b 3c|3c 6b 4b ed)       fnmsubs f10,f11,f12,f13
++.*:   (ed 4b 6b 3d|3d 6b 4b ed)       fnmsubs\. f10,f11,f12,f13
++.*:   (fd c0 78 30|30 78 c0 fd)       fre     f14,f15
++.*:   (fd c0 78 31|31 78 c0 fd)       fre\.    f14,f15
++.*:   (ed c0 78 30|30 78 c0 ed)       fres    f14,f15
++.*:   (ed c0 78 31|31 78 c0 ed)       fres\.   f14,f15
++.*:   (fd 40 5b d0|d0 5b 40 fd)       frim    f10,f11
++.*:   (fd 40 5b d1|d1 5b 40 fd)       frim\.   f10,f11
++.*:   (fd 40 5b 10|10 5b 40 fd)       frin    f10,f11
++.*:   (fd 40 5b 11|11 5b 40 fd)       frin\.   f10,f11
++.*:   (fd 40 5b 90|90 5b 40 fd)       frip    f10,f11
++.*:   (fd 40 5b 91|91 5b 40 fd)       frip\.   f10,f11
++.*:   (fd 40 5b 50|50 5b 40 fd)       friz    f10,f11
++.*:   (fd 40 5b 51|51 5b 40 fd)       friz\.   f10,f11
++.*:   (fc c0 38 18|18 38 c0 fc)       frsp    f6,f7
++.*:   (fd 00 48 19|19 48 00 fd)       frsp\.   f8,f9
++.*:   (fd c0 78 34|34 78 c0 fd)       frsqrte f14,f15
++.*:   (fd c0 78 35|35 78 c0 fd)       frsqrte\. f14,f15
++.*:   (ed c0 78 34|34 78 c0 ed)       frsqrtes f14,f15
++.*:   (ed c0 78 35|35 78 c0 ed)       frsqrtes\. f14,f15
++.*:   (fd 4b 6b 2e|2e 6b 4b fd)       fsel    f10,f11,f12,f13
++.*:   (fd 4b 6b 2f|2f 6b 4b fd)       fsel\.   f10,f11,f12,f13
++.*:   (fd 40 58 2c|2c 58 40 fd)       fsqrt   f10,f11
++.*:   (fd 40 58 2d|2d 58 40 fd)       fsqrt\.  f10,f11
++.*:   (ed 40 58 2c|2c 58 40 ed)       fsqrts  f10,f11
++.*:   (ed 40 58 2d|2d 58 40 ed)       fsqrts\. f10,f11
++.*:   (fd 4b 60 28|28 60 4b fd)       fsub    f10,f11,f12
++.*:   (fd 4b 60 29|29 60 4b fd)       fsub\.   f10,f11,f12
++.*:   (ed 4b 60 28|28 60 4b ed)       fsubs   f10,f11,f12
++.*:   (ed 4b 60 29|29 60 4b ed)       fsubs\.  f10,f11,f12
++.*:   (7c 03 27 ac|ac 27 03 7c)       icbi    r3,r4
++.*:   (7e 11 91 cc|cc 91 11 7e)       icblc   16,r17,r18
++.*:   (7c a8 48 2c|2c 48 a8 7c)       icbt    5,r8,r9
++.*:   (7d ae 7b cc|cc 7b ae 7d)       icbtls  13,r14,r15
++.*:   (7c 00 07 8c|8c 07 00 7c)       iccci
++.*:   (7c 00 07 8c|8c 07 00 7c)       iccci
++.*:   (7c 00 07 8c|8c 07 00 7c)       iccci
++.*:   (7c 20 07 8c|8c 07 20 7c)       ici     1
++.*:   (7c 03 27 cc|cc 27 03 7c)       icread  r3,r4
++.*:   (50 83 65 36|36 65 83 50)       rlwimi  r3,r4,12,20,27
++.*:   (7c 43 27 1e|1e 27 43 7c)       isel    r2,r3,r4,28
++.*:   (4c 00 01 2c|2c 01 00 4c)       isync
++.*:   (89 21 00 00|00 00 21 89)       lbz     r9,0\(r1\)
++.*:   (8d 41 00 01|01 00 41 8d)       lbzu    r10,1\(r1\)
++.*:   (7e 95 b0 ee|ee b0 95 7e)       lbzux   r20,r21,r22
++.*:   (7c 64 28 ae|ae 28 64 7c)       lbzx    r3,r4,r5
++.*:   (ca a1 00 08|08 00 a1 ca)       lfd     f21,8\(r1\)
++.*:   (ce c1 00 10|10 00 c1 ce)       lfdu    f22,16\(r1\)
++.*:   (7e 95 b4 ee|ee b4 95 7e)       lfdux   f20,r21,r22
++.*:   (7d ae 7c ae|ae 7c ae 7d)       lfdx    f13,r14,r15
++.*:   (7d 43 26 ae|ae 26 43 7d)       lfiwax  f10,r3,r4
++.*:   (c2 61 00 00|00 00 61 c2)       lfs     f19,0\(r1\)
++.*:   (c6 81 00 04|04 00 81 c6)       lfsu    f20,4\(r1\)
++.*:   (7d 4b 64 6e|6e 64 4b 7d)       lfsux   f10,r11,r12
++.*:   (7d 4b 64 2e|2e 64 4b 7d)       lfsx    f10,r11,r12
++.*:   (a9 e1 00 06|06 00 e1 a9)       lha     r15,6\(r1\)
++.*:   (ae 01 00 08|08 00 01 ae)       lhau    r16,8\(r1\)
++.*:   (7d 2a 5a ee|ee 5a 2a 7d)       lhaux   r9,r10,r11
++.*:   (7d 2a 5a ae|ae 5a 2a 7d)       lhax    r9,r10,r11
++.*:   (7c 64 2e 2c|2c 2e 64 7c)       lhbrx   r3,r4,r5
++.*:   (a1 a1 00 00|00 00 a1 a1)       lhz     r13,0\(r1\)
++.*:   (a5 c1 00 02|02 00 c1 a5)       lhzu    r14,2\(r1\)
++.*:   (7e 96 c2 6e|6e c2 96 7e)       lhzux   r20,r22,r24
++.*:   (7e f8 ca 2e|2e ca f8 7e)       lhzx    r23,r24,r25
++.*:   (7c 64 28 28|28 28 64 7c)       lwarx   r3,r4,r5
++.*:   (7c 64 28 28|28 28 64 7c)       lwarx   r3,r4,r5
++.*:   (7c 64 28 29|29 28 64 7c)       lwarx   r3,r4,r5,1
++.*:   (7c 64 2c 2c|2c 2c 64 7c)       lwbrx   r3,r4,r5
++.*:   (80 c7 00 00|00 00 c7 80)       lwz     r6,0\(r7\)
++.*:   (84 61 00 10|10 00 61 84)       lwzu    r3,16\(r1\)
++.*:   (7c 64 28 6e|6e 28 64 7c)       lwzux   r3,r4,r5
++.*:   (7c 64 28 2e|2e 28 64 7c)       lwzx    r3,r4,r5
++.*:   (10 64 29 58|58 29 64 10)       macchw  r3,r4,r5
++.*:   (10 64 29 59|59 29 64 10)       macchw\. r3,r4,r5
++.*:   (10 64 2d 58|58 2d 64 10)       macchwo r3,r4,r5
++.*:   (10 64 2d 59|59 2d 64 10)       macchwo\. r3,r4,r5
++.*:   (10 64 29 d8|d8 29 64 10)       macchws r3,r4,r5
++.*:   (10 64 29 d9|d9 29 64 10)       macchws\. r3,r4,r5
++.*:   (10 64 2d d8|d8 2d 64 10)       macchwso r3,r4,r5
++.*:   (10 64 2d d9|d9 2d 64 10)       macchwso\. r3,r4,r5
++.*:   (10 64 29 98|98 29 64 10)       macchwsu r3,r4,r5
++.*:   (10 64 29 99|99 29 64 10)       macchwsu\. r3,r4,r5
++.*:   (10 64 2d 98|98 2d 64 10)       macchwsuo r3,r4,r5
++.*:   (10 64 2d 99|99 2d 64 10)       macchwsuo\. r3,r4,r5
++.*:   (10 64 29 18|18 29 64 10)       macchwu r3,r4,r5
++.*:   (10 64 29 19|19 29 64 10)       macchwu\. r3,r4,r5
++.*:   (10 64 2d 18|18 2d 64 10)       macchwuo r3,r4,r5
++.*:   (10 64 2d 19|19 2d 64 10)       macchwuo\. r3,r4,r5
++.*:   (10 64 28 58|58 28 64 10)       machhw  r3,r4,r5
++.*:   (10 64 28 59|59 28 64 10)       machhw\. r3,r4,r5
++.*:   (10 64 2c 58|58 2c 64 10)       machhwo r3,r4,r5
++.*:   (10 64 2c 59|59 2c 64 10)       machhwo\. r3,r4,r5
++.*:   (10 64 28 d8|d8 28 64 10)       machhws r3,r4,r5
++.*:   (10 64 28 d9|d9 28 64 10)       machhws\. r3,r4,r5
++.*:   (10 64 2c d8|d8 2c 64 10)       machhwso r3,r4,r5
++.*:   (10 64 2c d9|d9 2c 64 10)       machhwso\. r3,r4,r5
++.*:   (10 64 28 98|98 28 64 10)       machhwsu r3,r4,r5
++.*:   (10 64 28 99|99 28 64 10)       machhwsu\. r3,r4,r5
++.*:   (10 64 2c 98|98 2c 64 10)       machhwsuo r3,r4,r5
++.*:   (10 64 2c 99|99 2c 64 10)       machhwsuo\. r3,r4,r5
++.*:   (10 64 28 18|18 28 64 10)       machhwu r3,r4,r5
++.*:   (10 64 28 19|19 28 64 10)       machhwu\. r3,r4,r5
++.*:   (10 64 2c 18|18 2c 64 10)       machhwuo r3,r4,r5
++.*:   (10 64 2c 19|19 2c 64 10)       machhwuo\. r3,r4,r5
++.*:   (10 64 2b 58|58 2b 64 10)       maclhw  r3,r4,r5
++.*:   (10 64 2b 59|59 2b 64 10)       maclhw\. r3,r4,r5
++.*:   (10 64 2f 58|58 2f 64 10)       maclhwo r3,r4,r5
++.*:   (10 64 2f 59|59 2f 64 10)       maclhwo\. r3,r4,r5
++.*:   (10 64 2b d8|d8 2b 64 10)       maclhws r3,r4,r5
++.*:   (10 64 2b d9|d9 2b 64 10)       maclhws\. r3,r4,r5
++.*:   (10 64 2f d8|d8 2f 64 10)       maclhwso r3,r4,r5
++.*:   (10 64 2f d9|d9 2f 64 10)       maclhwso\. r3,r4,r5
++.*:   (10 64 2b 98|98 2b 64 10)       maclhwsu r3,r4,r5
++.*:   (10 64 2b 99|99 2b 64 10)       maclhwsu\. r3,r4,r5
++.*:   (10 64 2f 98|98 2f 64 10)       maclhwsuo r3,r4,r5
++.*:   (10 64 2f 99|99 2f 64 10)       maclhwsuo\. r3,r4,r5
++.*:   (10 64 2b 18|18 2b 64 10)       maclhwu r3,r4,r5
++.*:   (10 64 2b 19|19 2b 64 10)       maclhwu\. r3,r4,r5
++.*:   (10 64 2f 18|18 2f 64 10)       maclhwuo r3,r4,r5
++.*:   (10 64 2f 19|19 2f 64 10)       maclhwuo\. r3,r4,r5
++.*:   (7c 00 06 ac|ac 06 00 7c)       mbar
++.*:   (7c 00 06 ac|ac 06 00 7c)       mbar
++.*:   (7c 20 06 ac|ac 06 20 7c)       mbar    1
++.*:   (4c 04 00 00|00 00 04 4c)       mcrf    cr0,cr1
++.*:   (fd 90 00 80|80 00 90 fd)       mcrfs   cr3,cr4
++.*:   (7d 80 04 00|00 04 80 7d)       mcrxr   cr3
++.*:   (7c 60 00 26|26 00 60 7c)       mfcr    r3
++.*:   (7c 60 00 26|26 00 60 7c)       mfcr    r3
++.*:   (7c aa 3a 86|86 3a aa 7c)       mfdcr   r5,234
++.*:   (7c 64 02 46|46 02 64 7c)       mfdcrux r3,r4
++.*:   (7c 85 02 06|06 02 85 7c)       mfdcrx  r4,r5
++.*:   (ff c0 04 8e|8e 04 c0 ff)       mffs    f30
++.*:   (ff e0 04 8f|8f 04 e0 ff)       mffs\.   f31
++.*:   (7e 60 00 a6|a6 00 60 7e)       mfmsr   r19
++.*:   (7c 78 00 26|26 00 78 7c)       mfocrf  r3,128
++.*:   (7c 60 22 a6|a6 22 60 7c)       mfspr   r3,128
++.*:   (7c 6c 42 a6|a6 42 6c 7c)       mftb    r3
++.*:   (7c 00 04 ac|ac 04 00 7c)       msync
++.*:   (7c 78 01 20|20 01 78 7c)       mtocrf  128,r3
++.*:   (7c 6f f1 20|20 f1 6f 7c)       mtcr    r3
++.*:   (7d 10 6b 86|86 6b 10 7d)       mtdcr   432,r8
++.*:   (7c 83 03 46|46 03 83 7c)       mtdcrux r3,r4
++.*:   (7c e6 03 06|06 03 e6 7c)       mtdcrx  r6,r7
++.*:   (fc 60 00 8c|8c 00 60 fc)       mtfsb0  3
++.*:   (fc 60 00 8d|8d 00 60 fc)       mtfsb0\. 3
++.*:   (fc 60 00 4c|4c 00 60 fc)       mtfsb1  3
++.*:   (fc 60 00 4d|4d 00 60 fc)       mtfsb1\. 3
++.*:   (fc 0c 55 8e|8e 55 0c fc)       mtfsf   6,f10
++.*:   (fc 0c 55 8e|8e 55 0c fc)       mtfsf   6,f10
++.*:   (fc 0d 55 8e|8e 55 0d fc)       mtfsf   6,f10,0,1
++.*:   (fe 0c 55 8e|8e 55 0c fe)       mtfsf   6,f10,1
++.*:   (fc 0c 5d 8f|8f 5d 0c fc)       mtfsf\.  6,f11
++.*:   (fc 0c 5d 8f|8f 5d 0c fc)       mtfsf\.  6,f11
++.*:   (fc 0d 5d 8f|8f 5d 0d fc)       mtfsf\.  6,f11,0,1
++.*:   (fe 0c 5d 8f|8f 5d 0c fe)       mtfsf\.  6,f11,1
++.*:   (ff 00 01 0c|0c 01 00 ff)       mtfsfi  6,0
++.*:   (ff 00 01 0c|0c 01 00 ff)       mtfsfi  6,0
++.*:   (ff 00 01 0c|0c 01 00 ff)       mtfsfi  6,0
++.*:   (ff 01 01 0c|0c 01 01 ff)       mtfsfi  6,0,1
++.*:   (ff 00 f1 0d|0d f1 00 ff)       mtfsfi\. 6,15
++.*:   (ff 00 f1 0d|0d f1 00 ff)       mtfsfi\. 6,15
++.*:   (ff 00 f1 0d|0d f1 00 ff)       mtfsfi\. 6,15
++.*:   (ff 01 f1 0d|0d f1 01 ff)       mtfsfi\. 6,15,1
++.*:   (7d 40 01 24|24 01 40 7d)       mtmsr   r10
++.*:   (7c 78 01 20|20 01 78 7c)       mtocrf  128,r3
++.*:   (7c 60 23 a6|a6 23 60 7c)       mtspr   128,r3
++.*:   (10 64 29 50|50 29 64 10)       mulchw  r3,r4,r5
++.*:   (10 64 29 51|51 29 64 10)       mulchw\. r3,r4,r5
++.*:   (10 64 29 10|10 29 64 10)       mulchwu r3,r4,r5
++.*:   (10 64 29 11|11 29 64 10)       mulchwu\. r3,r4,r5
++.*:   (10 64 28 50|50 28 64 10)       mulhhw  r3,r4,r5
++.*:   (10 64 28 51|51 28 64 10)       mulhhw\. r3,r4,r5
++.*:   (10 64 28 10|10 28 64 10)       mulhhwu r3,r4,r5
++.*:   (10 64 28 11|11 28 64 10)       mulhhwu\. r3,r4,r5
++.*:   (7c 64 28 96|96 28 64 7c)       mulhw   r3,r4,r5
++.*:   (7c 64 28 97|97 28 64 7c)       mulhw\.  r3,r4,r5
++.*:   (7c 64 28 16|16 28 64 7c)       mulhwu  r3,r4,r5
++.*:   (7c 64 28 17|17 28 64 7c)       mulhwu\. r3,r4,r5
++.*:   (10 64 2b 50|50 2b 64 10)       mullhw  r3,r4,r5
++.*:   (10 64 2b 51|51 2b 64 10)       mullhw\. r3,r4,r5
++.*:   (10 64 2b 10|10 2b 64 10)       mullhwu r3,r4,r5
++.*:   (10 64 2b 11|11 2b 64 10)       mullhwu\. r3,r4,r5
++.*:   (1c 64 00 05|05 00 64 1c)       mulli   r3,r4,5
++.*:   (7c 64 29 d6|d6 29 64 7c)       mullw   r3,r4,r5
++.*:   (7c 64 29 d7|d7 29 64 7c)       mullw\.  r3,r4,r5
++.*:   (7c 64 2d d6|d6 2d 64 7c)       mullwo  r3,r4,r5
++.*:   (7c 64 2d d7|d7 2d 64 7c)       mullwo\. r3,r4,r5
++.*:   (7f bc f3 b8|b8 f3 bc 7f)       nand    r28,r29,r30
++.*:   (7f bc f3 b9|b9 f3 bc 7f)       nand\.   r28,r29,r30
++.*:   (7c 64 00 d0|d0 00 64 7c)       neg     r3,r4
++.*:   (7c 64 00 d1|d1 00 64 7c)       neg\.    r3,r4
++.*:   (7e 11 04 d0|d0 04 11 7e)       nego    r16,r17
++.*:   (7e 53 04 d1|d1 04 53 7e)       nego\.   r18,r19
++.*:   (10 64 29 5c|5c 29 64 10)       nmacchw r3,r4,r5
++.*:   (10 64 29 5d|5d 29 64 10)       nmacchw\. r3,r4,r5
++.*:   (10 64 2d 5c|5c 2d 64 10)       nmacchwo r3,r4,r5
++.*:   (10 64 2d 5d|5d 2d 64 10)       nmacchwo\. r3,r4,r5
++.*:   (10 64 29 dc|dc 29 64 10)       nmacchws r3,r4,r5
++.*:   (10 64 29 dd|dd 29 64 10)       nmacchws\. r3,r4,r5
++.*:   (10 64 2d dc|dc 2d 64 10)       nmacchwso r3,r4,r5
++.*:   (10 64 2d dd|dd 2d 64 10)       nmacchwso\. r3,r4,r5
++.*:   (10 64 28 5c|5c 28 64 10)       nmachhw r3,r4,r5
++.*:   (10 64 28 5d|5d 28 64 10)       nmachhw\. r3,r4,r5
++.*:   (10 64 2c 5c|5c 2c 64 10)       nmachhwo r3,r4,r5
++.*:   (10 64 2c 5d|5d 2c 64 10)       nmachhwo\. r3,r4,r5
++.*:   (10 64 28 dc|dc 28 64 10)       nmachhws r3,r4,r5
++.*:   (10 64 28 dd|dd 28 64 10)       nmachhws\. r3,r4,r5
++.*:   (10 64 2c dc|dc 2c 64 10)       nmachhwso r3,r4,r5
++.*:   (10 64 2c dd|dd 2c 64 10)       nmachhwso\. r3,r4,r5
++.*:   (10 64 2b 5c|5c 2b 64 10)       nmaclhw r3,r4,r5
++.*:   (10 64 2b 5d|5d 2b 64 10)       nmaclhw\. r3,r4,r5
++.*:   (10 64 2f 5c|5c 2f 64 10)       nmaclhwo r3,r4,r5
++.*:   (10 64 2f 5d|5d 2f 64 10)       nmaclhwo\. r3,r4,r5
++.*:   (10 64 2b dc|dc 2b 64 10)       nmaclhws r3,r4,r5
++.*:   (10 64 2b dd|dd 2b 64 10)       nmaclhws\. r3,r4,r5
++.*:   (10 64 2f dc|dc 2f 64 10)       nmaclhwso r3,r4,r5
++.*:   (10 64 2f dd|dd 2f 64 10)       nmaclhwso\. r3,r4,r5
++.*:   (7e b4 b0 f8|f8 b0 b4 7e)       nor     r20,r21,r22
++.*:   (7e b4 b0 f9|f9 b0 b4 7e)       nor\.    r20,r21,r22
++.*:   (7c 40 23 78|78 23 40 7c)       or      r0,r2,r4
++.*:   (7d cc 83 79|79 83 cc 7d)       or\.     r12,r14,r16
++.*:   (7e 0f 8b 38|38 8b 0f 7e)       orc     r15,r16,r17
++.*:   (7e 72 a3 39|39 a3 72 7e)       orc\.    r18,r19,r20
++.*:   (60 21 00 00|00 00 21 60)       ori     r1,r1,0
++.*:   (64 83 de ad|ad de 83 64)       oris    r3,r4,57005
++.*:   (7c 83 00 f4|f4 00 83 7c)       popcntb r3,r4
++.*:   (7c 83 01 34|34 01 83 7c)       prtyw   r3,r4
++.*:   (4c 00 00 66|66 00 00 4c)       rfci
++.*:   (4c 00 00 64|64 00 00 4c)       rfi
++.*:   (4c 00 00 4c|4c 00 00 4c)       rfmci
++.*:   (50 83 65 36|36 65 83 50)       rlwimi  r3,r4,12,20,27
++.*:   (50 83 65 37|37 65 83 50)       rlwimi\. r3,r4,12,20,27
++.*:   (54 83 00 36|36 00 83 54)       rlwinm  r3,r4,0,0,27
++.*:   (54 83 d1 be|be d1 83 54)       rlwinm  r3,r4,26,6,31
++.*:   (54 83 20 26|26 20 83 54)       rlwinm  r3,r4,4,0,19
++.*:   (54 83 00 37|37 00 83 54)       rlwinm\. r3,r4,0,0,27
++.*:   (5c 83 28 3e|3e 28 83 5c)       rotlw   r3,r4,r5
++.*:   (5c 83 28 3f|3f 28 83 5c)       rotlw\.  r3,r4,r5
++.*:   (5c 83 28 3e|3e 28 83 5c)       rotlw   r3,r4,r5
++.*:   (5c 83 28 3f|3f 28 83 5c)       rotlw\.  r3,r4,r5
++.*:   (44 00 00 02|02 00 00 44)       sc
++.*:   (7c 83 28 30|30 28 83 7c)       slw     r3,r4,r5
++.*:   (7c 83 28 31|31 28 83 7c)       slw\.    r3,r4,r5
++.*:   (7c 83 2e 30|30 2e 83 7c)       sraw    r3,r4,r5
++.*:   (7c 83 2e 31|31 2e 83 7c)       sraw\.   r3,r4,r5
++.*:   (7c 83 86 70|70 86 83 7c)       srawi   r3,r4,16
++.*:   (7c 83 86 71|71 86 83 7c)       srawi\.  r3,r4,16
++.*:   (7c 83 2c 30|30 2c 83 7c)       srw     r3,r4,r5
++.*:   (7c 83 2c 31|31 2c 83 7c)       srw\.    r3,r4,r5
++.*:   (54 83 d1 be|be d1 83 54)       rlwinm  r3,r4,26,6,31
++.*:   (99 61 00 02|02 00 61 99)       stb     r11,2\(r1\)
++.*:   (9d 81 00 03|03 00 81 9d)       stbu    r12,3\(r1\)
++.*:   (7d ae 79 ee|ee 79 ae 7d)       stbux   r13,r14,r15
++.*:   (7c 64 29 ae|ae 29 64 7c)       stbx    r3,r4,r5
++.*:   (db 21 00 20|20 00 21 db)       stfd    f25,32\(r1\)
++.*:   (df 41 00 28|28 00 41 df)       stfdu   f26,40\(r1\)
++.*:   (7c 01 15 ee|ee 15 01 7c)       stfdux  f0,r1,r2
++.*:   (7f be fd ae|ae fd be 7f)       stfdx   f29,r30,r31
++.*:   (7d 43 27 ae|ae 27 43 7d)       stfiwx  f10,r3,r4
++.*:   (d2 e1 00 14|14 00 e1 d2)       stfs    f23,20\(r1\)
++.*:   (d7 01 00 18|18 00 01 d7)       stfsu   f24,24\(r1\)
++.*:   (7f 5b e5 6e|6e e5 5b 7f)       stfsux  f26,r27,r28
++.*:   (7e f8 cd 2e|2e cd f8 7e)       stfsx   f23,r24,r25
++.*:   (b2 21 00 0a|0a 00 21 b2)       sth     r17,10\(r1\)
++.*:   (7c c7 47 2c|2c 47 c7 7c)       sthbrx  r6,r7,r8
++.*:   (b6 41 00 0c|0c 00 41 b6)       sthu    r18,12\(r1\)
++.*:   (7e b6 bb 6e|6e bb b6 7e)       sthux   r21,r22,r23
++.*:   (7d 8d 73 2e|2e 73 8d 7d)       sthx    r12,r13,r14
++.*:   (90 c7 ff f0|f0 ff c7 90)       stw     r6,-16\(r7\)
++.*:   (7c 64 2d 2c|2c 2d 64 7c)       stwbrx  r3,r4,r5
++.*:   (7c 64 29 2d|2d 29 64 7c)       stwcx\.  r3,r4,r5
++.*:   (94 61 00 10|10 00 61 94)       stwu    r3,16\(r1\)
++.*:   (7c 64 29 6e|6e 29 64 7c)       stwux   r3,r4,r5
++.*:   (7c 64 29 2e|2e 29 64 7c)       stwx    r3,r4,r5
++.*:   (7c 64 28 50|50 28 64 7c)       subf    r3,r4,r5
++.*:   (7c 64 28 51|51 28 64 7c)       subf\.   r3,r4,r5
++.*:   (7c 64 28 10|10 28 64 7c)       subfc   r3,r4,r5
++.*:   (7c 64 28 11|11 28 64 7c)       subfc\.  r3,r4,r5
++.*:   (7c 64 2c 10|10 2c 64 7c)       subfco  r3,r4,r5
++.*:   (7c 64 2c 11|11 2c 64 7c)       subfco\. r3,r4,r5
++.*:   (7c 64 29 10|10 29 64 7c)       subfe   r3,r4,r5
++.*:   (7c 64 29 11|11 29 64 7c)       subfe\.  r3,r4,r5
++.*:   (7c 64 2d 10|10 2d 64 7c)       subfeo  r3,r4,r5
++.*:   (7c 64 2d 11|11 2d 64 7c)       subfeo\. r3,r4,r5
++.*:   (20 64 00 05|05 00 64 20)       subfic  r3,r4,5
++.*:   (7c 64 01 d0|d0 01 64 7c)       subfme  r3,r4
++.*:   (7c 64 01 d1|d1 01 64 7c)       subfme\. r3,r4
++.*:   (7c 64 05 d0|d0 05 64 7c)       subfmeo r3,r4
++.*:   (7c 64 05 d1|d1 05 64 7c)       subfmeo\. r3,r4
++.*:   (7c 64 2c 50|50 2c 64 7c)       subfo   r3,r4,r5
++.*:   (7c 64 2c 51|51 2c 64 7c)       subfo\.  r3,r4,r5
++.*:   (7c 64 01 90|90 01 64 7c)       subfze  r3,r4
++.*:   (7c 64 01 91|91 01 64 7c)       subfze\. r3,r4
++.*:   (7c 64 05 90|90 05 64 7c)       subfzeo r3,r4
++.*:   (7c 64 05 91|91 05 64 7c)       subfzeo\. r3,r4
++.*:   (7c 07 46 24|24 46 07 7c)       tlbivax r7,r8
++.*:   (7c 22 3f 64|64 3f 22 7c)       tlbre   r1,r2,7
++.*:   (7c 0b 67 24|24 67 0b 7c)       tlbsx   r11,r12
++.*:   (7d 8d 77 24|24 77 8d 7d)       tlbsx   r12,r13,r14
++.*:   (7d 8d 77 25|25 77 8d 7d)       tlbsx\.  r12,r13,r14
++.*:   (7c 00 04 6c|6c 04 00 7c)       tlbsync
++.*:   (7c 00 07 a4|a4 07 00 7c)       tlbwe
++.*:   (7c 00 07 a4|a4 07 00 7c)       tlbwe
++.*:   (7c 21 0f a4|a4 0f 21 7c)       tlbwe   r1,r1,1
++.*:   (7f e0 00 08|08 00 e0 7f)       trap
++.*:   (7f e0 00 08|08 00 e0 7f)       trap
++.*:   (7c 83 20 08|08 20 83 7c)       tweq    r3,r4
++.*:   (7c a3 20 08|08 20 a3 7c)       twlge   r3,r4
++.*:   (7c 83 20 08|08 20 83 7c)       tweq    r3,r4
++.*:   (0d 03 00 0f|0f 00 03 0d)       twgti   r3,15
++.*:   (0c c3 00 0f|0f 00 c3 0c)       twllei  r3,15
++.*:   (0d 03 00 0f|0f 00 03 0d)       twgti   r3,15
++.*:   (7c a3 20 08|08 20 a3 7c)       twlge   r3,r4
++.*:   (0c c3 00 0f|0f 00 c3 0c)       twllei  r3,15
++.*:   (7c 60 01 06|06 01 60 7c)       wrtee   r3
++.*:   (7c 00 81 46|46 81 00 7c)       wrteei  1
++.*:   (7f dd fa 78|78 fa dd 7f)       xor     r29,r30,r31
++.*:   (7f dd fa 79|79 fa dd 7f)       xor\.    r29,r30,r31
++.*:   (68 83 de ad|ad de 83 68)       xori    r3,r4,57005
++.*:   (6c 83 de ad|ad de 83 6c)       xoris   r3,r4,57005
+diff --git a/gas/testsuite/gas/ppc/476.s b/gas/testsuite/gas/ppc/476.s
+index da6fb7152f4..db5d9e153b6 100644
+--- a/gas/testsuite/gas/ppc/476.s
++++ b/gas/testsuite/gas/ppc/476.s
+@@ -226,9 +226,6 @@ ppc476:
+       lhzu    14,2(1)
+       lhzux   20,22,24
+       lhzx    23,24,25
+-      lmw     3,-16(1)
+-      lswi    5,4,16
+-      lswx    3,4,5
+       lwarx   3,4,5
+       lwarx   3,4,5,0
+       lwarx   3,4,5,1
+@@ -433,9 +430,6 @@ ppc476:
+       sthu    18,12(1)
+       sthux   21,22,23
+       sthx    12,13,14
+-      stmw    6,-16(1)
+-      stswi   3,4,16
+-      stswx   3,4,5
+       stw     6,-16(7)
+       stwbrx  3,4,5
+       stwcx.  3,4,5
+diff --git a/gas/testsuite/gas/ppc/a2.d b/gas/testsuite/gas/ppc/a2.d
+index fa7211943ae..517ec1c368e 100644
+--- a/gas/testsuite/gas/ppc/a2.d
++++ b/gas/testsuite/gas/ppc/a2.d
+@@ -9,577 +9,569 @@
+ Disassembly of section \.text:
+ 0+00 <start>:
+-   0: (7c 85 32 15|15 32 85 7c)       add\.    r4,r5,r6
+-   4: (7c 85 32 14|14 32 85 7c)       add     r4,r5,r6
+-   8: (7c 85 30 15|15 30 85 7c)       addc\.   r4,r5,r6
+-   c: (7c 85 30 14|14 30 85 7c)       addc    r4,r5,r6
+-  10: (7c 85 34 15|15 34 85 7c)       addco\.  r4,r5,r6
+-  14: (7c 85 34 14|14 34 85 7c)       addco   r4,r5,r6
+-  18: (7c 85 31 15|15 31 85 7c)       adde\.   r4,r5,r6
+-  1c: (7c 85 31 14|14 31 85 7c)       adde    r4,r5,r6
+-  20: (7c 85 35 15|15 35 85 7c)       addeo\.  r4,r5,r6
+-  24: (7c 85 35 14|14 35 85 7c)       addeo   r4,r5,r6
+-  28: (38 85 00 0d|0d 00 85 38)       addi    r4,r5,13
+-  2c: (38 85 ff f3|f3 ff 85 38)       addi    r4,r5,-13
+-  30: (34 85 00 0d|0d 00 85 34)       addic\.  r4,r5,13
+-  34: (34 85 ff f3|f3 ff 85 34)       addic\.  r4,r5,-13
+-  38: (30 85 00 0d|0d 00 85 30)       addic   r4,r5,13
+-  3c: (30 85 ff f3|f3 ff 85 30)       addic   r4,r5,-13
+-  40: (3c 85 00 17|17 00 85 3c)       addis   r4,r5,23
+-  44: (3c 85 ff e9|e9 ff 85 3c)       addis   r4,r5,-23
+-  48: (7c 85 01 d5|d5 01 85 7c)       addme\.  r4,r5
+-  4c: (7c 85 01 d4|d4 01 85 7c)       addme   r4,r5
+-  50: (7c 85 05 d5|d5 05 85 7c)       addmeo\. r4,r5
+-  54: (7c 85 05 d4|d4 05 85 7c)       addmeo  r4,r5
+-  58: (7c 85 36 15|15 36 85 7c)       addo\.   r4,r5,r6
+-  5c: (7c 85 36 14|14 36 85 7c)       addo    r4,r5,r6
+-  60: (7c 85 01 95|95 01 85 7c)       addze\.  r4,r5
+-  64: (7c 85 01 94|94 01 85 7c)       addze   r4,r5
+-  68: (7c 85 05 95|95 05 85 7c)       addzeo\. r4,r5
+-  6c: (7c 85 05 94|94 05 85 7c)       addzeo  r4,r5
+-  70: (7c a4 30 39|39 30 a4 7c)       and\.    r4,r5,r6
+-  74: (7c a4 30 38|38 30 a4 7c)       and     r4,r5,r6
+-  78: (7c a4 30 79|79 30 a4 7c)       andc\.   r4,r5,r6
+-  7c: (7c a4 30 78|78 30 a4 7c)       andc    r4,r5,r6
+-  80: (70 a4 00 06|06 00 a4 70)       andi\.   r4,r5,6
+-  84: (74 a4 00 06|06 00 a4 74)       andis\.  r4,r5,6
+-  88: (00 00 02 00|00 02 00 00)       attn
+-  8c: (48 00 00 02|02 00 00 48)       ba      0 <start>
+-                      8c: R_PPC(|64)_ADDR24   label_abs
+-  90: (40 8a 00 00|00 00 8a 40)       bne     cr2,90 <start\+0x90>
+-                      90: R_PPC(|64)_REL14    foo
+-  94: (40 ca 00 00|00 00 ca 40)       bne-    cr2,94 <start\+0x94>
+-                      94: R_PPC(|64)_REL14    foo
+-  98: (40 ea 00 00|00 00 ea 40)       bne\+    cr2,98 <start\+0x98>
+-                      98: R_PPC(|64)_REL14    foo
+-  9c: (40 85 00 02|02 00 85 40)       blea    cr1,0 <start>
+-                      9c: R_PPC(|64)_ADDR14   foo_abs
+-  a0: (40 c5 00 02|02 00 c5 40)       blea-   cr1,0 <start>
+-                      a0: R_PPC(|64)_ADDR14   foo_abs
+-  a4: (40 e5 00 02|02 00 e5 40)       blea\+   cr1,0 <start>
+-                      a4: R_PPC(|64)_ADDR14   foo_abs
+-  a8: (4c 86 0c 20|20 0c 86 4c)       bcctr   4,4\*cr1\+eq,1
+-  ac: (4c c6 04 20|20 04 c6 4c)       bnectr- cr1
+-  b0: (4c e6 04 20|20 04 e6 4c)       bnectr\+ cr1
+-  b4: (4c 86 0c 21|21 0c 86 4c)       bcctrl  4,4\*cr1\+eq,1
+-  b8: (4c c6 04 21|21 04 c6 4c)       bnectrl- cr1
+-  bc: (4c e6 04 21|21 04 e6 4c)       bnectrl\+ cr1
+-  c0: (40 8a 00 01|01 00 8a 40)       bnel    cr2,c0 <start\+0xc0>
+-                      c0: R_PPC(|64)_REL14    foo
+-  c4: (40 ca 00 01|01 00 ca 40)       bnel-   cr2,c4 <start\+0xc4>
+-                      c4: R_PPC(|64)_REL14    foo
+-  c8: (40 ea 00 01|01 00 ea 40)       bnel\+   cr2,c8 <start\+0xc8>
+-                      c8: R_PPC(|64)_REL14    foo
+-  cc: (40 85 00 03|03 00 85 40)       blela   cr1,0 <start>
+-                      cc: R_PPC(|64)_ADDR14   foo_abs
+-  d0: (40 c5 00 03|03 00 c5 40)       blela-  cr1,0 <start>
+-                      d0: R_PPC(|64)_ADDR14   foo_abs
+-  d4: (40 e5 00 03|03 00 e5 40)       blela\+  cr1,0 <start>
+-                      d4: R_PPC(|64)_ADDR14   foo_abs
+-  d8: (4c 86 08 20|20 08 86 4c)       bclr    4,4\*cr1\+eq,1
+-  dc: (4c c6 00 20|20 00 c6 4c)       bnelr-  cr1
+-  e0: (4c e6 00 20|20 00 e6 4c)       bnelr\+  cr1
+-  e4: (4c 86 08 21|21 08 86 4c)       bclrl   4,4\*cr1\+eq,1
+-  e8: (4c c6 00 21|21 00 c6 4c)       bnelrl- cr1
+-  ec: (4c e6 00 21|21 00 e6 4c)       bnelrl\+ cr1
+-  f0: (48 00 00 00|00 00 00 48)       b       f0 <start\+0xf0>
+-                      f0: R_PPC(|64)_REL24    label
+-  f4: (48 00 00 03|03 00 00 48)       bla     0 <start>
+-                      f4: R_PPC(|64)_ADDR24   label_abs
+-  f8: (48 00 00 01|01 00 00 48)       bl      f8 <start\+0xf8>
+-                      f8: R_PPC(|64)_REL24    label
+-  fc: (7d 6a 61 f8|f8 61 6a 7d)       bpermd  r10,r11,r12
+- 100: (7c a7 40 00|00 40 a7 7c)       cmpd    cr1,r7,r8
+- 104: (7d 6a 63 f8|f8 63 6a 7d)       cmpb    r10,r11,r12
+- 108: (2c aa 00 0d|0d 00 aa 2c)       cmpdi   cr1,r10,13
+- 10c: (2c aa ff f3|f3 ff aa 2c)       cmpdi   cr1,r10,-13
+- 110: (7c a7 40 40|40 40 a7 7c)       cmpld   cr1,r7,r8
+- 114: (28 aa 00 64|64 00 aa 28)       cmpldi  cr1,r10,100
+- 118: (7e b4 00 75|75 00 b4 7e)       cntlzd\. r20,r21
+- 11c: (7e b4 00 74|74 00 b4 7e)       cntlzd  r20,r21
+- 120: (7e b4 00 35|35 00 b4 7e)       cntlzw\. r20,r21
+- 124: (7e b4 00 34|34 00 b4 7e)       cntlzw  r20,r21
+- 128: (4c 22 1a 02|02 1a 22 4c)       crand   gt,eq,so
+- 12c: (4c 22 19 02|02 19 22 4c)       crandc  gt,eq,so
+- 130: (4c 22 1a 42|42 1a 22 4c)       creqv   gt,eq,so
+- 134: (4c 22 19 c2|c2 19 22 4c)       crnand  gt,eq,so
+- 138: (4c 22 18 42|42 18 22 4c)       crnor   gt,eq,so
+- 13c: (4c 22 1b 82|82 1b 22 4c)       cror    gt,eq,so
+- 140: (4c 22 1b 42|42 1b 22 4c)       crorc   gt,eq,so
+- 144: (4c 22 19 82|82 19 22 4c)       crxor   gt,eq,so
+- 148: (7c 0a 5d ec|ec 5d 0a 7c)       dcba    r10,r11
+- 14c: (7c 0a 58 ac|ac 58 0a 7c)       dcbf    r10,r11
+- 150: (7c 2a 58 ac|ac 58 2a 7c)       dcbfl   r10,r11
+- 154: (7c 0a 58 fe|fe 58 0a 7c)       dcbfep  r10,r11
+- 158: (7c 0a 5b ac|ac 5b 0a 7c)       dcbi    r10,r11
+- 15c: (7c 0a 5b 0c|0c 5b 0a 7c)       dcblc   r10,r11
+- 160: (7c 2a 5b 0c|0c 5b 2a 7c)       dcblc   1,r10,r11
+- 164: (7c 0a 58 6c|6c 58 0a 7c)       dcbst   r10,r11
+- 168: (7c 0a 58 7e|7e 58 0a 7c)       dcbstep r10,r11
+- 16c: (7c 0a 5a 2c|2c 5a 0a 7c)       dcbt    r10,r11
+- 170: (7c 2a 5a 2c|2c 5a 2a 7c)       dcbt    1,r10,r11
+- 174: (7d 4b 62 7e|7e 62 4b 7d)       dcbtep  r10,r11,r12
+- 178: (7c 0a 59 4c|4c 59 0a 7c)       dcbtls  r10,r11
+- 17c: (7c 2a 59 4c|4c 59 2a 7c)       dcbtls  1,r10,r11
+- 180: (7c 0a 59 ec|ec 59 0a 7c)       dcbtst  r10,r11
+- 184: (7c 2a 59 ec|ec 59 2a 7c)       dcbtst  1,r10,r11
+- 188: (7d 4b 61 fe|fe 61 4b 7d)       dcbtstep r10,r11,r12
+- 18c: (7c 0a 59 0c|0c 59 0a 7c)       dcbtstls r10,r11
+- 190: (7c 2a 59 0c|0c 59 2a 7c)       dcbtstls 1,r10,r11
+- 194: (7c 0a 5f ec|ec 5f 0a 7c)       dcbz    r10,r11
+- 198: (7c 0a 5f fe|fe 5f 0a 7c)       dcbzep  r10,r11
+- 19c: (7c 00 03 8c|8c 03 00 7c)       dccci
+- 1a0: (7c 00 03 8c|8c 03 00 7c)       dccci
+- 1a4: (7c 00 03 8c|8c 03 00 7c)       dccci
+- 1a8: (7d 40 03 8c|8c 03 40 7d)       dci     10
+- 1ac: (7e 95 b3 d3|d3 b3 95 7e)       divd\.   r20,r21,r22
+- 1b0: (7e 95 b3 d2|d2 b3 95 7e)       divd    r20,r21,r22
+- 1b4: (7e 95 b7 d3|d3 b7 95 7e)       divdo\.  r20,r21,r22
+- 1b8: (7e 95 b7 d2|d2 b7 95 7e)       divdo   r20,r21,r22
+- 1bc: (7e 95 b3 93|93 b3 95 7e)       divdu\.  r20,r21,r22
+- 1c0: (7e 95 b3 92|92 b3 95 7e)       divdu   r20,r21,r22
+- 1c4: (7e 95 b7 93|93 b7 95 7e)       divduo\. r20,r21,r22
+- 1c8: (7e 95 b7 92|92 b7 95 7e)       divduo  r20,r21,r22
+- 1cc: (7e 95 b3 d7|d7 b3 95 7e)       divw\.   r20,r21,r22
+- 1d0: (7e 95 b3 d6|d6 b3 95 7e)       divw    r20,r21,r22
+- 1d4: (7e 95 b7 d7|d7 b7 95 7e)       divwo\.  r20,r21,r22
+- 1d8: (7e 95 b7 d6|d6 b7 95 7e)       divwo   r20,r21,r22
+- 1dc: (7e 95 b3 97|97 b3 95 7e)       divwu\.  r20,r21,r22
+- 1e0: (7e 95 b3 96|96 b3 95 7e)       divwu   r20,r21,r22
+- 1e4: (7e 95 b7 97|97 b7 95 7e)       divwuo\. r20,r21,r22
+- 1e8: (7e 95 b7 96|96 b7 95 7e)       divwuo  r20,r21,r22
+- 1ec: (7e b4 b2 39|39 b2 b4 7e)       eqv\.    r20,r21,r22
+- 1f0: (7e b4 b2 38|38 b2 b4 7e)       eqv     r20,r21,r22
+- 1f4: (7c 0a 58 66|66 58 0a 7c)       eratilx 0,r10,r11
+- 1f8: (7c 2a 58 66|66 58 2a 7c)       eratilx 1,r10,r11
+- 1fc: (7c ea 58 66|66 58 ea 7c)       eratilx 7,r10,r11
+- 200: (7d 4b 66 66|66 66 4b 7d)       erativax r10,r11,r12
+- 204: (7d 4b 01 66|66 01 4b 7d)       eratre  r10,r11,0
+- 208: (7d 4b 19 66|66 19 4b 7d)       eratre  r10,r11,3
+- 20c: (7d 4b 61 27|27 61 4b 7d)       eratsx\. r10,r11,r12
+- 210: (7d 4b 61 26|26 61 4b 7d)       eratsx  r10,r11,r12
+- 214: (7d 4b 01 a6|a6 01 4b 7d)       eratwe  r10,r11,0
+- 218: (7d 4b 19 a6|a6 19 4b 7d)       eratwe  r10,r11,3
+- 21c: (7d 6a 07 75|75 07 6a 7d)       extsb\.  r10,r11
+- 220: (7d 6a 07 74|74 07 6a 7d)       extsb   r10,r11
+- 224: (7d 6a 07 35|35 07 6a 7d)       extsh\.  r10,r11
+- 228: (7d 6a 07 34|34 07 6a 7d)       extsh   r10,r11
+- 22c: (7d 6a 07 b5|b5 07 6a 7d)       extsw\.  r10,r11
+- 230: (7d 6a 07 b4|b4 07 6a 7d)       extsw   r10,r11
+- 234: (fe 80 aa 11|11 aa 80 fe)       fabs\.   f20,f21
+- 238: (fe 80 aa 10|10 aa 80 fe)       fabs    f20,f21
+- 23c: (fe 95 b0 2b|2b b0 95 fe)       fadd\.   f20,f21,f22
+- 240: (fe 95 b0 2a|2a b0 95 fe)       fadd    f20,f21,f22
+- 244: (ee 95 b0 2b|2b b0 95 ee)       fadds\.  f20,f21,f22
+- 248: (ee 95 b0 2a|2a b0 95 ee)       fadds   f20,f21,f22
+- 24c: (fe 80 ae 9d|9d ae 80 fe)       fcfid\.  f20,f21
+- 250: (fe 80 ae 9c|9c ae 80 fe)       fcfid   f20,f21
+- 254: (fc 14 a8 40|40 a8 14 fc)       fcmpo   cr0,f20,f21
+- 258: (fc 94 a8 40|40 a8 94 fc)       fcmpo   cr1,f20,f21
+- 25c: (fc 14 a8 00|00 a8 14 fc)       fcmpu   cr0,f20,f21
+- 260: (fc 94 a8 00|00 a8 94 fc)       fcmpu   cr1,f20,f21
+- 264: (fe 95 b0 11|11 b0 95 fe)       fcpsgn\. f20,f21,f22
+- 268: (fe 95 b0 10|10 b0 95 fe)       fcpsgn  f20,f21,f22
+- 26c: (fe 80 ae 5d|5d ae 80 fe)       fctid\.  f20,f21
+- 270: (fe 80 ae 5c|5c ae 80 fe)       fctid   f20,f21
+- 274: (fe 80 ae 5f|5f ae 80 fe)       fctidz\. f20,f21
+- 278: (fe 80 ae 5e|5e ae 80 fe)       fctidz  f20,f21
+- 27c: (fe 80 a8 1d|1d a8 80 fe)       fctiw\.  f20,f21
+- 280: (fe 80 a8 1c|1c a8 80 fe)       fctiw   f20,f21
+- 284: (fe 80 a8 1f|1f a8 80 fe)       fctiwz\. f20,f21
+- 288: (fe 80 a8 1e|1e a8 80 fe)       fctiwz  f20,f21
+- 28c: (fe 95 b0 25|25 b0 95 fe)       fdiv\.   f20,f21,f22
+- 290: (fe 95 b0 24|24 b0 95 fe)       fdiv    f20,f21,f22
+- 294: (ee 95 b0 25|25 b0 95 ee)       fdivs\.  f20,f21,f22
+- 298: (ee 95 b0 24|24 b0 95 ee)       fdivs   f20,f21,f22
+- 29c: (fe 95 bd bb|bb bd 95 fe)       fmadd\.  f20,f21,f22,f23
+- 2a0: (fe 95 bd ba|ba bd 95 fe)       fmadd   f20,f21,f22,f23
+- 2a4: (ee 95 bd bb|bb bd 95 ee)       fmadds\. f20,f21,f22,f23
+- 2a8: (ee 95 bd ba|ba bd 95 ee)       fmadds  f20,f21,f22,f23
+- 2ac: (fe 80 a8 91|91 a8 80 fe)       fmr\.    f20,f21
+- 2b0: (fe 80 a8 90|90 a8 80 fe)       fmr     f20,f21
+- 2b4: (fe 95 bd b9|b9 bd 95 fe)       fmsub\.  f20,f21,f22,f23
+- 2b8: (fe 95 bd b8|b8 bd 95 fe)       fmsub   f20,f21,f22,f23
+- 2bc: (ee 95 bd b9|b9 bd 95 ee)       fmsubs\. f20,f21,f22,f23
+- 2c0: (ee 95 bd b8|b8 bd 95 ee)       fmsubs  f20,f21,f22,f23
+- 2c4: (fe 95 05 b3|b3 05 95 fe)       fmul\.   f20,f21,f22
+- 2c8: (fe 95 05 b2|b2 05 95 fe)       fmul    f20,f21,f22
+- 2cc: (ee 95 05 b3|b3 05 95 ee)       fmuls\.  f20,f21,f22
+- 2d0: (ee 95 05 b2|b2 05 95 ee)       fmuls   f20,f21,f22
+- 2d4: (fe 80 a9 11|11 a9 80 fe)       fnabs\.  f20,f21
+- 2d8: (fe 80 a9 10|10 a9 80 fe)       fnabs   f20,f21
+- 2dc: (fe 80 a8 51|51 a8 80 fe)       fneg\.   f20,f21
+- 2e0: (fe 80 a8 50|50 a8 80 fe)       fneg    f20,f21
+- 2e4: (fe 95 bd bf|bf bd 95 fe)       fnmadd\. f20,f21,f22,f23
+- 2e8: (fe 95 bd be|be bd 95 fe)       fnmadd  f20,f21,f22,f23
+- 2ec: (ee 95 bd bf|bf bd 95 ee)       fnmadds\. f20,f21,f22,f23
+- 2f0: (ee 95 bd be|be bd 95 ee)       fnmadds f20,f21,f22,f23
+- 2f4: (fe 95 bd bd|bd bd 95 fe)       fnmsub\. f20,f21,f22,f23
+- 2f8: (fe 95 bd bc|bc bd 95 fe)       fnmsub  f20,f21,f22,f23
+- 2fc: (ee 95 bd bd|bd bd 95 ee)       fnmsubs\. f20,f21,f22,f23
+- 300: (ee 95 bd bc|bc bd 95 ee)       fnmsubs f20,f21,f22,f23
+- 304: (fe 80 a8 31|31 a8 80 fe)       fre\.    f20,f21
+- 308: (fe 80 a8 30|30 a8 80 fe)       fre     f20,f21
+- 30c: (fe 80 a8 31|31 a8 80 fe)       fre\.    f20,f21
+- 310: (fe 80 a8 30|30 a8 80 fe)       fre     f20,f21
+- 314: (fe 81 a8 31|31 a8 81 fe)       fre\.    f20,f21,1
+- 318: (fe 81 a8 30|30 a8 81 fe)       fre     f20,f21,1
+- 31c: (ee 80 a8 31|31 a8 80 ee)       fres\.   f20,f21
+- 320: (ee 80 a8 30|30 a8 80 ee)       fres    f20,f21
+- 324: (ee 80 a8 31|31 a8 80 ee)       fres\.   f20,f21
+- 328: (ee 80 a8 30|30 a8 80 ee)       fres    f20,f21
+- 32c: (ee 81 a8 31|31 a8 81 ee)       fres\.   f20,f21,1
+- 330: (ee 81 a8 30|30 a8 81 ee)       fres    f20,f21,1
+- 334: (fe 80 ab d1|d1 ab 80 fe)       frim\.   f20,f21
+- 338: (fe 80 ab d0|d0 ab 80 fe)       frim    f20,f21
+- 33c: (fe 80 ab 11|11 ab 80 fe)       frin\.   f20,f21
+- 340: (fe 80 ab 10|10 ab 80 fe)       frin    f20,f21
+- 344: (fe 80 ab 91|91 ab 80 fe)       frip\.   f20,f21
+- 348: (fe 80 ab 90|90 ab 80 fe)       frip    f20,f21
+- 34c: (fe 80 ab 51|51 ab 80 fe)       friz\.   f20,f21
+- 350: (fe 80 ab 50|50 ab 80 fe)       friz    f20,f21
+- 354: (fe 80 a8 19|19 a8 80 fe)       frsp\.   f20,f21
+- 358: (fe 80 a8 18|18 a8 80 fe)       frsp    f20,f21
+- 35c: (fe 80 a8 35|35 a8 80 fe)       frsqrte\. f20,f21
+- 360: (fe 80 a8 34|34 a8 80 fe)       frsqrte f20,f21
+- 364: (fe 80 a8 35|35 a8 80 fe)       frsqrte\. f20,f21
+- 368: (fe 80 a8 34|34 a8 80 fe)       frsqrte f20,f21
+- 36c: (fe 81 a8 35|35 a8 81 fe)       frsqrte\. f20,f21,1
+- 370: (fe 81 a8 34|34 a8 81 fe)       frsqrte f20,f21,1
+- 374: (ee 80 a8 34|34 a8 80 ee)       frsqrtes f20,f21
+- 378: (ee 80 a8 35|35 a8 80 ee)       frsqrtes\. f20,f21
+- 37c: (ee 80 a8 34|34 a8 80 ee)       frsqrtes f20,f21
+- 380: (ee 80 a8 35|35 a8 80 ee)       frsqrtes\. f20,f21
+- 384: (ee 81 a8 34|34 a8 81 ee)       frsqrtes f20,f21,1
+- 388: (ee 81 a8 35|35 a8 81 ee)       frsqrtes\. f20,f21,1
+- 38c: (fe 95 bd af|af bd 95 fe)       fsel\.   f20,f21,f22,f23
+- 390: (fe 95 bd ae|ae bd 95 fe)       fsel    f20,f21,f22,f23
+- 394: (fe 80 a8 2d|2d a8 80 fe)       fsqrt\.  f20,f21
+- 398: (fe 80 a8 2c|2c a8 80 fe)       fsqrt   f20,f21
+- 39c: (ee 80 a8 2d|2d a8 80 ee)       fsqrts\. f20,f21
+- 3a0: (ee 80 a8 2c|2c a8 80 ee)       fsqrts  f20,f21
+- 3a4: (fe 95 b0 29|29 b0 95 fe)       fsub\.   f20,f21,f22
+- 3a8: (fe 95 b0 28|28 b0 95 fe)       fsub    f20,f21,f22
+- 3ac: (ee 95 b0 29|29 b0 95 ee)       fsubs\.  f20,f21,f22
+- 3b0: (ee 95 b0 28|28 b0 95 ee)       fsubs   f20,f21,f22
+- 3b4: (7c 0a 5f ac|ac 5f 0a 7c)       icbi    r10,r11
+- 3b8: (7c 0a 5f be|be 5f 0a 7c)       icbiep  r10,r11
+- 3bc: (7c 0a 58 2c|2c 58 0a 7c)       icbt    r10,r11
+- 3c0: (7c ea 58 2c|2c 58 ea 7c)       icbt    7,r10,r11
+- 3c4: (7c 0a 5b cc|cc 5b 0a 7c)       icbtls  r10,r11
+- 3c8: (7c ea 5b cc|cc 5b ea 7c)       icbtls  7,r10,r11
+- 3cc: (7c 00 07 8c|8c 07 00 7c)       iccci
+- 3d0: (7c 00 07 8c|8c 07 00 7c)       iccci
+- 3d4: (7c 00 07 8c|8c 07 00 7c)       iccci
+- 3d8: (7d 40 07 8c|8c 07 40 7d)       ici     10
+- 3dc: (7d 4b 63 2d|2d 63 4b 7d)       icswx\.  r10,r11,r12
+- 3e0: (7d 4b 63 2c|2c 63 4b 7d)       icswx   r10,r11,r12
+- 3e4: (7d 4b 65 de|de 65 4b 7d)       isel    r10,r11,r12,23
+- 3e8: (4c 00 01 2c|2c 01 00 4c)       isync
+- 3ec: (7d 4b 60 be|be 60 4b 7d)       lbepx   r10,r11,r12
+- 3f0: (89 4b ff ef|ef ff 4b 89)       lbz     r10,-17\(r11\)
+- 3f4: (89 4b 00 11|11 00 4b 89)       lbz     r10,17\(r11\)
+- 3f8: (8d 4b ff ff|ff ff 4b 8d)       lbzu    r10,-1\(r11\)
+- 3fc: (8d 4b 00 01|01 00 4b 8d)       lbzu    r10,1\(r11\)
+- 400: (7d 4b 68 ee|ee 68 4b 7d)       lbzux   r10,r11,r13
+- 404: (7d 4b 68 ae|ae 68 4b 7d)       lbzx    r10,r11,r13
+- 408: (e9 4b ff f8|f8 ff 4b e9)       ld      r10,-8\(r11\)
+- 40c: (e9 4b 00 08|08 00 4b e9)       ld      r10,8\(r11\)
+- 410: (7d 4b 60 a8|a8 60 4b 7d)       ldarx   r10,r11,r12
+- 414: (7d 4b 60 a9|a9 60 4b 7d)       ldarx   r10,r11,r12,1
+- 418: (7d 4b 64 28|28 64 4b 7d)       ldbrx   r10,r11,r12
+- 41c: (7d 4b 60 3a|3a 60 4b 7d)       ldepx   r10,r11,r12
+- 420: (e9 4b ff f9|f9 ff 4b e9)       ldu     r10,-8\(r11\)
+- 424: (e9 4b 00 09|09 00 4b e9)       ldu     r10,8\(r11\)
+- 428: (7d 4b 60 6a|6a 60 4b 7d)       ldux    r10,r11,r12
+- 42c: (7d 4b 60 2a|2a 60 4b 7d)       ldx     r10,r11,r12
+- 430: (ca 8a ff f8|f8 ff 8a ca)       lfd     f20,-8\(r10\)
+- 434: (ca 8a 00 08|08 00 8a ca)       lfd     f20,8\(r10\)
+- 438: (7e 8a 5c be|be 5c 8a 7e)       lfdepx  f20,r10,r11
+- 43c: (ce 8a ff f8|f8 ff 8a ce)       lfdu    f20,-8\(r10\)
+- 440: (ce 8a 00 08|08 00 8a ce)       lfdu    f20,8\(r10\)
+- 444: (7e 8a 5c ee|ee 5c 8a 7e)       lfdux   f20,r10,r11
+- 448: (7e 8a 5c ae|ae 5c 8a 7e)       lfdx    f20,r10,r11
+- 44c: (7e 8a 5e ae|ae 5e 8a 7e)       lfiwax  f20,r10,r11
+- 450: (7e 8a 5e ee|ee 5e 8a 7e)       lfiwzx  f20,r10,r11
+- 454: (c2 8a ff fc|fc ff 8a c2)       lfs     f20,-4\(r10\)
+- 458: (c2 8a 00 04|04 00 8a c2)       lfs     f20,4\(r10\)
+- 45c: (c6 8a ff fc|fc ff 8a c6)       lfsu    f20,-4\(r10\)
+- 460: (c6 8a 00 04|04 00 8a c6)       lfsu    f20,4\(r10\)
+- 464: (7e 8a 5c 6e|6e 5c 8a 7e)       lfsux   f20,r10,r11
+- 468: (7e 8a 5c 2e|2e 5c 8a 7e)       lfsx    f20,r10,r11
+- 46c: (a9 4b 00 02|02 00 4b a9)       lha     r10,2\(r11\)
+- 470: (ad 4b ff fe|fe ff 4b ad)       lhau    r10,-2\(r11\)
+- 474: (7d 4b 62 ee|ee 62 4b 7d)       lhaux   r10,r11,r12
+- 478: (7d 4b 62 ae|ae 62 4b 7d)       lhax    r10,r11,r12
+- 47c: (7d 4b 66 2c|2c 66 4b 7d)       lhbrx   r10,r11,r12
+- 480: (7d 4b 62 3e|3e 62 4b 7d)       lhepx   r10,r11,r12
+- 484: (a1 4b ff fe|fe ff 4b a1)       lhz     r10,-2\(r11\)
+- 488: (a1 4b 00 02|02 00 4b a1)       lhz     r10,2\(r11\)
+- 48c: (a5 4b ff fe|fe ff 4b a5)       lhzu    r10,-2\(r11\)
+- 490: (a5 4b 00 02|02 00 4b a5)       lhzu    r10,2\(r11\)
+- 494: (7d 4b 62 6e|6e 62 4b 7d)       lhzux   r10,r11,r12
+- 498: (7d 4b 62 2e|2e 62 4b 7d)       lhzx    r10,r11,r12
+- 49c: (ba 8a 00 10|10 00 8a ba)       lmw     r20,16\(r10\)
+- 4a0: (7d 4b 0c aa|aa 0c 4b 7d)       lswi    r10,r11,1
+- 4a4: (7d 8b 04 aa|aa 04 8b 7d)       lswi    r12,r11,32
+- 4a8: (7d 4b 64 2a|2a 64 4b 7d)       lswx    r10,r11,r12
+- 4ac: (e9 4b ff fe|fe ff 4b e9)       lwa     r10,-4\(r11\)
+- 4b0: (e9 4b 00 06|06 00 4b e9)       lwa     r10,4\(r11\)
+- 4b4: (7d 4b 60 28|28 60 4b 7d)       lwarx   r10,r11,r12
+- 4b8: (7d 4b 60 29|29 60 4b 7d)       lwarx   r10,r11,r12,1
+- 4bc: (7d 4b 62 ea|ea 62 4b 7d)       lwaux   r10,r11,r12
+- 4c0: (7d 4b 62 aa|aa 62 4b 7d)       lwax    r10,r11,r12
+- 4c4: (7d 4b 64 2c|2c 64 4b 7d)       lwbrx   r10,r11,r12
+- 4c8: (7d 4b 60 3e|3e 60 4b 7d)       lwepx   r10,r11,r12
+- 4cc: (81 4b ff fc|fc ff 4b 81)       lwz     r10,-4\(r11\)
+- 4d0: (81 4b 00 04|04 00 4b 81)       lwz     r10,4\(r11\)
+- 4d4: (85 4b ff fc|fc ff 4b 85)       lwzu    r10,-4\(r11\)
+- 4d8: (85 4b 00 04|04 00 4b 85)       lwzu    r10,4\(r11\)
+- 4dc: (7d 4b 60 6e|6e 60 4b 7d)       lwzux   r10,r11,r12
+- 4e0: (7d 4b 60 2e|2e 60 4b 7d)       lwzx    r10,r11,r12
+- 4e4: (7c 00 06 ac|ac 06 00 7c)       mbar
+- 4e8: (7c 00 06 ac|ac 06 00 7c)       mbar
+- 4ec: (7c 00 06 ac|ac 06 00 7c)       mbar
+- 4f0: (7c 20 06 ac|ac 06 20 7c)       mbar    1
+- 4f4: (4c 04 00 00|00 00 04 4c)       mcrf    cr0,cr1
+- 4f8: (fd 90 00 80|80 00 90 fd)       mcrfs   cr3,cr4
+- 4fc: (7c 00 04 00|00 04 00 7c)       mcrxr   cr0
+- 500: (7d 80 04 00|00 04 80 7d)       mcrxr   cr3
+- 504: (7c 60 00 26|26 00 60 7c)       mfcr    r3
+- 508: (7c 70 20 26|26 20 70 7c)       mfocrf  r3,2
+- 50c: (7c 70 10 26|26 10 70 7c)       mfocrf  r3,1
+- 510: (7c 78 00 26|26 00 78 7c)       mfocrf  r3,128
+- 514: (7d 4a 3a 87|87 3a 4a 7d)       mfdcr\.  r10,234
+- 518: (7d 4a 3a 86|86 3a 4a 7d)       mfdcr   r10,234
+- 51c: (7d 4b 02 07|07 02 4b 7d)       mfdcrx\. r10,r11
+- 520: (7d 4b 02 06|06 02 4b 7d)       mfdcrx  r10,r11
+- 524: (fe 80 04 8f|8f 04 80 fe)       mffs\.   f20
+- 528: (fe 80 04 8e|8e 04 80 fe)       mffs    f20
+- 52c: (7d 40 00 a6|a6 00 40 7d)       mfmsr   r10
+- 530: (7c 70 10 26|26 10 70 7c)       mfocrf  r3,1
+- 534: (7c 78 00 26|26 00 78 7c)       mfocrf  r3,128
+- 538: (7d 4a 3a a6|a6 3a 4a 7d)       mfspr   r10,234
+- 53c: (7d 4c 42 a6|a6 42 4c 7d)       mftb    r10
+- 540: (7d 4d 42 a6|a6 42 4d 7d)       mftbu   r10
+- 544: (7c 00 51 dc|dc 51 00 7c)       msgclr  r10
+- 548: (7c 00 51 9c|9c 51 00 7c)       msgsnd  r10
+- 54c: (7c 60 01 20|20 01 60 7c)       mtcrf   0,r3
+- 550: (7c 70 11 20|20 11 70 7c)       mtocrf  1,r3
+- 554: (7c 78 01 20|20 01 78 7c)       mtocrf  128,r3
+- 558: (7c 6f f1 20|20 f1 6f 7c)       mtcr    r3
+- 55c: (7d 4a 3b 87|87 3b 4a 7d)       mtdcr\.  234,r10
+- 560: (7d 4a 3b 86|86 3b 4a 7d)       mtdcr   234,r10
+- 564: (7d 6a 03 07|07 03 6a 7d)       mtdcrx\. r10,r11
+- 568: (7d 6a 03 06|06 03 6a 7d)       mtdcrx  r10,r11
+- 56c: (fc 60 00 8d|8d 00 60 fc)       mtfsb0\. 3
+- 570: (fc 60 00 8c|8c 00 60 fc)       mtfsb0  3
+- 574: (fc 60 00 4d|4d 00 60 fc)       mtfsb1\. 3
+- 578: (fc 60 00 4c|4c 00 60 fc)       mtfsb1  3
+- 57c: (fc 0c a5 8f|8f a5 0c fc)       mtfsf\.  6,f20
+- 580: (fc 0c a5 8e|8e a5 0c fc)       mtfsf   6,f20
+- 584: (fc 0c a5 8f|8f a5 0c fc)       mtfsf\.  6,f20
+- 588: (fc 0c a5 8e|8e a5 0c fc)       mtfsf   6,f20
+- 58c: (fe 0d a5 8f|8f a5 0d fe)       mtfsf\.  6,f20,1,1
+- 590: (fe 0d a5 8e|8e a5 0d fe)       mtfsf   6,f20,1,1
+- 594: (ff 00 01 0d|0d 01 00 ff)       mtfsfi\. 6,0
+- 598: (ff 00 01 0c|0c 01 00 ff)       mtfsfi  6,0
+- 59c: (ff 00 d1 0d|0d d1 00 ff)       mtfsfi\. 6,13
+- 5a0: (ff 00 d1 0c|0c d1 00 ff)       mtfsfi  6,13
+- 5a4: (ff 01 d1 0d|0d d1 01 ff)       mtfsfi\. 6,13,1
+- 5a8: (ff 01 d1 0c|0c d1 01 ff)       mtfsfi  6,13,1
+- 5ac: (7d 40 01 24|24 01 40 7d)       mtmsr   r10
+- 5b0: (7d 40 01 24|24 01 40 7d)       mtmsr   r10
+- 5b4: (7d 41 01 24|24 01 41 7d)       mtmsr   r10,1
+- 5b8: (7c 70 11 20|20 11 70 7c)       mtocrf  1,r3
+- 5bc: (7c 78 01 20|20 01 78 7c)       mtocrf  128,r3
+- 5c0: (7d 4a 3b a6|a6 3b 4a 7d)       mtspr   234,r10
+- 5c4: (7e 95 b0 93|93 b0 95 7e)       mulhd\.  r20,r21,r22
+- 5c8: (7e 95 b0 92|92 b0 95 7e)       mulhd   r20,r21,r22
+- 5cc: (7e 95 b0 13|13 b0 95 7e)       mulhdu\. r20,r21,r22
+- 5d0: (7e 95 b0 12|12 b0 95 7e)       mulhdu  r20,r21,r22
+- 5d4: (7e 95 b0 97|97 b0 95 7e)       mulhw\.  r20,r21,r22
+- 5d8: (7e 95 b0 96|96 b0 95 7e)       mulhw   r20,r21,r22
+- 5dc: (7e 95 b0 17|17 b0 95 7e)       mulhwu\. r20,r21,r22
+- 5e0: (7e 95 b0 16|16 b0 95 7e)       mulhwu  r20,r21,r22
+- 5e4: (7e 95 b1 d3|d3 b1 95 7e)       mulld\.  r20,r21,r22
+- 5e8: (7e 95 b1 d2|d2 b1 95 7e)       mulld   r20,r21,r22
+- 5ec: (7e 95 b5 d3|d3 b5 95 7e)       mulldo\. r20,r21,r22
+- 5f0: (7e 95 b5 d2|d2 b5 95 7e)       mulldo  r20,r21,r22
+- 5f4: (1e 95 00 64|64 00 95 1e)       mulli   r20,r21,100
+- 5f8: (1e 95 ff 9c|9c ff 95 1e)       mulli   r20,r21,-100
+- 5fc: (7e 95 b1 d7|d7 b1 95 7e)       mullw\.  r20,r21,r22
+- 600: (7e 95 b1 d6|d6 b1 95 7e)       mullw   r20,r21,r22
+- 604: (7e 95 b5 d7|d7 b5 95 7e)       mullwo\. r20,r21,r22
+- 608: (7e 95 b5 d6|d6 b5 95 7e)       mullwo  r20,r21,r22
+- 60c: (7e b4 b3 b9|b9 b3 b4 7e)       nand\.   r20,r21,r22
+- 610: (7e b4 b3 b8|b8 b3 b4 7e)       nand    r20,r21,r22
+- 614: (7e 95 00 d1|d1 00 95 7e)       neg\.    r20,r21
+- 618: (7e 95 00 d0|d0 00 95 7e)       neg     r20,r21
+- 61c: (7e 95 04 d1|d1 04 95 7e)       nego\.   r20,r21
+- 620: (7e 95 04 d0|d0 04 95 7e)       nego    r20,r21
+- 624: (7e b4 b0 f9|f9 b0 b4 7e)       nor\.    r20,r21,r22
+- 628: (7e b4 b0 f8|f8 b0 b4 7e)       nor     r20,r21,r22
+- 62c: (7e b4 b3 79|79 b3 b4 7e)       or\.     r20,r21,r22
+- 630: (7e b4 b3 78|78 b3 b4 7e)       or      r20,r21,r22
+- 634: (7e b4 b3 39|39 b3 b4 7e)       orc\.    r20,r21,r22
+- 638: (7e b4 b3 38|38 b3 b4 7e)       orc     r20,r21,r22
+- 63c: (62 b4 10 00|00 10 b4 62)       ori     r20,r21,4096
+- 640: (66 b4 10 00|00 10 b4 66)       oris    r20,r21,4096
+- 644: (7d 6a 00 f4|f4 00 6a 7d)       popcntb r10,r11
+- 648: (7d 6a 03 f4|f4 03 6a 7d)       popcntd r10,r11
+- 64c: (7d 6a 02 f4|f4 02 6a 7d)       popcntw r10,r11
+- 650: (7d 6a 01 74|74 01 6a 7d)       prtyd   r10,r11
+- 654: (7d 6a 01 34|34 01 6a 7d)       prtyw   r10,r11
+- 658: (4c 00 00 66|66 00 00 4c)       rfci
+- 65c: (4c 00 00 cc|cc 00 00 4c)       rfgi
+- 660: (4c 00 00 64|64 00 00 4c)       rfi
+- 664: (4c 00 00 4c|4c 00 00 4c)       rfmci
+- 668: (79 6a 67 f1|f1 67 6a 79)       rldcl\.  r10,r11,r12,63
+- 66c: (79 6a 67 f0|f0 67 6a 79)       rldcl   r10,r11,r12,63
+- 670: (79 6a 67 f3|f3 67 6a 79)       rldcr\.  r10,r11,r12,63
+- 674: (79 6a 67 f2|f2 67 6a 79)       rldcr   r10,r11,r12,63
+- 678: (79 6a bf e9|e9 bf 6a 79)       rldic\.  r10,r11,23,63
+- 67c: (79 6a bf e8|e8 bf 6a 79)       rldic   r10,r11,23,63
+- 680: (79 6a bf e1|e1 bf 6a 79)       rldicl\. r10,r11,23,63
+- 684: (79 6a bf e0|e0 bf 6a 79)       rldicl  r10,r11,23,63
+- 688: (79 6a bf e5|e5 bf 6a 79)       rldicr\. r10,r11,23,63
+- 68c: (79 6a bf e4|e4 bf 6a 79)       rldicr  r10,r11,23,63
+- 690: (79 6a bf ed|ed bf 6a 79)       rldimi\. r10,r11,23,63
+- 694: (79 6a bf ec|ec bf 6a 79)       rldimi  r10,r11,23,63
+- 698: (51 6a b8 3f|3f b8 6a 51)       rlwimi\. r10,r11,23,0,31
+- 69c: (51 6a b8 3e|3e b8 6a 51)       rlwimi  r10,r11,23,0,31
+- 6a0: (55 6a b8 3f|3f b8 6a 55)       rotlwi\. r10,r11,23
+- 6a4: (55 6a b8 3e|3e b8 6a 55)       rotlwi  r10,r11,23
+- 6a8: (5d 6a b8 3f|3f b8 6a 5d)       rotlw\.  r10,r11,r23
+- 6ac: (5d 6a b8 3e|3e b8 6a 5d)       rotlw   r10,r11,r23
+- 6b0: (44 00 00 02|02 00 00 44)       sc
+- 6b4: (44 00 0c 82|82 0c 00 44)       sc      100
+- 6b8: (7d 6a 60 37|37 60 6a 7d)       sld\.    r10,r11,r12
+- 6bc: (7d 6a 60 36|36 60 6a 7d)       sld     r10,r11,r12
+- 6c0: (7d 6a 60 31|31 60 6a 7d)       slw\.    r10,r11,r12
+- 6c4: (7d 6a 60 30|30 60 6a 7d)       slw     r10,r11,r12
+- 6c8: (7d 6a 66 35|35 66 6a 7d)       srad\.   r10,r11,r12
+- 6cc: (7d 6a 66 34|34 66 6a 7d)       srad    r10,r11,r12
+- 6d0: (7d 6a fe 77|77 fe 6a 7d)       sradi\.  r10,r11,63
+- 6d4: (7d 6a fe 76|76 fe 6a 7d)       sradi   r10,r11,63
+- 6d8: (7d 6a 66 31|31 66 6a 7d)       sraw\.   r10,r11,r12
+- 6dc: (7d 6a 66 30|30 66 6a 7d)       sraw    r10,r11,r12
+- 6e0: (7d 6a fe 71|71 fe 6a 7d)       srawi\.  r10,r11,31
+- 6e4: (7d 6a fe 70|70 fe 6a 7d)       srawi   r10,r11,31
+- 6e8: (7d 6a 64 37|37 64 6a 7d)       srd\.    r10,r11,r12
+- 6ec: (7d 6a 64 36|36 64 6a 7d)       srd     r10,r11,r12
+- 6f0: (7d 6a 64 31|31 64 6a 7d)       srw\.    r10,r11,r12
+- 6f4: (7d 6a 64 30|30 64 6a 7d)       srw     r10,r11,r12
+- 6f8: (99 4b ff ff|ff ff 4b 99)       stb     r10,-1\(r11\)
+- 6fc: (99 4b 00 01|01 00 4b 99)       stb     r10,1\(r11\)
+- 700: (7d 4b 61 be|be 61 4b 7d)       stbepx  r10,r11,r12
+- 704: (9d 4b ff ff|ff ff 4b 9d)       stbu    r10,-1\(r11\)
+- 708: (9d 4b 00 01|01 00 4b 9d)       stbu    r10,1\(r11\)
+- 70c: (7d 4b 61 ee|ee 61 4b 7d)       stbux   r10,r11,r12
+- 710: (7d 4b 61 ae|ae 61 4b 7d)       stbx    r10,r11,r12
+- 714: (f9 4b ff f8|f8 ff 4b f9)       std     r10,-8\(r11\)
+- 718: (f9 4b 00 08|08 00 4b f9)       std     r10,8\(r11\)
+- 71c: (7d 4b 65 28|28 65 4b 7d)       stdbrx  r10,r11,r12
+- 720: (7d 4b 61 ad|ad 61 4b 7d)       stdcx\.  r10,r11,r12
+- 724: (7d 4b 61 3a|3a 61 4b 7d)       stdepx  r10,r11,r12
+- 728: (f9 4b ff f9|f9 ff 4b f9)       stdu    r10,-8\(r11\)
+- 72c: (f9 4b 00 09|09 00 4b f9)       stdu    r10,8\(r11\)
+- 730: (7d 4b 61 6a|6a 61 4b 7d)       stdux   r10,r11,r12
+- 734: (7d 4b 61 2a|2a 61 4b 7d)       stdx    r10,r11,r12
+- 738: (da 8a ff f8|f8 ff 8a da)       stfd    f20,-8\(r10\)
+- 73c: (da 8a 00 08|08 00 8a da)       stfd    f20,8\(r10\)
+- 740: (7e 8a 5d be|be 5d 8a 7e)       stfdepx f20,r10,r11
+- 744: (de 8a ff f8|f8 ff 8a de)       stfdu   f20,-8\(r10\)
+- 748: (de 8a 00 08|08 00 8a de)       stfdu   f20,8\(r10\)
+- 74c: (7e 8a 5d ee|ee 5d 8a 7e)       stfdux  f20,r10,r11
+- 750: (7e 8a 5d ae|ae 5d 8a 7e)       stfdx   f20,r10,r11
+- 754: (7e 8a 5f ae|ae 5f 8a 7e)       stfiwx  f20,r10,r11
+- 758: (d2 8a ff fc|fc ff 8a d2)       stfs    f20,-4\(r10\)
+- 75c: (d2 8a 00 04|04 00 8a d2)       stfs    f20,4\(r10\)
+- 760: (d6 8a ff fc|fc ff 8a d6)       stfsu   f20,-4\(r10\)
+- 764: (d6 8a 00 04|04 00 8a d6)       stfsu   f20,4\(r10\)
+- 768: (7e 8a 5d 6e|6e 5d 8a 7e)       stfsux  f20,r10,r11
+- 76c: (7e 8a 5d 2e|2e 5d 8a 7e)       stfsx   f20,r10,r11
+- 770: (b1 4b ff fe|fe ff 4b b1)       sth     r10,-2\(r11\)
+- 774: (b1 4b 00 02|02 00 4b b1)       sth     r10,2\(r11\)
+- 778: (b1 4b ff fc|fc ff 4b b1)       sth     r10,-4\(r11\)
+- 77c: (b1 4b 00 04|04 00 4b b1)       sth     r10,4\(r11\)
+- 780: (7d 4b 67 2c|2c 67 4b 7d)       sthbrx  r10,r11,r12
+- 784: (7d 4b 63 3e|3e 63 4b 7d)       sthepx  r10,r11,r12
+- 788: (b5 4b ff fe|fe ff 4b b5)       sthu    r10,-2\(r11\)
+- 78c: (b5 4b 00 02|02 00 4b b5)       sthu    r10,2\(r11\)
+- 790: (7d 4b 63 6e|6e 63 4b 7d)       sthux   r10,r11,r12
+- 794: (7d 4b 63 2e|2e 63 4b 7d)       sthx    r10,r11,r12
+- 798: (be 8a 00 10|10 00 8a be)       stmw    r20,16\(r10\)
+- 79c: (7d 4b 0d aa|aa 0d 4b 7d)       stswi   r10,r11,1
+- 7a0: (7d 4b 05 aa|aa 05 4b 7d)       stswi   r10,r11,32
+- 7a4: (7d 4b 65 2a|2a 65 4b 7d)       stswx   r10,r11,r12
+- 7a8: (7d 4b 65 2c|2c 65 4b 7d)       stwbrx  r10,r11,r12
+- 7ac: (7d 4b 61 2d|2d 61 4b 7d)       stwcx\.  r10,r11,r12
+- 7b0: (7d 4b 61 3e|3e 61 4b 7d)       stwepx  r10,r11,r12
+- 7b4: (95 4b ff fc|fc ff 4b 95)       stwu    r10,-4\(r11\)
+- 7b8: (95 4b 00 04|04 00 4b 95)       stwu    r10,4\(r11\)
+- 7bc: (7d 4b 61 6e|6e 61 4b 7d)       stwux   r10,r11,r12
+- 7c0: (7d 4b 61 2e|2e 61 4b 7d)       stwx    r10,r11,r12
+- 7c4: (7e 95 b0 51|51 b0 95 7e)       subf\.   r20,r21,r22
+- 7c8: (7e 95 b0 50|50 b0 95 7e)       subf    r20,r21,r22
+- 7cc: (7e 95 b0 11|11 b0 95 7e)       subfc\.  r20,r21,r22
+- 7d0: (7e 95 b0 10|10 b0 95 7e)       subfc   r20,r21,r22
+- 7d4: (7e 95 b4 11|11 b4 95 7e)       subfco\. r20,r21,r22
+- 7d8: (7e 95 b4 10|10 b4 95 7e)       subfco  r20,r21,r22
+- 7dc: (7e 95 b1 11|11 b1 95 7e)       subfe\.  r20,r21,r22
+- 7e0: (7e 95 b1 10|10 b1 95 7e)       subfe   r20,r21,r22
+- 7e4: (7e 95 b5 11|11 b5 95 7e)       subfeo\. r20,r21,r22
+- 7e8: (7e 95 b5 10|10 b5 95 7e)       subfeo  r20,r21,r22
+- 7ec: (22 95 00 64|64 00 95 22)       subfic  r20,r21,100
+- 7f0: (22 95 ff 9c|9c ff 95 22)       subfic  r20,r21,-100
+- 7f4: (7e 95 01 d1|d1 01 95 7e)       subfme\. r20,r21
+- 7f8: (7e 95 01 d0|d0 01 95 7e)       subfme  r20,r21
+- 7fc: (7e 95 05 d1|d1 05 95 7e)       subfmeo\. r20,r21
+- 800: (7e 95 05 d0|d0 05 95 7e)       subfmeo r20,r21
+- 804: (7e 95 b4 51|51 b4 95 7e)       subfo\.  r20,r21,r22
+- 808: (7e 95 b4 50|50 b4 95 7e)       subfo   r20,r21,r22
+- 80c: (7e 95 01 91|91 01 95 7e)       subfze\. r20,r21
+- 810: (7e 95 01 90|90 01 95 7e)       subfze  r20,r21
+- 814: (7e 95 05 91|91 05 95 7e)       subfzeo\. r20,r21
+- 818: (7e 95 05 90|90 05 95 7e)       subfzeo r20,r21
+- 81c: (7c 00 04 ac|ac 04 00 7c)       hwsync
+- 820: (7c 00 04 ac|ac 04 00 7c)       hwsync
+- 824: (7c 00 04 ac|ac 04 00 7c)       hwsync
+- 828: (7c 20 04 ac|ac 04 20 7c)       lwsync
+- 82c: (7c aa 58 88|88 58 aa 7c)       tdlge   r10,r11
+- 830: (08 aa 00 64|64 00 aa 08)       tdlgei  r10,100
+- 834: (08 aa ff 9c|9c ff aa 08)       tdlgei  r10,-100
+- 838: (7c 6a 58 24|24 58 6a 7c)       tlbilxva r10,r11
+- 83c: (7c 0a 5e 24|24 5e 0a 7c)       tlbivax r10,r11
+- 840: (7c 00 07 64|64 07 00 7c)       tlbre
+- 844: (7d 4b 3f 64|64 3f 4b 7d)       tlbre   r10,r11,7
+- 848: (7c 0a 5e a5|a5 5e 0a 7c)       tlbsrx\. r10,r11
+- 84c: (7d 4b 67 25|25 67 4b 7d)       tlbsx\.  r10,r11,r12
+- 850: (7d 4b 67 24|24 67 4b 7d)       tlbsx   r10,r11,r12
+- 854: (7c 00 04 6c|6c 04 00 7c)       tlbsync
+- 858: (7c 00 07 a4|a4 07 00 7c)       tlbwe
+- 85c: (7d 4b 3f a4|a4 3f 4b 7d)       tlbwe   r10,r11,7
+- 860: (7c aa 58 08|08 58 aa 7c)       twlge   r10,r11
+- 864: (0c aa 00 64|64 00 aa 0c)       twlgei  r10,100
+- 868: (0c aa ff 9c|9c ff aa 0c)       twlgei  r10,-100
+- 86c: (7c 00 00 7c|7c 00 00 7c)       wait
+- 870: (7c 00 00 7c|7c 00 00 7c)       wait
+- 874: (7c 20 00 7c|7c 00 20 7c)       waitrsv
+- 878: (7c 40 00 7c|7c 00 40 7c)       waitimpl
+- 87c: (7c 40 00 7c|7c 00 40 7c)       waitimpl
+- 880: (7c 20 00 7c|7c 00 20 7c)       waitrsv
+- 884: (7c 00 01 6c|6c 01 00 7c)       wchkall
+- 888: (7c 00 01 6c|6c 01 00 7c)       wchkall
+- 88c: (7d 80 01 6c|6c 01 80 7d)       wchkall cr3
+- 890: (7c 2a 5f 4c|4c 5f 2a 7c)       wclr    1,r10,r11
+- 894: (7c 20 07 4c|4c 07 20 7c)       wclrall 1
+- 898: (7c 4a 5f 4c|4c 5f 4a 7c)       wclrone r10,r11
+- 89c: (7d 40 01 06|06 01 40 7d)       wrtee   r10
+- 8a0: (7c 00 81 46|46 81 00 7c)       wrteei  1
+- 8a4: (7d 6a 62 79|79 62 6a 7d)       xor\.    r10,r11,r12
+- 8a8: (7d 6a 62 78|78 62 6a 7d)       xor     r10,r11,r12
+- 8ac: (69 6a 10 00|00 10 6a 69)       xori    r10,r11,4096
+- 8b0: (6d 6a 10 00|00 10 6a 6d)       xoris   r10,r11,4096
++.*:   (7c 85 32 15|15 32 85 7c)       add\.    r4,r5,r6
++.*:   (7c 85 32 14|14 32 85 7c)       add     r4,r5,r6
++.*:   (7c 85 30 15|15 30 85 7c)       addc\.   r4,r5,r6
++.*:   (7c 85 30 14|14 30 85 7c)       addc    r4,r5,r6
++.*:   (7c 85 34 15|15 34 85 7c)       addco\.  r4,r5,r6
++.*:   (7c 85 34 14|14 34 85 7c)       addco   r4,r5,r6
++.*:   (7c 85 31 15|15 31 85 7c)       adde\.   r4,r5,r6
++.*:   (7c 85 31 14|14 31 85 7c)       adde    r4,r5,r6
++.*:   (7c 85 35 15|15 35 85 7c)       addeo\.  r4,r5,r6
++.*:   (7c 85 35 14|14 35 85 7c)       addeo   r4,r5,r6
++.*:   (38 85 00 0d|0d 00 85 38)       addi    r4,r5,13
++.*:   (38 85 ff f3|f3 ff 85 38)       addi    r4,r5,-13
++.*:   (34 85 00 0d|0d 00 85 34)       addic\.  r4,r5,13
++.*:   (34 85 ff f3|f3 ff 85 34)       addic\.  r4,r5,-13
++.*:   (30 85 00 0d|0d 00 85 30)       addic   r4,r5,13
++.*:   (30 85 ff f3|f3 ff 85 30)       addic   r4,r5,-13
++.*:   (3c 85 00 17|17 00 85 3c)       addis   r4,r5,23
++.*:   (3c 85 ff e9|e9 ff 85 3c)       addis   r4,r5,-23
++.*:   (7c 85 01 d5|d5 01 85 7c)       addme\.  r4,r5
++.*:   (7c 85 01 d4|d4 01 85 7c)       addme   r4,r5
++.*:   (7c 85 05 d5|d5 05 85 7c)       addmeo\. r4,r5
++.*:   (7c 85 05 d4|d4 05 85 7c)       addmeo  r4,r5
++.*:   (7c 85 36 15|15 36 85 7c)       addo\.   r4,r5,r6
++.*:   (7c 85 36 14|14 36 85 7c)       addo    r4,r5,r6
++.*:   (7c 85 01 95|95 01 85 7c)       addze\.  r4,r5
++.*:   (7c 85 01 94|94 01 85 7c)       addze   r4,r5
++.*:   (7c 85 05 95|95 05 85 7c)       addzeo\. r4,r5
++.*:   (7c 85 05 94|94 05 85 7c)       addzeo  r4,r5
++.*:   (7c a4 30 39|39 30 a4 7c)       and\.    r4,r5,r6
++.*:   (7c a4 30 38|38 30 a4 7c)       and     r4,r5,r6
++.*:   (7c a4 30 79|79 30 a4 7c)       andc\.   r4,r5,r6
++.*:   (7c a4 30 78|78 30 a4 7c)       andc    r4,r5,r6
++.*:   (70 a4 00 06|06 00 a4 70)       andi\.   r4,r5,6
++.*:   (74 a4 00 06|06 00 a4 74)       andis\.  r4,r5,6
++.*:   (00 00 02 00|00 02 00 00)       attn
++.*:   (48 00 00 02|02 00 00 48)       ba      0 <start>
++.*: R_PPC(|64)_ADDR24 label_abs
++.*:   (40 8a 00 00|00 00 8a 40)       bne     cr2,90 <start\+0x90>
++.*: R_PPC(|64)_REL14  foo
++.*:   (40 ca 00 00|00 00 ca 40)       bne-    cr2,94 <start\+0x94>
++.*: R_PPC(|64)_REL14  foo
++.*:   (40 ea 00 00|00 00 ea 40)       bne\+    cr2,98 <start\+0x98>
++.*: R_PPC(|64)_REL14  foo
++.*:   (40 85 00 02|02 00 85 40)       blea    cr1,0 <start>
++.*: R_PPC(|64)_ADDR14 foo_abs
++.*:   (40 c5 00 02|02 00 c5 40)       blea-   cr1,0 <start>
++.*: R_PPC(|64)_ADDR14 foo_abs
++.*:   (40 e5 00 02|02 00 e5 40)       blea\+   cr1,0 <start>
++.*: R_PPC(|64)_ADDR14 foo_abs
++.*:   (4c 86 0c 20|20 0c 86 4c)       bcctr   4,4\*cr1\+eq,1
++.*:   (4c c6 04 20|20 04 c6 4c)       bnectr- cr1
++.*:   (4c e6 04 20|20 04 e6 4c)       bnectr\+ cr1
++.*:   (4c 86 0c 21|21 0c 86 4c)       bcctrl  4,4\*cr1\+eq,1
++.*:   (4c c6 04 21|21 04 c6 4c)       bnectrl- cr1
++.*:   (4c e6 04 21|21 04 e6 4c)       bnectrl\+ cr1
++.*:   (40 8a 00 01|01 00 8a 40)       bnel    cr2,c0 <start\+0xc0>
++.*: R_PPC(|64)_REL14  foo
++.*:   (40 ca 00 01|01 00 ca 40)       bnel-   cr2,c4 <start\+0xc4>
++.*: R_PPC(|64)_REL14  foo
++.*:   (40 ea 00 01|01 00 ea 40)       bnel\+   cr2,c8 <start\+0xc8>
++.*: R_PPC(|64)_REL14  foo
++.*:   (40 85 00 03|03 00 85 40)       blela   cr1,0 <start>
++.*: R_PPC(|64)_ADDR14 foo_abs
++.*:   (40 c5 00 03|03 00 c5 40)       blela-  cr1,0 <start>
++.*: R_PPC(|64)_ADDR14 foo_abs
++.*:   (40 e5 00 03|03 00 e5 40)       blela\+  cr1,0 <start>
++.*: R_PPC(|64)_ADDR14 foo_abs
++.*:   (4c 86 08 20|20 08 86 4c)       bclr    4,4\*cr1\+eq,1
++.*:   (4c c6 00 20|20 00 c6 4c)       bnelr-  cr1
++.*:   (4c e6 00 20|20 00 e6 4c)       bnelr\+  cr1
++.*:   (4c 86 08 21|21 08 86 4c)       bclrl   4,4\*cr1\+eq,1
++.*:   (4c c6 00 21|21 00 c6 4c)       bnelrl- cr1
++.*:   (4c e6 00 21|21 00 e6 4c)       bnelrl\+ cr1
++.*:   (48 00 00 00|00 00 00 48)       b       f0 <start\+0xf0>
++.*: R_PPC(|64)_REL24  label
++.*:   (48 00 00 03|03 00 00 48)       bla     0 <start>
++.*: R_PPC(|64)_ADDR24 label_abs
++.*:   (48 00 00 01|01 00 00 48)       bl      f8 <start\+0xf8>
++.*: R_PPC(|64)_REL24  label
++.*:   (7d 6a 61 f8|f8 61 6a 7d)       bpermd  r10,r11,r12
++.*:   (7c a7 40 00|00 40 a7 7c)       cmpd    cr1,r7,r8
++.*:   (7d 6a 63 f8|f8 63 6a 7d)       cmpb    r10,r11,r12
++.*:   (2c aa 00 0d|0d 00 aa 2c)       cmpdi   cr1,r10,13
++.*:   (2c aa ff f3|f3 ff aa 2c)       cmpdi   cr1,r10,-13
++.*:   (7c a7 40 40|40 40 a7 7c)       cmpld   cr1,r7,r8
++.*:   (28 aa 00 64|64 00 aa 28)       cmpldi  cr1,r10,100
++.*:   (7e b4 00 75|75 00 b4 7e)       cntlzd\. r20,r21
++.*:   (7e b4 00 74|74 00 b4 7e)       cntlzd  r20,r21
++.*:   (7e b4 00 35|35 00 b4 7e)       cntlzw\. r20,r21
++.*:   (7e b4 00 34|34 00 b4 7e)       cntlzw  r20,r21
++.*:   (4c 22 1a 02|02 1a 22 4c)       crand   gt,eq,so
++.*:   (4c 22 19 02|02 19 22 4c)       crandc  gt,eq,so
++.*:   (4c 22 1a 42|42 1a 22 4c)       creqv   gt,eq,so
++.*:   (4c 22 19 c2|c2 19 22 4c)       crnand  gt,eq,so
++.*:   (4c 22 18 42|42 18 22 4c)       crnor   gt,eq,so
++.*:   (4c 22 1b 82|82 1b 22 4c)       cror    gt,eq,so
++.*:   (4c 22 1b 42|42 1b 22 4c)       crorc   gt,eq,so
++.*:   (4c 22 19 82|82 19 22 4c)       crxor   gt,eq,so
++.*:   (7c 0a 5d ec|ec 5d 0a 7c)       dcba    r10,r11
++.*:   (7c 0a 58 ac|ac 58 0a 7c)       dcbf    r10,r11
++.*:   (7c 2a 58 ac|ac 58 2a 7c)       dcbfl   r10,r11
++.*:   (7c 0a 58 fe|fe 58 0a 7c)       dcbfep  r10,r11
++.*:   (7c 0a 5b ac|ac 5b 0a 7c)       dcbi    r10,r11
++.*:   (7c 0a 5b 0c|0c 5b 0a 7c)       dcblc   r10,r11
++.*:   (7c 2a 5b 0c|0c 5b 2a 7c)       dcblc   1,r10,r11
++.*:   (7c 0a 58 6c|6c 58 0a 7c)       dcbst   r10,r11
++.*:   (7c 0a 58 7e|7e 58 0a 7c)       dcbstep r10,r11
++.*:   (7c 0a 5a 2c|2c 5a 0a 7c)       dcbt    r10,r11
++.*:   (7c 2a 5a 2c|2c 5a 2a 7c)       dcbt    1,r10,r11
++.*:   (7d 4b 62 7e|7e 62 4b 7d)       dcbtep  r10,r11,r12
++.*:   (7c 0a 59 4c|4c 59 0a 7c)       dcbtls  r10,r11
++.*:   (7c 2a 59 4c|4c 59 2a 7c)       dcbtls  1,r10,r11
++.*:   (7c 0a 59 ec|ec 59 0a 7c)       dcbtst  r10,r11
++.*:   (7c 2a 59 ec|ec 59 2a 7c)       dcbtst  1,r10,r11
++.*:   (7d 4b 61 fe|fe 61 4b 7d)       dcbtstep r10,r11,r12
++.*:   (7c 0a 59 0c|0c 59 0a 7c)       dcbtstls r10,r11
++.*:   (7c 2a 59 0c|0c 59 2a 7c)       dcbtstls 1,r10,r11
++.*:   (7c 0a 5f ec|ec 5f 0a 7c)       dcbz    r10,r11
++.*:   (7c 0a 5f fe|fe 5f 0a 7c)       dcbzep  r10,r11
++.*:   (7c 00 03 8c|8c 03 00 7c)       dccci
++.*:   (7c 00 03 8c|8c 03 00 7c)       dccci
++.*:   (7c 00 03 8c|8c 03 00 7c)       dccci
++.*:   (7d 40 03 8c|8c 03 40 7d)       dci     10
++.*:   (7e 95 b3 d3|d3 b3 95 7e)       divd\.   r20,r21,r22
++.*:   (7e 95 b3 d2|d2 b3 95 7e)       divd    r20,r21,r22
++.*:   (7e 95 b7 d3|d3 b7 95 7e)       divdo\.  r20,r21,r22
++.*:   (7e 95 b7 d2|d2 b7 95 7e)       divdo   r20,r21,r22
++.*:   (7e 95 b3 93|93 b3 95 7e)       divdu\.  r20,r21,r22
++.*:   (7e 95 b3 92|92 b3 95 7e)       divdu   r20,r21,r22
++.*:   (7e 95 b7 93|93 b7 95 7e)       divduo\. r20,r21,r22
++.*:   (7e 95 b7 92|92 b7 95 7e)       divduo  r20,r21,r22
++.*:   (7e 95 b3 d7|d7 b3 95 7e)       divw\.   r20,r21,r22
++.*:   (7e 95 b3 d6|d6 b3 95 7e)       divw    r20,r21,r22
++.*:   (7e 95 b7 d7|d7 b7 95 7e)       divwo\.  r20,r21,r22
++.*:   (7e 95 b7 d6|d6 b7 95 7e)       divwo   r20,r21,r22
++.*:   (7e 95 b3 97|97 b3 95 7e)       divwu\.  r20,r21,r22
++.*:   (7e 95 b3 96|96 b3 95 7e)       divwu   r20,r21,r22
++.*:   (7e 95 b7 97|97 b7 95 7e)       divwuo\. r20,r21,r22
++.*:   (7e 95 b7 96|96 b7 95 7e)       divwuo  r20,r21,r22
++.*:   (7e b4 b2 39|39 b2 b4 7e)       eqv\.    r20,r21,r22
++.*:   (7e b4 b2 38|38 b2 b4 7e)       eqv     r20,r21,r22
++.*:   (7c 0a 58 66|66 58 0a 7c)       eratilx 0,r10,r11
++.*:   (7c 2a 58 66|66 58 2a 7c)       eratilx 1,r10,r11
++.*:   (7c ea 58 66|66 58 ea 7c)       eratilx 7,r10,r11
++.*:   (7d 4b 66 66|66 66 4b 7d)       erativax r10,r11,r12
++.*:   (7d 4b 01 66|66 01 4b 7d)       eratre  r10,r11,0
++.*:   (7d 4b 19 66|66 19 4b 7d)       eratre  r10,r11,3
++.*:   (7d 4b 61 27|27 61 4b 7d)       eratsx\. r10,r11,r12
++.*:   (7d 4b 61 26|26 61 4b 7d)       eratsx  r10,r11,r12
++.*:   (7d 4b 01 a6|a6 01 4b 7d)       eratwe  r10,r11,0
++.*:   (7d 4b 19 a6|a6 19 4b 7d)       eratwe  r10,r11,3
++.*:   (7d 6a 07 75|75 07 6a 7d)       extsb\.  r10,r11
++.*:   (7d 6a 07 74|74 07 6a 7d)       extsb   r10,r11
++.*:   (7d 6a 07 35|35 07 6a 7d)       extsh\.  r10,r11
++.*:   (7d 6a 07 34|34 07 6a 7d)       extsh   r10,r11
++.*:   (7d 6a 07 b5|b5 07 6a 7d)       extsw\.  r10,r11
++.*:   (7d 6a 07 b4|b4 07 6a 7d)       extsw   r10,r11
++.*:   (fe 80 aa 11|11 aa 80 fe)       fabs\.   f20,f21
++.*:   (fe 80 aa 10|10 aa 80 fe)       fabs    f20,f21
++.*:   (fe 95 b0 2b|2b b0 95 fe)       fadd\.   f20,f21,f22
++.*:   (fe 95 b0 2a|2a b0 95 fe)       fadd    f20,f21,f22
++.*:   (ee 95 b0 2b|2b b0 95 ee)       fadds\.  f20,f21,f22
++.*:   (ee 95 b0 2a|2a b0 95 ee)       fadds   f20,f21,f22
++.*:   (fe 80 ae 9d|9d ae 80 fe)       fcfid\.  f20,f21
++.*:   (fe 80 ae 9c|9c ae 80 fe)       fcfid   f20,f21
++.*:   (fc 14 a8 40|40 a8 14 fc)       fcmpo   cr0,f20,f21
++.*:   (fc 94 a8 40|40 a8 94 fc)       fcmpo   cr1,f20,f21
++.*:   (fc 14 a8 00|00 a8 14 fc)       fcmpu   cr0,f20,f21
++.*:   (fc 94 a8 00|00 a8 94 fc)       fcmpu   cr1,f20,f21
++.*:   (fe 95 b0 11|11 b0 95 fe)       fcpsgn\. f20,f21,f22
++.*:   (fe 95 b0 10|10 b0 95 fe)       fcpsgn  f20,f21,f22
++.*:   (fe 80 ae 5d|5d ae 80 fe)       fctid\.  f20,f21
++.*:   (fe 80 ae 5c|5c ae 80 fe)       fctid   f20,f21
++.*:   (fe 80 ae 5f|5f ae 80 fe)       fctidz\. f20,f21
++.*:   (fe 80 ae 5e|5e ae 80 fe)       fctidz  f20,f21
++.*:   (fe 80 a8 1d|1d a8 80 fe)       fctiw\.  f20,f21
++.*:   (fe 80 a8 1c|1c a8 80 fe)       fctiw   f20,f21
++.*:   (fe 80 a8 1f|1f a8 80 fe)       fctiwz\. f20,f21
++.*:   (fe 80 a8 1e|1e a8 80 fe)       fctiwz  f20,f21
++.*:   (fe 95 b0 25|25 b0 95 fe)       fdiv\.   f20,f21,f22
++.*:   (fe 95 b0 24|24 b0 95 fe)       fdiv    f20,f21,f22
++.*:   (ee 95 b0 25|25 b0 95 ee)       fdivs\.  f20,f21,f22
++.*:   (ee 95 b0 24|24 b0 95 ee)       fdivs   f20,f21,f22
++.*:   (fe 95 bd bb|bb bd 95 fe)       fmadd\.  f20,f21,f22,f23
++.*:   (fe 95 bd ba|ba bd 95 fe)       fmadd   f20,f21,f22,f23
++.*:   (ee 95 bd bb|bb bd 95 ee)       fmadds\. f20,f21,f22,f23
++.*:   (ee 95 bd ba|ba bd 95 ee)       fmadds  f20,f21,f22,f23
++.*:   (fe 80 a8 91|91 a8 80 fe)       fmr\.    f20,f21
++.*:   (fe 80 a8 90|90 a8 80 fe)       fmr     f20,f21
++.*:   (fe 95 bd b9|b9 bd 95 fe)       fmsub\.  f20,f21,f22,f23
++.*:   (fe 95 bd b8|b8 bd 95 fe)       fmsub   f20,f21,f22,f23
++.*:   (ee 95 bd b9|b9 bd 95 ee)       fmsubs\. f20,f21,f22,f23
++.*:   (ee 95 bd b8|b8 bd 95 ee)       fmsubs  f20,f21,f22,f23
++.*:   (fe 95 05 b3|b3 05 95 fe)       fmul\.   f20,f21,f22
++.*:   (fe 95 05 b2|b2 05 95 fe)       fmul    f20,f21,f22
++.*:   (ee 95 05 b3|b3 05 95 ee)       fmuls\.  f20,f21,f22
++.*:   (ee 95 05 b2|b2 05 95 ee)       fmuls   f20,f21,f22
++.*:   (fe 80 a9 11|11 a9 80 fe)       fnabs\.  f20,f21
++.*:   (fe 80 a9 10|10 a9 80 fe)       fnabs   f20,f21
++.*:   (fe 80 a8 51|51 a8 80 fe)       fneg\.   f20,f21
++.*:   (fe 80 a8 50|50 a8 80 fe)       fneg    f20,f21
++.*:   (fe 95 bd bf|bf bd 95 fe)       fnmadd\. f20,f21,f22,f23
++.*:   (fe 95 bd be|be bd 95 fe)       fnmadd  f20,f21,f22,f23
++.*:   (ee 95 bd bf|bf bd 95 ee)       fnmadds\. f20,f21,f22,f23
++.*:   (ee 95 bd be|be bd 95 ee)       fnmadds f20,f21,f22,f23
++.*:   (fe 95 bd bd|bd bd 95 fe)       fnmsub\. f20,f21,f22,f23
++.*:   (fe 95 bd bc|bc bd 95 fe)       fnmsub  f20,f21,f22,f23
++.*:   (ee 95 bd bd|bd bd 95 ee)       fnmsubs\. f20,f21,f22,f23
++.*:   (ee 95 bd bc|bc bd 95 ee)       fnmsubs f20,f21,f22,f23
++.*:   (fe 80 a8 31|31 a8 80 fe)       fre\.    f20,f21
++.*:   (fe 80 a8 30|30 a8 80 fe)       fre     f20,f21
++.*:   (fe 80 a8 31|31 a8 80 fe)       fre\.    f20,f21
++.*:   (fe 80 a8 30|30 a8 80 fe)       fre     f20,f21
++.*:   (fe 81 a8 31|31 a8 81 fe)       fre\.    f20,f21,1
++.*:   (fe 81 a8 30|30 a8 81 fe)       fre     f20,f21,1
++.*:   (ee 80 a8 31|31 a8 80 ee)       fres\.   f20,f21
++.*:   (ee 80 a8 30|30 a8 80 ee)       fres    f20,f21
++.*:   (ee 80 a8 31|31 a8 80 ee)       fres\.   f20,f21
++.*:   (ee 80 a8 30|30 a8 80 ee)       fres    f20,f21
++.*:   (ee 81 a8 31|31 a8 81 ee)       fres\.   f20,f21,1
++.*:   (ee 81 a8 30|30 a8 81 ee)       fres    f20,f21,1
++.*:   (fe 80 ab d1|d1 ab 80 fe)       frim\.   f20,f21
++.*:   (fe 80 ab d0|d0 ab 80 fe)       frim    f20,f21
++.*:   (fe 80 ab 11|11 ab 80 fe)       frin\.   f20,f21
++.*:   (fe 80 ab 10|10 ab 80 fe)       frin    f20,f21
++.*:   (fe 80 ab 91|91 ab 80 fe)       frip\.   f20,f21
++.*:   (fe 80 ab 90|90 ab 80 fe)       frip    f20,f21
++.*:   (fe 80 ab 51|51 ab 80 fe)       friz\.   f20,f21
++.*:   (fe 80 ab 50|50 ab 80 fe)       friz    f20,f21
++.*:   (fe 80 a8 19|19 a8 80 fe)       frsp\.   f20,f21
++.*:   (fe 80 a8 18|18 a8 80 fe)       frsp    f20,f21
++.*:   (fe 80 a8 35|35 a8 80 fe)       frsqrte\. f20,f21
++.*:   (fe 80 a8 34|34 a8 80 fe)       frsqrte f20,f21
++.*:   (fe 80 a8 35|35 a8 80 fe)       frsqrte\. f20,f21
++.*:   (fe 80 a8 34|34 a8 80 fe)       frsqrte f20,f21
++.*:   (fe 81 a8 35|35 a8 81 fe)       frsqrte\. f20,f21,1
++.*:   (fe 81 a8 34|34 a8 81 fe)       frsqrte f20,f21,1
++.*:   (ee 80 a8 34|34 a8 80 ee)       frsqrtes f20,f21
++.*:   (ee 80 a8 35|35 a8 80 ee)       frsqrtes\. f20,f21
++.*:   (ee 80 a8 34|34 a8 80 ee)       frsqrtes f20,f21
++.*:   (ee 80 a8 35|35 a8 80 ee)       frsqrtes\. f20,f21
++.*:   (ee 81 a8 34|34 a8 81 ee)       frsqrtes f20,f21,1
++.*:   (ee 81 a8 35|35 a8 81 ee)       frsqrtes\. f20,f21,1
++.*:   (fe 95 bd af|af bd 95 fe)       fsel\.   f20,f21,f22,f23
++.*:   (fe 95 bd ae|ae bd 95 fe)       fsel    f20,f21,f22,f23
++.*:   (fe 80 a8 2d|2d a8 80 fe)       fsqrt\.  f20,f21
++.*:   (fe 80 a8 2c|2c a8 80 fe)       fsqrt   f20,f21
++.*:   (ee 80 a8 2d|2d a8 80 ee)       fsqrts\. f20,f21
++.*:   (ee 80 a8 2c|2c a8 80 ee)       fsqrts  f20,f21
++.*:   (fe 95 b0 29|29 b0 95 fe)       fsub\.   f20,f21,f22
++.*:   (fe 95 b0 28|28 b0 95 fe)       fsub    f20,f21,f22
++.*:   (ee 95 b0 29|29 b0 95 ee)       fsubs\.  f20,f21,f22
++.*:   (ee 95 b0 28|28 b0 95 ee)       fsubs   f20,f21,f22
++.*:   (7c 0a 5f ac|ac 5f 0a 7c)       icbi    r10,r11
++.*:   (7c 0a 5f be|be 5f 0a 7c)       icbiep  r10,r11
++.*:   (7c 0a 58 2c|2c 58 0a 7c)       icbt    r10,r11
++.*:   (7c ea 58 2c|2c 58 ea 7c)       icbt    7,r10,r11
++.*:   (7c 0a 5b cc|cc 5b 0a 7c)       icbtls  r10,r11
++.*:   (7c ea 5b cc|cc 5b ea 7c)       icbtls  7,r10,r11
++.*:   (7c 00 07 8c|8c 07 00 7c)       iccci
++.*:   (7c 00 07 8c|8c 07 00 7c)       iccci
++.*:   (7c 00 07 8c|8c 07 00 7c)       iccci
++.*:   (7d 40 07 8c|8c 07 40 7d)       ici     10
++.*:   (7d 4b 63 2d|2d 63 4b 7d)       icswx\.  r10,r11,r12
++.*:   (7d 4b 63 2c|2c 63 4b 7d)       icswx   r10,r11,r12
++.*:   (7d 4b 65 de|de 65 4b 7d)       isel    r10,r11,r12,23
++.*:   (4c 00 01 2c|2c 01 00 4c)       isync
++.*:   (7d 4b 60 be|be 60 4b 7d)       lbepx   r10,r11,r12
++.*:   (89 4b ff ef|ef ff 4b 89)       lbz     r10,-17\(r11\)
++.*:   (89 4b 00 11|11 00 4b 89)       lbz     r10,17\(r11\)
++.*:   (8d 4b ff ff|ff ff 4b 8d)       lbzu    r10,-1\(r11\)
++.*:   (8d 4b 00 01|01 00 4b 8d)       lbzu    r10,1\(r11\)
++.*:   (7d 4b 68 ee|ee 68 4b 7d)       lbzux   r10,r11,r13
++.*:   (7d 4b 68 ae|ae 68 4b 7d)       lbzx    r10,r11,r13
++.*:   (e9 4b ff f8|f8 ff 4b e9)       ld      r10,-8\(r11\)
++.*:   (e9 4b 00 08|08 00 4b e9)       ld      r10,8\(r11\)
++.*:   (7d 4b 60 a8|a8 60 4b 7d)       ldarx   r10,r11,r12
++.*:   (7d 4b 60 a9|a9 60 4b 7d)       ldarx   r10,r11,r12,1
++.*:   (7d 4b 64 28|28 64 4b 7d)       ldbrx   r10,r11,r12
++.*:   (7d 4b 60 3a|3a 60 4b 7d)       ldepx   r10,r11,r12
++.*:   (e9 4b ff f9|f9 ff 4b e9)       ldu     r10,-8\(r11\)
++.*:   (e9 4b 00 09|09 00 4b e9)       ldu     r10,8\(r11\)
++.*:   (7d 4b 60 6a|6a 60 4b 7d)       ldux    r10,r11,r12
++.*:   (7d 4b 60 2a|2a 60 4b 7d)       ldx     r10,r11,r12
++.*:   (ca 8a ff f8|f8 ff 8a ca)       lfd     f20,-8\(r10\)
++.*:   (ca 8a 00 08|08 00 8a ca)       lfd     f20,8\(r10\)
++.*:   (7e 8a 5c be|be 5c 8a 7e)       lfdepx  f20,r10,r11
++.*:   (ce 8a ff f8|f8 ff 8a ce)       lfdu    f20,-8\(r10\)
++.*:   (ce 8a 00 08|08 00 8a ce)       lfdu    f20,8\(r10\)
++.*:   (7e 8a 5c ee|ee 5c 8a 7e)       lfdux   f20,r10,r11
++.*:   (7e 8a 5c ae|ae 5c 8a 7e)       lfdx    f20,r10,r11
++.*:   (7e 8a 5e ae|ae 5e 8a 7e)       lfiwax  f20,r10,r11
++.*:   (7e 8a 5e ee|ee 5e 8a 7e)       lfiwzx  f20,r10,r11
++.*:   (c2 8a ff fc|fc ff 8a c2)       lfs     f20,-4\(r10\)
++.*:   (c2 8a 00 04|04 00 8a c2)       lfs     f20,4\(r10\)
++.*:   (c6 8a ff fc|fc ff 8a c6)       lfsu    f20,-4\(r10\)
++.*:   (c6 8a 00 04|04 00 8a c6)       lfsu    f20,4\(r10\)
++.*:   (7e 8a 5c 6e|6e 5c 8a 7e)       lfsux   f20,r10,r11
++.*:   (7e 8a 5c 2e|2e 5c 8a 7e)       lfsx    f20,r10,r11
++.*:   (a9 4b 00 02|02 00 4b a9)       lha     r10,2\(r11\)
++.*:   (ad 4b ff fe|fe ff 4b ad)       lhau    r10,-2\(r11\)
++.*:   (7d 4b 62 ee|ee 62 4b 7d)       lhaux   r10,r11,r12
++.*:   (7d 4b 62 ae|ae 62 4b 7d)       lhax    r10,r11,r12
++.*:   (7d 4b 66 2c|2c 66 4b 7d)       lhbrx   r10,r11,r12
++.*:   (7d 4b 62 3e|3e 62 4b 7d)       lhepx   r10,r11,r12
++.*:   (a1 4b ff fe|fe ff 4b a1)       lhz     r10,-2\(r11\)
++.*:   (a1 4b 00 02|02 00 4b a1)       lhz     r10,2\(r11\)
++.*:   (a5 4b ff fe|fe ff 4b a5)       lhzu    r10,-2\(r11\)
++.*:   (a5 4b 00 02|02 00 4b a5)       lhzu    r10,2\(r11\)
++.*:   (7d 4b 62 6e|6e 62 4b 7d)       lhzux   r10,r11,r12
++.*:   (7d 4b 62 2e|2e 62 4b 7d)       lhzx    r10,r11,r12
++.*:   (e9 4b ff fe|fe ff 4b e9)       lwa     r10,-4\(r11\)
++.*:   (e9 4b 00 06|06 00 4b e9)       lwa     r10,4\(r11\)
++.*:   (7d 4b 60 28|28 60 4b 7d)       lwarx   r10,r11,r12
++.*:   (7d 4b 60 29|29 60 4b 7d)       lwarx   r10,r11,r12,1
++.*:   (7d 4b 62 ea|ea 62 4b 7d)       lwaux   r10,r11,r12
++.*:   (7d 4b 62 aa|aa 62 4b 7d)       lwax    r10,r11,r12
++.*:   (7d 4b 64 2c|2c 64 4b 7d)       lwbrx   r10,r11,r12
++.*:   (7d 4b 60 3e|3e 60 4b 7d)       lwepx   r10,r11,r12
++.*:   (81 4b ff fc|fc ff 4b 81)       lwz     r10,-4\(r11\)
++.*:   (81 4b 00 04|04 00 4b 81)       lwz     r10,4\(r11\)
++.*:   (85 4b ff fc|fc ff 4b 85)       lwzu    r10,-4\(r11\)
++.*:   (85 4b 00 04|04 00 4b 85)       lwzu    r10,4\(r11\)
++.*:   (7d 4b 60 6e|6e 60 4b 7d)       lwzux   r10,r11,r12
++.*:   (7d 4b 60 2e|2e 60 4b 7d)       lwzx    r10,r11,r12
++.*:   (7c 00 06 ac|ac 06 00 7c)       mbar
++.*:   (7c 00 06 ac|ac 06 00 7c)       mbar
++.*:   (7c 00 06 ac|ac 06 00 7c)       mbar
++.*:   (7c 20 06 ac|ac 06 20 7c)       mbar    1
++.*:   (4c 04 00 00|00 00 04 4c)       mcrf    cr0,cr1
++.*:   (fd 90 00 80|80 00 90 fd)       mcrfs   cr3,cr4
++.*:   (7c 00 04 00|00 04 00 7c)       mcrxr   cr0
++.*:   (7d 80 04 00|00 04 80 7d)       mcrxr   cr3
++.*:   (7c 60 00 26|26 00 60 7c)       mfcr    r3
++.*:   (7c 70 20 26|26 20 70 7c)       mfocrf  r3,2
++.*:   (7c 70 10 26|26 10 70 7c)       mfocrf  r3,1
++.*:   (7c 78 00 26|26 00 78 7c)       mfocrf  r3,128
++.*:   (7d 4a 3a 87|87 3a 4a 7d)       mfdcr\.  r10,234
++.*:   (7d 4a 3a 86|86 3a 4a 7d)       mfdcr   r10,234
++.*:   (7d 4b 02 07|07 02 4b 7d)       mfdcrx\. r10,r11
++.*:   (7d 4b 02 06|06 02 4b 7d)       mfdcrx  r10,r11
++.*:   (fe 80 04 8f|8f 04 80 fe)       mffs\.   f20
++.*:   (fe 80 04 8e|8e 04 80 fe)       mffs    f20
++.*:   (7d 40 00 a6|a6 00 40 7d)       mfmsr   r10
++.*:   (7c 70 10 26|26 10 70 7c)       mfocrf  r3,1
++.*:   (7c 78 00 26|26 00 78 7c)       mfocrf  r3,128
++.*:   (7d 4a 3a a6|a6 3a 4a 7d)       mfspr   r10,234
++.*:   (7d 4c 42 a6|a6 42 4c 7d)       mftb    r10
++.*:   (7d 4d 42 a6|a6 42 4d 7d)       mftbu   r10
++.*:   (7c 00 51 dc|dc 51 00 7c)       msgclr  r10
++.*:   (7c 00 51 9c|9c 51 00 7c)       msgsnd  r10
++.*:   (7c 60 01 20|20 01 60 7c)       mtcrf   0,r3
++.*:   (7c 70 11 20|20 11 70 7c)       mtocrf  1,r3
++.*:   (7c 78 01 20|20 01 78 7c)       mtocrf  128,r3
++.*:   (7c 6f f1 20|20 f1 6f 7c)       mtcr    r3
++.*:   (7d 4a 3b 87|87 3b 4a 7d)       mtdcr\.  234,r10
++.*:   (7d 4a 3b 86|86 3b 4a 7d)       mtdcr   234,r10
++.*:   (7d 6a 03 07|07 03 6a 7d)       mtdcrx\. r10,r11
++.*:   (7d 6a 03 06|06 03 6a 7d)       mtdcrx  r10,r11
++.*:   (fc 60 00 8d|8d 00 60 fc)       mtfsb0\. 3
++.*:   (fc 60 00 8c|8c 00 60 fc)       mtfsb0  3
++.*:   (fc 60 00 4d|4d 00 60 fc)       mtfsb1\. 3
++.*:   (fc 60 00 4c|4c 00 60 fc)       mtfsb1  3
++.*:   (fc 0c a5 8f|8f a5 0c fc)       mtfsf\.  6,f20
++.*:   (fc 0c a5 8e|8e a5 0c fc)       mtfsf   6,f20
++.*:   (fc 0c a5 8f|8f a5 0c fc)       mtfsf\.  6,f20
++.*:   (fc 0c a5 8e|8e a5 0c fc)       mtfsf   6,f20
++.*:   (fe 0d a5 8f|8f a5 0d fe)       mtfsf\.  6,f20,1,1
++.*:   (fe 0d a5 8e|8e a5 0d fe)       mtfsf   6,f20,1,1
++.*:   (ff 00 01 0d|0d 01 00 ff)       mtfsfi\. 6,0
++.*:   (ff 00 01 0c|0c 01 00 ff)       mtfsfi  6,0
++.*:   (ff 00 d1 0d|0d d1 00 ff)       mtfsfi\. 6,13
++.*:   (ff 00 d1 0c|0c d1 00 ff)       mtfsfi  6,13
++.*:   (ff 01 d1 0d|0d d1 01 ff)       mtfsfi\. 6,13,1
++.*:   (ff 01 d1 0c|0c d1 01 ff)       mtfsfi  6,13,1
++.*:   (7d 40 01 24|24 01 40 7d)       mtmsr   r10
++.*:   (7d 40 01 24|24 01 40 7d)       mtmsr   r10
++.*:   (7d 41 01 24|24 01 41 7d)       mtmsr   r10,1
++.*:   (7c 70 11 20|20 11 70 7c)       mtocrf  1,r3
++.*:   (7c 78 01 20|20 01 78 7c)       mtocrf  128,r3
++.*:   (7d 4a 3b a6|a6 3b 4a 7d)       mtspr   234,r10
++.*:   (7e 95 b0 93|93 b0 95 7e)       mulhd\.  r20,r21,r22
++.*:   (7e 95 b0 92|92 b0 95 7e)       mulhd   r20,r21,r22
++.*:   (7e 95 b0 13|13 b0 95 7e)       mulhdu\. r20,r21,r22
++.*:   (7e 95 b0 12|12 b0 95 7e)       mulhdu  r20,r21,r22
++.*:   (7e 95 b0 97|97 b0 95 7e)       mulhw\.  r20,r21,r22
++.*:   (7e 95 b0 96|96 b0 95 7e)       mulhw   r20,r21,r22
++.*:   (7e 95 b0 17|17 b0 95 7e)       mulhwu\. r20,r21,r22
++.*:   (7e 95 b0 16|16 b0 95 7e)       mulhwu  r20,r21,r22
++.*:   (7e 95 b1 d3|d3 b1 95 7e)       mulld\.  r20,r21,r22
++.*:   (7e 95 b1 d2|d2 b1 95 7e)       mulld   r20,r21,r22
++.*:   (7e 95 b5 d3|d3 b5 95 7e)       mulldo\. r20,r21,r22
++.*:   (7e 95 b5 d2|d2 b5 95 7e)       mulldo  r20,r21,r22
++.*:   (1e 95 00 64|64 00 95 1e)       mulli   r20,r21,100
++.*:   (1e 95 ff 9c|9c ff 95 1e)       mulli   r20,r21,-100
++.*:   (7e 95 b1 d7|d7 b1 95 7e)       mullw\.  r20,r21,r22
++.*:   (7e 95 b1 d6|d6 b1 95 7e)       mullw   r20,r21,r22
++.*:   (7e 95 b5 d7|d7 b5 95 7e)       mullwo\. r20,r21,r22
++.*:   (7e 95 b5 d6|d6 b5 95 7e)       mullwo  r20,r21,r22
++.*:   (7e b4 b3 b9|b9 b3 b4 7e)       nand\.   r20,r21,r22
++.*:   (7e b4 b3 b8|b8 b3 b4 7e)       nand    r20,r21,r22
++.*:   (7e 95 00 d1|d1 00 95 7e)       neg\.    r20,r21
++.*:   (7e 95 00 d0|d0 00 95 7e)       neg     r20,r21
++.*:   (7e 95 04 d1|d1 04 95 7e)       nego\.   r20,r21
++.*:   (7e 95 04 d0|d0 04 95 7e)       nego    r20,r21
++.*:   (7e b4 b0 f9|f9 b0 b4 7e)       nor\.    r20,r21,r22
++.*:   (7e b4 b0 f8|f8 b0 b4 7e)       nor     r20,r21,r22
++.*:   (7e b4 b3 79|79 b3 b4 7e)       or\.     r20,r21,r22
++.*:   (7e b4 b3 78|78 b3 b4 7e)       or      r20,r21,r22
++.*:   (7e b4 b3 39|39 b3 b4 7e)       orc\.    r20,r21,r22
++.*:   (7e b4 b3 38|38 b3 b4 7e)       orc     r20,r21,r22
++.*:   (62 b4 10 00|00 10 b4 62)       ori     r20,r21,4096
++.*:   (66 b4 10 00|00 10 b4 66)       oris    r20,r21,4096
++.*:   (7d 6a 00 f4|f4 00 6a 7d)       popcntb r10,r11
++.*:   (7d 6a 03 f4|f4 03 6a 7d)       popcntd r10,r11
++.*:   (7d 6a 02 f4|f4 02 6a 7d)       popcntw r10,r11
++.*:   (7d 6a 01 74|74 01 6a 7d)       prtyd   r10,r11
++.*:   (7d 6a 01 34|34 01 6a 7d)       prtyw   r10,r11
++.*:   (4c 00 00 66|66 00 00 4c)       rfci
++.*:   (4c 00 00 cc|cc 00 00 4c)       rfgi
++.*:   (4c 00 00 64|64 00 00 4c)       rfi
++.*:   (4c 00 00 4c|4c 00 00 4c)       rfmci
++.*:   (79 6a 67 f1|f1 67 6a 79)       rldcl\.  r10,r11,r12,63
++.*:   (79 6a 67 f0|f0 67 6a 79)       rldcl   r10,r11,r12,63
++.*:   (79 6a 67 f3|f3 67 6a 79)       rldcr\.  r10,r11,r12,63
++.*:   (79 6a 67 f2|f2 67 6a 79)       rldcr   r10,r11,r12,63
++.*:   (79 6a bf e9|e9 bf 6a 79)       rldic\.  r10,r11,23,63
++.*:   (79 6a bf e8|e8 bf 6a 79)       rldic   r10,r11,23,63
++.*:   (79 6a bf e1|e1 bf 6a 79)       rldicl\. r10,r11,23,63
++.*:   (79 6a bf e0|e0 bf 6a 79)       rldicl  r10,r11,23,63
++.*:   (79 6a bf e5|e5 bf 6a 79)       rldicr\. r10,r11,23,63
++.*:   (79 6a bf e4|e4 bf 6a 79)       rldicr  r10,r11,23,63
++.*:   (79 6a bf ed|ed bf 6a 79)       rldimi\. r10,r11,23,63
++.*:   (79 6a bf ec|ec bf 6a 79)       rldimi  r10,r11,23,63
++.*:   (51 6a b8 3f|3f b8 6a 51)       rlwimi\. r10,r11,23,0,31
++.*:   (51 6a b8 3e|3e b8 6a 51)       rlwimi  r10,r11,23,0,31
++.*:   (55 6a b8 3f|3f b8 6a 55)       rotlwi\. r10,r11,23
++.*:   (55 6a b8 3e|3e b8 6a 55)       rotlwi  r10,r11,23
++.*:   (5d 6a b8 3f|3f b8 6a 5d)       rotlw\.  r10,r11,r23
++.*:   (5d 6a b8 3e|3e b8 6a 5d)       rotlw   r10,r11,r23
++.*:   (44 00 00 02|02 00 00 44)       sc
++.*:   (44 00 0c 82|82 0c 00 44)       sc      100
++.*:   (7d 6a 60 37|37 60 6a 7d)       sld\.    r10,r11,r12
++.*:   (7d 6a 60 36|36 60 6a 7d)       sld     r10,r11,r12
++.*:   (7d 6a 60 31|31 60 6a 7d)       slw\.    r10,r11,r12
++.*:   (7d 6a 60 30|30 60 6a 7d)       slw     r10,r11,r12
++.*:   (7d 6a 66 35|35 66 6a 7d)       srad\.   r10,r11,r12
++.*:   (7d 6a 66 34|34 66 6a 7d)       srad    r10,r11,r12
++.*:   (7d 6a fe 77|77 fe 6a 7d)       sradi\.  r10,r11,63
++.*:   (7d 6a fe 76|76 fe 6a 7d)       sradi   r10,r11,63
++.*:   (7d 6a 66 31|31 66 6a 7d)       sraw\.   r10,r11,r12
++.*:   (7d 6a 66 30|30 66 6a 7d)       sraw    r10,r11,r12
++.*:   (7d 6a fe 71|71 fe 6a 7d)       srawi\.  r10,r11,31
++.*:   (7d 6a fe 70|70 fe 6a 7d)       srawi   r10,r11,31
++.*:   (7d 6a 64 37|37 64 6a 7d)       srd\.    r10,r11,r12
++.*:   (7d 6a 64 36|36 64 6a 7d)       srd     r10,r11,r12
++.*:   (7d 6a 64 31|31 64 6a 7d)       srw\.    r10,r11,r12
++.*:   (7d 6a 64 30|30 64 6a 7d)       srw     r10,r11,r12
++.*:   (99 4b ff ff|ff ff 4b 99)       stb     r10,-1\(r11\)
++.*:   (99 4b 00 01|01 00 4b 99)       stb     r10,1\(r11\)
++.*:   (7d 4b 61 be|be 61 4b 7d)       stbepx  r10,r11,r12
++.*:   (9d 4b ff ff|ff ff 4b 9d)       stbu    r10,-1\(r11\)
++.*:   (9d 4b 00 01|01 00 4b 9d)       stbu    r10,1\(r11\)
++.*:   (7d 4b 61 ee|ee 61 4b 7d)       stbux   r10,r11,r12
++.*:   (7d 4b 61 ae|ae 61 4b 7d)       stbx    r10,r11,r12
++.*:   (f9 4b ff f8|f8 ff 4b f9)       std     r10,-8\(r11\)
++.*:   (f9 4b 00 08|08 00 4b f9)       std     r10,8\(r11\)
++.*:   (7d 4b 65 28|28 65 4b 7d)       stdbrx  r10,r11,r12
++.*:   (7d 4b 61 ad|ad 61 4b 7d)       stdcx\.  r10,r11,r12
++.*:   (7d 4b 61 3a|3a 61 4b 7d)       stdepx  r10,r11,r12
++.*:   (f9 4b ff f9|f9 ff 4b f9)       stdu    r10,-8\(r11\)
++.*:   (f9 4b 00 09|09 00 4b f9)       stdu    r10,8\(r11\)
++.*:   (7d 4b 61 6a|6a 61 4b 7d)       stdux   r10,r11,r12
++.*:   (7d 4b 61 2a|2a 61 4b 7d)       stdx    r10,r11,r12
++.*:   (da 8a ff f8|f8 ff 8a da)       stfd    f20,-8\(r10\)
++.*:   (da 8a 00 08|08 00 8a da)       stfd    f20,8\(r10\)
++.*:   (7e 8a 5d be|be 5d 8a 7e)       stfdepx f20,r10,r11
++.*:   (de 8a ff f8|f8 ff 8a de)       stfdu   f20,-8\(r10\)
++.*:   (de 8a 00 08|08 00 8a de)       stfdu   f20,8\(r10\)
++.*:   (7e 8a 5d ee|ee 5d 8a 7e)       stfdux  f20,r10,r11
++.*:   (7e 8a 5d ae|ae 5d 8a 7e)       stfdx   f20,r10,r11
++.*:   (7e 8a 5f ae|ae 5f 8a 7e)       stfiwx  f20,r10,r11
++.*:   (d2 8a ff fc|fc ff 8a d2)       stfs    f20,-4\(r10\)
++.*:   (d2 8a 00 04|04 00 8a d2)       stfs    f20,4\(r10\)
++.*:   (d6 8a ff fc|fc ff 8a d6)       stfsu   f20,-4\(r10\)
++.*:   (d6 8a 00 04|04 00 8a d6)       stfsu   f20,4\(r10\)
++.*:   (7e 8a 5d 6e|6e 5d 8a 7e)       stfsux  f20,r10,r11
++.*:   (7e 8a 5d 2e|2e 5d 8a 7e)       stfsx   f20,r10,r11
++.*:   (b1 4b ff fe|fe ff 4b b1)       sth     r10,-2\(r11\)
++.*:   (b1 4b 00 02|02 00 4b b1)       sth     r10,2\(r11\)
++.*:   (b1 4b ff fc|fc ff 4b b1)       sth     r10,-4\(r11\)
++.*:   (b1 4b 00 04|04 00 4b b1)       sth     r10,4\(r11\)
++.*:   (7d 4b 67 2c|2c 67 4b 7d)       sthbrx  r10,r11,r12
++.*:   (7d 4b 63 3e|3e 63 4b 7d)       sthepx  r10,r11,r12
++.*:   (b5 4b ff fe|fe ff 4b b5)       sthu    r10,-2\(r11\)
++.*:   (b5 4b 00 02|02 00 4b b5)       sthu    r10,2\(r11\)
++.*:   (7d 4b 63 6e|6e 63 4b 7d)       sthux   r10,r11,r12
++.*:   (7d 4b 63 2e|2e 63 4b 7d)       sthx    r10,r11,r12
++.*:   (7d 4b 65 2c|2c 65 4b 7d)       stwbrx  r10,r11,r12
++.*:   (7d 4b 61 2d|2d 61 4b 7d)       stwcx\.  r10,r11,r12
++.*:   (7d 4b 61 3e|3e 61 4b 7d)       stwepx  r10,r11,r12
++.*:   (95 4b ff fc|fc ff 4b 95)       stwu    r10,-4\(r11\)
++.*:   (95 4b 00 04|04 00 4b 95)       stwu    r10,4\(r11\)
++.*:   (7d 4b 61 6e|6e 61 4b 7d)       stwux   r10,r11,r12
++.*:   (7d 4b 61 2e|2e 61 4b 7d)       stwx    r10,r11,r12
++.*:   (7e 95 b0 51|51 b0 95 7e)       subf\.   r20,r21,r22
++.*:   (7e 95 b0 50|50 b0 95 7e)       subf    r20,r21,r22
++.*:   (7e 95 b0 11|11 b0 95 7e)       subfc\.  r20,r21,r22
++.*:   (7e 95 b0 10|10 b0 95 7e)       subfc   r20,r21,r22
++.*:   (7e 95 b4 11|11 b4 95 7e)       subfco\. r20,r21,r22
++.*:   (7e 95 b4 10|10 b4 95 7e)       subfco  r20,r21,r22
++.*:   (7e 95 b1 11|11 b1 95 7e)       subfe\.  r20,r21,r22
++.*:   (7e 95 b1 10|10 b1 95 7e)       subfe   r20,r21,r22
++.*:   (7e 95 b5 11|11 b5 95 7e)       subfeo\. r20,r21,r22
++.*:   (7e 95 b5 10|10 b5 95 7e)       subfeo  r20,r21,r22
++.*:   (22 95 00 64|64 00 95 22)       subfic  r20,r21,100
++.*:   (22 95 ff 9c|9c ff 95 22)       subfic  r20,r21,-100
++.*:   (7e 95 01 d1|d1 01 95 7e)       subfme\. r20,r21
++.*:   (7e 95 01 d0|d0 01 95 7e)       subfme  r20,r21
++.*:   (7e 95 05 d1|d1 05 95 7e)       subfmeo\. r20,r21
++.*:   (7e 95 05 d0|d0 05 95 7e)       subfmeo r20,r21
++.*:   (7e 95 b4 51|51 b4 95 7e)       subfo\.  r20,r21,r22
++.*:   (7e 95 b4 50|50 b4 95 7e)       subfo   r20,r21,r22
++.*:   (7e 95 01 91|91 01 95 7e)       subfze\. r20,r21
++.*:   (7e 95 01 90|90 01 95 7e)       subfze  r20,r21
++.*:   (7e 95 05 91|91 05 95 7e)       subfzeo\. r20,r21
++.*:   (7e 95 05 90|90 05 95 7e)       subfzeo r20,r21
++.*:   (7c 00 04 ac|ac 04 00 7c)       hwsync
++.*:   (7c 00 04 ac|ac 04 00 7c)       hwsync
++.*:   (7c 00 04 ac|ac 04 00 7c)       hwsync
++.*:   (7c 20 04 ac|ac 04 20 7c)       lwsync
++.*:   (7c aa 58 88|88 58 aa 7c)       tdlge   r10,r11
++.*:   (08 aa 00 64|64 00 aa 08)       tdlgei  r10,100
++.*:   (08 aa ff 9c|9c ff aa 08)       tdlgei  r10,-100
++.*:   (7c 6a 58 24|24 58 6a 7c)       tlbilxva r10,r11
++.*:   (7c 0a 5e 24|24 5e 0a 7c)       tlbivax r10,r11
++.*:   (7c 00 07 64|64 07 00 7c)       tlbre
++.*:   (7d 4b 3f 64|64 3f 4b 7d)       tlbre   r10,r11,7
++.*:   (7c 0a 5e a5|a5 5e 0a 7c)       tlbsrx\. r10,r11
++.*:   (7d 4b 67 25|25 67 4b 7d)       tlbsx\.  r10,r11,r12
++.*:   (7d 4b 67 24|24 67 4b 7d)       tlbsx   r10,r11,r12
++.*:   (7c 00 04 6c|6c 04 00 7c)       tlbsync
++.*:   (7c 00 07 a4|a4 07 00 7c)       tlbwe
++.*:   (7d 4b 3f a4|a4 3f 4b 7d)       tlbwe   r10,r11,7
++.*:   (7c aa 58 08|08 58 aa 7c)       twlge   r10,r11
++.*:   (0c aa 00 64|64 00 aa 0c)       twlgei  r10,100
++.*:   (0c aa ff 9c|9c ff aa 0c)       twlgei  r10,-100
++.*:   (7c 00 00 7c|7c 00 00 7c)       wait
++.*:   (7c 00 00 7c|7c 00 00 7c)       wait
++.*:   (7c 20 00 7c|7c 00 20 7c)       waitrsv
++.*:   (7c 40 00 7c|7c 00 40 7c)       waitimpl
++.*:   (7c 40 00 7c|7c 00 40 7c)       waitimpl
++.*:   (7c 20 00 7c|7c 00 20 7c)       waitrsv
++.*:   (7c 00 01 6c|6c 01 00 7c)       wchkall
++.*:   (7c 00 01 6c|6c 01 00 7c)       wchkall
++.*:   (7d 80 01 6c|6c 01 80 7d)       wchkall cr3
++.*:   (7c 2a 5f 4c|4c 5f 2a 7c)       wclr    1,r10,r11
++.*:   (7c 20 07 4c|4c 07 20 7c)       wclrall 1
++.*:   (7c 4a 5f 4c|4c 5f 4a 7c)       wclrone r10,r11
++.*:   (7d 40 01 06|06 01 40 7d)       wrtee   r10
++.*:   (7c 00 81 46|46 81 00 7c)       wrteei  1
++.*:   (7d 6a 62 79|79 62 6a 7d)       xor\.    r10,r11,r12
++.*:   (7d 6a 62 78|78 62 6a 7d)       xor     r10,r11,r12
++.*:   (69 6a 10 00|00 10 6a 69)       xori    r10,r11,4096
++.*:   (6d 6a 10 00|00 10 6a 6d)       xoris   r10,r11,4096
+ #pass
+diff --git a/gas/testsuite/gas/ppc/a2.s b/gas/testsuite/gas/ppc/a2.s
+index 6893ae8cfef..c3d23ea3def 100644
+--- a/gas/testsuite/gas/ppc/a2.s
++++ b/gas/testsuite/gas/ppc/a2.s
+@@ -295,10 +295,6 @@ start:
+       lhzu    10,2(11)
+       lhzux   10,11,12
+       lhzx    10,11,12
+-      lmw     20,16(10)
+-      lswi    10,11,1
+-      lswi    12,11,32
+-      lswx    10,11,12
+       lwa     10,-4(11)
+       lwa     10,4(11)
+       lwarx   10,11,12,0
+@@ -486,10 +482,6 @@ start:
+       sthu    10,2(11)
+       sthux   10,11,12
+       sthx    10,11,12
+-      stmw    20,16(10)
+-      stswi   10,11,1
+-      stswi   10,11,32
+-      stswx   10,11,12
+       stwbrx  10,11,12
+       stwcx.  10,11,12
+       stwepx  10,11,12
+diff --git a/gas/testsuite/gas/ppc/be.d b/gas/testsuite/gas/ppc/be.d
+new file mode 100644
+index 00000000000..9255ddbadf4
+--- /dev/null
++++ b/gas/testsuite/gas/ppc/be.d
+@@ -0,0 +1,17 @@
++#objdump: -d -Mcom
++#as: -mcom -be
++#name: BE only instructions
++
++.*
++
++Disassembly of section \.text:
++
++0+00 <start>:
++.*:   ba 8a 00 10     lmw     r20,16\(r10\)
++.*:   7d 4b 0c aa     lswi    r10,r11,1
++.*:   7d 8b 04 aa     lswi    r12,r11,32
++.*:   7d 4b 64 2a     lswx    r10,r11,r12
++.*:   be 8a 00 10     stmw    r20,16\(r10\)
++.*:   7d 4b 0d aa     stswi   r10,r11,1
++.*:   7d 4b 05 aa     stswi   r10,r11,32
++.*:   7d 4b 65 2a     stswx   r10,r11,r12
+diff --git a/gas/testsuite/gas/ppc/be.s b/gas/testsuite/gas/ppc/be.s
+new file mode 100644
+index 00000000000..dbbcbb63311
+--- /dev/null
++++ b/gas/testsuite/gas/ppc/be.s
+@@ -0,0 +1,10 @@
++      .text
++start:
++      lmw     20,16(10)
++      lswi    10,11,1
++      lswi    12,11,32
++      lswx    10,11,12
++      stmw    20,16(10)
++      stswi   10,11,1
++      stswi   10,11,32
++      stswx   10,11,12
+diff --git a/gas/testsuite/gas/ppc/int128.d b/gas/testsuite/gas/ppc/int128.d
+index c9f14d3360d..d7410345ad7 100644
+--- a/gas/testsuite/gas/ppc/int128.d
++++ b/gas/testsuite/gas/ppc/int128.d
+@@ -20,7 +20,7 @@ Disassembly of section \.text:
+ .*:   (13 9d f7 0b|0b f7 9d 13)       vmodsq  v28,v29,v30
+ .*:   (13 e0 0e 0b|0b 0e e0 13)       vmoduq  v31,v0,v1
+ .*:   (10 5b 1e 02|02 1e 5b 10)       vextsd2q v2,v3
+-.*:   (10 04 29 01|01 29 04 10)       vcmpuq  v4,v5
++.*:   (10 04 29 01|01 29 04 10)       vcmpuq  cr0,v4,v5
+ .*:   (10 86 39 41|41 39 86 10)       vcmpsq  cr1,v6,v7
+ .*:   (11 09 51 c7|c7 51 09 11)       vcmpequq v8,v9,v10
+ .*:   (11 6c 6d c7|c7 6d 6c 11)       vcmpequq. v11,v12,v13
+diff --git a/gas/testsuite/gas/ppc/int128.s b/gas/testsuite/gas/ppc/int128.s
+index 4dce648c36f..4561cfe9ee6 100644
+--- a/gas/testsuite/gas/ppc/int128.s
++++ b/gas/testsuite/gas/ppc/int128.s
+@@ -12,7 +12,7 @@ _start:
+       vmodsq  28,29,30
+       vmoduq  31,0,1
+       vextsd2q 2,3
+-      vcmpuq  4,5
++      vcmpuq  0,4,5
+       vcmpsq  1,6,7
+       vcmpequq 8,9,10
+       vcmpequq. 11,12,13
+diff --git a/gas/testsuite/gas/ppc/le_error.d b/gas/testsuite/gas/ppc/le_error.d
+new file mode 100644
+index 00000000000..765004655e5
+--- /dev/null
++++ b/gas/testsuite/gas/ppc/le_error.d
+@@ -0,0 +1,3 @@
++#as: -mcom -le
++#source: be.s
++#error_output: le_error.l
+diff --git a/gas/testsuite/gas/ppc/le_error.l b/gas/testsuite/gas/ppc/le_error.l
+new file mode 100644
+index 00000000000..dd0021b972c
+--- /dev/null
++++ b/gas/testsuite/gas/ppc/le_error.l
+@@ -0,0 +1,9 @@
++.*Assembler messages:
++.*invalid when little-endian
++.*invalid when little-endian
++.*invalid when little-endian
++.*invalid when little-endian
++.*invalid when little-endian
++.*invalid when little-endian
++.*invalid when little-endian
++.*invalid when little-endian
+diff --git a/gas/testsuite/gas/ppc/power8.d b/gas/testsuite/gas/ppc/power8.d
+index dfd3345461d..df3f5d410db 100644
+--- a/gas/testsuite/gas/ppc/power8.d
++++ b/gas/testsuite/gas/ppc/power8.d
+@@ -7,151 +7,151 @@
+ Disassembly of section \.text:
+ 0+00 <power8>:
+-   0: (7c 05 07 1d|1d 07 05 7c)       tabort\. r5
+-   4: (7c e8 86 1d|1d 86 e8 7c)       tabortwc\. 7,r8,r16
+-   8: (7e 8b 56 5d|5d 56 8b 7e)       tabortdc\. 20,r11,r10
+-   c: (7e 2a 9e 9d|9d 9e 2a 7e)       tabortwci\. 17,r10,-13
+-  10: (7f a3 de dd|dd de a3 7f)       tabortdci\. 29,r3,-5
+-  14: (7c 00 05 1d|1d 05 00 7c)       tbegin\.
+-  18: (7f 80 05 9c|9c 05 80 7f)       tcheck  cr7
+-  1c: (7c 00 05 5d|5d 05 00 7c)       tend\.
+-  20: (7c 00 05 5d|5d 05 00 7c)       tend\.
+-  24: (7e 00 05 5d|5d 05 00 7e)       tendall\.
+-  28: (7e 00 05 5d|5d 05 00 7e)       tendall\.
+-  2c: (7c 18 07 5d|5d 07 18 7c)       treclaim\. r24
+-  30: (7c 00 07 dd|dd 07 00 7c)       trechkpt\.
+-  34: (7c 00 05 dd|dd 05 00 7c)       tsuspend\.
+-  38: (7c 00 05 dd|dd 05 00 7c)       tsuspend\.
+-  3c: (7c 20 05 dd|dd 05 20 7c)       tresume\.
+-  40: (7c 20 05 dd|dd 05 20 7c)       tresume\.
+-  44: (60 42 00 00|00 00 42 60)       ori     r2,r2,0
+-  48: (60 00 00 00|00 00 00 60)       nop
+-  4c: (60 42 00 00|00 00 42 60)       ori     r2,r2,0
+-  50: (4c 00 01 24|24 01 00 4c)       rfebb   0
+-  54: (4c 00 09 24|24 09 00 4c)       rfebb
+-  58: (4c 00 09 24|24 09 00 4c)       rfebb
+-  5c: (4d d5 04 60|60 04 d5 4d)       bgttar- cr5
+-  60: (4c c7 04 61|61 04 c7 4c)       bnstarl- cr1
+-  64: (4d ec 04 60|60 04 ec 4d)       blttar\+ cr3
+-  68: (4c e2 04 61|61 04 e2 4c)       bnetarl\+
+-  6c: (4c 88 0c 60|60 0c 88 4c)       bctar   4,4\*cr2\+lt,1
+-  70: (4c 87 14 61|61 14 87 4c)       bctarl  4,4\*cr1\+so,2
+-  74: (7c 00 00 3c|3c 00 00 7c)       waitasec
+-  78: (7c 00 41 1c|1c 41 00 7c)       msgsndp r8
+-  7c: (7c 20 01 26|26 01 20 7c)       mtsle   1
+-  80: (7c 00 d9 5c|5c d9 00 7c)       msgclrp r27
+-  84: (7d 4a 61 6d|6d 61 4a 7d)       stqcx\.  r10,r10,r12
+-  88: (7f 80 39 6d|6d 39 80 7f)       stqcx\.  r28,0,r7
+-  8c: (7f 13 5a 28|28 5a 13 7f)       lqarx   r24,r19,r11
+-  90: (7e c0 5a 28|28 5a c0 7e)       lqarx   r22,0,r11
+-  94: (7e 80 32 5c|5c 32 80 7e)       mfbhrbe r20,6
+-  98: (7f b1 83 29|29 83 b1 7f)       pbt\.    r29,r17,r16
+-  9c: (7d c0 3b 29|29 3b c0 7d)       pbt\.    r14,0,r7
+-  a0: (7c 00 03 5c|5c 03 00 7c)       clrbhrb
+-  a4: (11 6a 05 ed|ed 05 6a 11)       vpermxor v11,v10,v0,v23
+-  a8: (13 02 39 3c|3c 39 02 13)       vaddeuqm v24,v2,v7,v4
+-  ac: (11 4a 40 bd|bd 40 4a 11)       vaddecuq v10,v10,v8,v2
+-  b0: (10 af 44 fe|fe 44 af 10)       vsubeuqm v5,v15,v8,v19
+-  b4: (11 9f 87 7f|7f 87 9f 11)       vsubecuq v12,v31,v16,v29
+-  b8: (12 9d 68 88|88 68 9d 12)       vmulouw v20,v29,v13
+-  bc: (13 a0 d0 89|89 d0 a0 13)       vmuluwm v29,v0,v26
+-  c0: (11 15 e0 c0|c0 e0 15 11)       vaddudm v8,v21,v28
+-  c4: (10 3a 08 c2|c2 08 3a 10)       vmaxud  v1,v26,v1
+-  c8: (12 83 08 c4|c4 08 83 12)       vrld    v20,v3,v1
+-  cc: (10 93 58 c7|c7 58 93 10)       vcmpequd v4,v19,v11
+-  d0: (12 ee f1 00|00 f1 ee 12)       vadduqm v23,v14,v30
+-  d4: (11 08 69 40|40 69 08 11)       vaddcuq v8,v8,v13
+-  d8: (13 9b 21 88|88 21 9b 13)       vmulosw v28,v27,v4
+-  dc: (10 64 21 c2|c2 21 64 10)       vmaxsd  v3,v4,v4
+-  e0: (10 13 aa 88|88 aa 13 10)       vmuleuw v0,v19,v21
+-  e4: (13 14 9a c2|c2 9a 14 13)       vminud  v24,v20,v19
+-  e8: (10 1c 7a c7|c7 7a 1c 10)       vcmpgtud v0,v28,v15
+-  ec: (12 a0 13 88|88 13 a0 12)       vmulesw v21,v0,v2
+-  f0: (11 3a 4b c2|c2 4b 3a 11)       vminsd  v9,v26,v9
+-  f4: (13 3d 5b c4|c4 5b 3d 13)       vsrad   v25,v29,v11
+-  f8: (11 7c 5b c7|c7 5b 7c 11)       vcmpgtsd v11,v28,v11
+-  fc: (10 a8 d6 01|01 d6 a8 10)       bcdadd\. v5,v8,v26,1
+- 100: (10 83 64 08|08 64 83 10)       vpmsumb v4,v3,v12
+- 104: (13 5f ae 41|41 ae 5f 13)       bcdsub\. v26,v31,v21,1
+- 108: (10 b1 84 48|48 84 b1 10)       vpmsumh v5,v17,v16
+- 10c: (12 f1 a4 4e|4e a4 f1 12)       vpkudum v23,v17,v20
+- 110: (13 15 ec 88|88 ec 15 13)       vpmsumw v24,v21,v29
+- 114: (11 36 6c c8|c8 6c 36 11)       vpmsumd v9,v22,v13
+- 118: (12 53 94 ce|ce 94 53 12)       vpkudus v18,v19,v18
+- 11c: (13 d0 b5 00|00 b5 d0 13)       vsubuqm v30,v16,v22
+- 120: (11 cb 3d 08|08 3d cb 11)       vcipher v14,v11,v7
+- 124: (11 42 b5 09|09 b5 42 11)       vcipherlast v10,v2,v22
+- 128: (12 e0 6d 0c|0c 6d e0 12)       vgbbd   v23,v13
+- 12c: (12 19 85 40|40 85 19 12)       vsubcuq v16,v25,v16
+- 130: (13 e1 2d 44|44 2d e1 13)       vorc    v31,v1,v5
+- 134: (10 91 fd 48|48 fd 91 10)       vncipher v4,v17,v31
+- 138: (13 02 dd 49|49 dd 02 13)       vncipherlast v24,v2,v27
+- 13c: (12 f5 bd 4c|4c bd f5 12)       vbpermq v23,v21,v23
+- 140: (13 72 4d 4e|4e 4d 72 13)       vpksdus v27,v18,v9
+- 144: (13 7d dd 84|84 dd 7d 13)       vnand   v27,v29,v27
+- 148: (12 73 c5 c4|c4 c5 73 12)       vsld    v19,v19,v24
+- 14c: (10 ad 05 c8|c8 05 ad 10)       vsbox   v5,v13
+- 150: (13 23 3d ce|ce 3d 23 13)       vpksdss v25,v3,v7
+- 154: (13 88 04 c7|c7 04 88 13)       vcmpequd\. v28,v8,v0
+- 158: (13 40 d6 4e|4e d6 40 13)       vupkhsw v26,v26
+- 15c: (10 a7 36 82|82 36 a7 10)       vshasigmaw v5,v7,0,6
+- 160: (13 95 76 84|84 76 95 13)       veqv    v28,v21,v14
+- 164: (10 28 9e 8c|8c 9e 28 10)       vmrgow  v1,v8,v19
+- 168: (10 0a 56 c2|c2 56 0a 10)       vshasigmad v0,v10,0,10
+- 16c: (10 bb 76 c4|c4 76 bb 10)       vsrd    v5,v27,v14
+- 170: (11 60 6e ce|ce 6e 60 11)       vupklsw v11,v13
+- 174: (11 c0 87 02|02 87 c0 11)       vclzb   v14,v16
+- 178: (12 80 df 03|03 df 80 12)       vpopcntb v20,v27
+- 17c: (13 80 5f 42|42 5f 80 13)       vclzh   v28,v11
+- 180: (13 00 4f 43|43 4f 00 13)       vpopcnth v24,v9
+- 184: (13 60 ff 82|82 ff 60 13)       vclzw   v27,v31
+- 188: (12 20 9f 83|83 9f 20 12)       vpopcntw v17,v19
+- 18c: (11 80 ef c2|c2 ef 80 11)       vclzd   v12,v29
+- 190: (12 e0 b7 c3|c3 b7 e0 12)       vpopcntd v23,v22
+- 194: (13 14 ee c7|c7 ee 14 13)       vcmpgtud\. v24,v20,v29
+- 198: (11 26 df c7|c7 df 26 11)       vcmpgtsd\. v9,v6,v27
+- 19c: (7f ce d0 19|19 d0 ce 7f)       lxsiwzx vs62,r14,r26
+- 1a0: (7d 00 c8 19|19 c8 00 7d)       lxsiwzx vs40,0,r25
+- 1a4: (7f 20 d0 98|98 d0 20 7f)       lxsiwax vs25,0,r26
+- 1a8: (7c 60 18 98|98 18 60 7c)       lxsiwax vs3,0,r3
+- 1ac: (7f cc 00 67|67 00 cc 7f)       mfvsrd  r12,vs62
+- 1b0: (7d 94 00 e6|e6 00 94 7d)       mffprwz r20,f12
+- 1b4: (7d c9 71 18|18 71 c9 7d)       stxsiwx vs14,r9,r14
+- 1b8: (7e a0 41 18|18 41 a0 7e)       stxsiwx vs21,0,r8
+- 1bc: (7e 0b 01 67|67 01 0b 7e)       mtvsrd  vs48,r11
+- 1c0: (7f f7 01 a7|a7 01 f7 7f)       mtvrwa  v31,r23
+- 1c4: (7e 1a 01 e6|e6 01 1a 7e)       mtfprwz f16,r26
+- 1c8: (7d b3 6c 18|18 6c b3 7d)       lxsspx  vs13,r19,r13
+- 1cc: (7e 40 6c 18|18 6c 40 7e)       lxsspx  vs18,0,r13
+- 1d0: (7d 62 25 19|19 25 62 7d)       stxsspx vs43,r2,r4
+- 1d4: (7e e0 5d 19|19 5d e0 7e)       stxsspx vs55,0,r11
+- 1d8: (f2 d0 c8 05|05 c8 d0 f2)       xsaddsp vs54,vs48,vs25
+- 1dc: (f1 d2 08 0c|0c 08 d2 f1)       xsmaddasp vs14,vs50,vs1
+- 1e0: (f3 56 50 42|42 50 56 f3)       xssubsp vs26,vs22,vs42
+- 1e4: (f3 75 a0 4e|4e a0 75 f3)       xsmaddmsp vs27,vs53,vs52
+- 1e8: (f1 00 d8 2a|2a d8 00 f1)       xsrsqrtesp vs8,vs59
+- 1ec: (f1 80 48 2e|2e 48 80 f1)       xssqrtsp vs12,vs41
+- 1f0: (f3 2b 00 83|83 00 2b f3)       xsmulsp vs57,vs11,vs32
+- 1f4: (f0 d4 d0 89|89 d0 d4 f0)       xsmsubasp vs38,vs20,vs26
+- 1f8: (f3 53 30 c0|c0 30 53 f3)       xsdivsp vs26,vs19,vs6
+- 1fc: (f0 65 b8 cf|cf b8 65 f0)       xsmsubmsp vs35,vs37,vs55
+- 200: (f3 60 40 69|69 40 60 f3)       xsresp  vs59,vs8
+- 204: (f1 81 0c 0f|0f 0c 81 f1)       xsnmaddasp vs44,vs33,vs33
+- 208: (f2 3e f4 4c|4c f4 3e f2)       xsnmaddmsp vs17,vs62,vs30
+- 20c: (f2 d4 fc 8d|8d fc d4 f2)       xsnmsubasp vs54,vs52,vs31
+- 210: (f0 a5 d4 cb|cb d4 a5 f0)       xsnmsubmsp vs37,vs5,vs58
+- 214: (f3 d6 65 56|56 65 d6 f3)       xxlorc  vs30,vs54,vs44
+- 218: (f2 2e ed 91|91 ed 2e f2)       xxlnand vs49,vs14,vs29
+- 21c: (f3 d6 f5 d1|d1 f5 d6 f3)       xxleqv  vs62,vs22,vs30
+- 220: (f3 80 b4 2f|2f b4 80 f3)       xscvdpspn vs60,vs54
+- 224: (f2 c0 6c 66|66 6c c0 f2)       xsrsp   vs22,vs45
+- 228: (f3 40 dc a2|a2 dc 40 f3)       xscvuxdsp vs26,vs59
+- 22c: (f0 c0 8c e3|e3 8c c0 f0)       xscvsxdsp vs38,vs49
+- 230: (f3 60 d5 2d|2d d5 60 f3)       xscvspdpn vs59,vs26
+- 234: (ff 0e 16 8c|8c 16 0e ff)       fmrgow  f24,f14,f2
+- 238: (fe c7 2f 8c|8c 2f c7 fe)       fmrgew  f22,f7,f5
+- 23c: (7c 00 71 9c|9c 71 00 7c)       msgsnd  r14
+- 240: (7c 00 b9 dc|dc b9 00 7c)       msgclr  r23
++.*:   (7c 05 07 1d|1d 07 05 7c)       tabort\. r5
++.*:   (7c e8 86 1d|1d 86 e8 7c)       tabortwc\. 7,r8,r16
++.*:   (7e 8b 56 5d|5d 56 8b 7e)       tabortdc\. 20,r11,r10
++.*:   (7e 2a 9e 9d|9d 9e 2a 7e)       tabortwci\. 17,r10,-13
++.*:   (7f a3 de dd|dd de a3 7f)       tabortdci\. 29,r3,-5
++.*:   (7c 00 05 1d|1d 05 00 7c)       tbegin\.
++.*:   (7f 80 05 9c|9c 05 80 7f)       tcheck  cr7
++.*:   (7c 00 05 5d|5d 05 00 7c)       tend\.
++.*:   (7c 00 05 5d|5d 05 00 7c)       tend\.
++.*:   (7e 00 05 5d|5d 05 00 7e)       tendall\.
++.*:   (7e 00 05 5d|5d 05 00 7e)       tendall\.
++.*:   (7c 18 07 5d|5d 07 18 7c)       treclaim\. r24
++.*:   (7c 00 07 dd|dd 07 00 7c)       trechkpt\.
++.*:   (7c 00 05 dd|dd 05 00 7c)       tsuspend\.
++.*:   (7c 00 05 dd|dd 05 00 7c)       tsuspend\.
++.*:   (7c 20 05 dd|dd 05 20 7c)       tresume\.
++.*:   (7c 20 05 dd|dd 05 20 7c)       tresume\.
++.*:   (60 42 00 00|00 00 42 60)       ori     r2,r2,0
++.*:   (60 00 00 00|00 00 00 60)       nop
++.*:   (60 42 00 00|00 00 42 60)       ori     r2,r2,0
++.*:   (4c 00 01 24|24 01 00 4c)       rfebb   0
++.*:   (4c 00 09 24|24 09 00 4c)       rfebb
++.*:   (4c 00 09 24|24 09 00 4c)       rfebb
++.*:   (4d d5 04 60|60 04 d5 4d)       bgttar- cr5
++.*:   (4c c7 04 61|61 04 c7 4c)       bnstarl- cr1
++.*:   (4d ec 04 60|60 04 ec 4d)       blttar\+ cr3
++.*:   (4c e2 04 61|61 04 e2 4c)       bnetarl\+
++.*:   (4c 88 0c 60|60 0c 88 4c)       bctar   4,4\*cr2\+lt,1
++.*:   (4c 87 14 61|61 14 87 4c)       bctarl  4,4\*cr1\+so,2
++.*:   (7c 00 00 3c|3c 00 00 7c)       waitasec
++.*:   (7c 00 41 1c|1c 41 00 7c)       msgsndp r8
++.*:   (7c 20 01 26|26 01 20 7c)       mtsle   1
++.*:   (7c 00 d9 5c|5c d9 00 7c)       msgclrp r27
++.*:   (7d 4a 61 6d|6d 61 4a 7d)       stqcx\.  r10,r10,r12
++.*:   (7f 80 39 6d|6d 39 80 7f)       stqcx\.  r28,0,r7
++.*:   (7f 13 5a 28|28 5a 13 7f)       lqarx   r24,r19,r11
++.*:   (7e c0 5a 28|28 5a c0 7e)       lqarx   r22,0,r11
++.*:   (7e 80 32 5c|5c 32 80 7e)       mfbhrbe r20,6
++.*:   (7f b1 83 29|29 83 b1 7f)       pbt\.    r29,r17,r16
++.*:   (7d c0 3b 29|29 3b c0 7d)       pbt\.    r14,0,r7
++.*:   (7c 00 03 5c|5c 03 00 7c)       clrbhrb
++.*:   (11 6a 05 ed|ed 05 6a 11)       vpermxor v11,v10,v0,v23
++.*:   (13 02 39 3c|3c 39 02 13)       vaddeuqm v24,v2,v7,v4
++.*:   (11 4a 40 bd|bd 40 4a 11)       vaddecuq v10,v10,v8,v2
++.*:   (10 af 44 fe|fe 44 af 10)       vsubeuqm v5,v15,v8,v19
++.*:   (11 9f 87 7f|7f 87 9f 11)       vsubecuq v12,v31,v16,v29
++.*:   (12 9d 68 88|88 68 9d 12)       vmulouw v20,v29,v13
++.*:   (13 a0 d0 89|89 d0 a0 13)       vmuluwm v29,v0,v26
++.*:   (11 15 e0 c0|c0 e0 15 11)       vaddudm v8,v21,v28
++.*:   (10 3a 08 c2|c2 08 3a 10)       vmaxud  v1,v26,v1
++.*:   (12 83 08 c4|c4 08 83 12)       vrld    v20,v3,v1
++.*:   (10 93 58 c7|c7 58 93 10)       vcmpequd v4,v19,v11
++.*:   (12 ee f1 00|00 f1 ee 12)       vadduqm v23,v14,v30
++.*:   (11 08 69 40|40 69 08 11)       vaddcuq v8,v8,v13
++.*:   (13 9b 21 88|88 21 9b 13)       vmulosw v28,v27,v4
++.*:   (10 64 21 c2|c2 21 64 10)       vmaxsd  v3,v4,v4
++.*:   (10 13 aa 88|88 aa 13 10)       vmuleuw v0,v19,v21
++.*:   (13 14 9a c2|c2 9a 14 13)       vminud  v24,v20,v19
++.*:   (10 1c 7a c7|c7 7a 1c 10)       vcmpgtud v0,v28,v15
++.*:   (12 a0 13 88|88 13 a0 12)       vmulesw v21,v0,v2
++.*:   (11 3a 4b c2|c2 4b 3a 11)       vminsd  v9,v26,v9
++.*:   (13 3d 5b c4|c4 5b 3d 13)       vsrad   v25,v29,v11
++.*:   (11 7c 5b c7|c7 5b 7c 11)       vcmpgtsd v11,v28,v11
++.*:   (10 a8 d6 01|01 d6 a8 10)       bcdadd\. v5,v8,v26,1
++.*:   (10 83 64 08|08 64 83 10)       vpmsumb v4,v3,v12
++.*:   (13 5f ae 41|41 ae 5f 13)       bcdsub\. v26,v31,v21,1
++.*:   (10 b1 84 48|48 84 b1 10)       vpmsumh v5,v17,v16
++.*:   (12 f1 a4 4e|4e a4 f1 12)       vpkudum v23,v17,v20
++.*:   (13 15 ec 88|88 ec 15 13)       vpmsumw v24,v21,v29
++.*:   (11 36 6c c8|c8 6c 36 11)       vpmsumd v9,v22,v13
++.*:   (12 53 94 ce|ce 94 53 12)       vpkudus v18,v19,v18
++.*:   (13 d0 b5 00|00 b5 d0 13)       vsubuqm v30,v16,v22
++.*:   (11 cb 3d 08|08 3d cb 11)       vcipher v14,v11,v7
++.*:   (11 42 b5 09|09 b5 42 11)       vcipherlast v10,v2,v22
++.*:   (12 e0 6d 0c|0c 6d e0 12)       vgbbd   v23,v13
++.*:   (12 19 85 40|40 85 19 12)       vsubcuq v16,v25,v16
++.*:   (13 e1 2d 44|44 2d e1 13)       vorc    v31,v1,v5
++.*:   (10 91 fd 48|48 fd 91 10)       vncipher v4,v17,v31
++.*:   (13 02 dd 49|49 dd 02 13)       vncipherlast v24,v2,v27
++.*:   (12 f5 bd 4c|4c bd f5 12)       vbpermq v23,v21,v23
++.*:   (13 72 4d 4e|4e 4d 72 13)       vpksdus v27,v18,v9
++.*:   (13 7d dd 84|84 dd 7d 13)       vnand   v27,v29,v27
++.*:   (12 73 c5 c4|c4 c5 73 12)       vsld    v19,v19,v24
++.*:   (10 ad 05 c8|c8 05 ad 10)       vsbox   v5,v13
++.*:   (13 23 3d ce|ce 3d 23 13)       vpksdss v25,v3,v7
++.*:   (13 88 04 c7|c7 04 88 13)       vcmpequd\. v28,v8,v0
++.*:   (13 40 d6 4e|4e d6 40 13)       vupkhsw v26,v26
++.*:   (10 a7 36 82|82 36 a7 10)       vshasigmaw v5,v7,0,6
++.*:   (13 95 76 84|84 76 95 13)       veqv    v28,v21,v14
++.*:   (10 28 9e 8c|8c 9e 28 10)       vmrgow  v1,v8,v19
++.*:   (10 0a 56 c2|c2 56 0a 10)       vshasigmad v0,v10,0,10
++.*:   (10 bb 76 c4|c4 76 bb 10)       vsrd    v5,v27,v14
++.*:   (11 60 6e ce|ce 6e 60 11)       vupklsw v11,v13
++.*:   (11 c0 87 02|02 87 c0 11)       vclzb   v14,v16
++.*:   (12 80 df 03|03 df 80 12)       vpopcntb v20,v27
++.*:   (13 80 5f 42|42 5f 80 13)       vclzh   v28,v11
++.*:   (13 00 4f 43|43 4f 00 13)       vpopcnth v24,v9
++.*:   (13 60 ff 82|82 ff 60 13)       vclzw   v27,v31
++.*:   (12 20 9f 83|83 9f 20 12)       vpopcntw v17,v19
++.*:   (11 80 ef c2|c2 ef 80 11)       vclzd   v12,v29
++.*:   (12 e0 b7 c3|c3 b7 e0 12)       vpopcntd v23,v22
++.*:   (13 14 ee c7|c7 ee 14 13)       vcmpgtud\. v24,v20,v29
++.*:   (11 26 df c7|c7 df 26 11)       vcmpgtsd\. v9,v6,v27
++.*:   (7f ce d0 19|19 d0 ce 7f)       lxsiwzx vs62,r14,r26
++.*:   (7d 00 c8 19|19 c8 00 7d)       lxsiwzx vs40,0,r25
++.*:   (7f 20 d0 98|98 d0 20 7f)       lxsiwax vs25,0,r26
++.*:   (7c 60 18 98|98 18 60 7c)       lxsiwax vs3,0,r3
++.*:   (7f cc 00 67|67 00 cc 7f)       (mfvrd   r12,v30|mfvsrd  r12,vs62)
++.*:   (7d 94 00 e6|e6 00 94 7d)       (mffprwz r20,f12|mfvsrwz r20,vs12)
++.*:   (7d c9 71 18|18 71 c9 7d)       stxsiwx vs14,r9,r14
++.*:   (7e a0 41 18|18 41 a0 7e)       stxsiwx vs21,0,r8
++.*:   (7e 0b 01 67|67 01 0b 7e)       (mtvrd   v16,r11|mtvsrd  vs48,r11)
++.*:   (7f f7 01 a7|a7 01 f7 7f)       (mtvrwa  v31,r23|mtvsrwa vs63,r23)
++.*:   (7e 1a 01 e6|e6 01 1a 7e)       (mtfprwz f16,r26|mtvsrwz vs16,r26)
++.*:   (7d b3 6c 18|18 6c b3 7d)       lxsspx  vs13,r19,r13
++.*:   (7e 40 6c 18|18 6c 40 7e)       lxsspx  vs18,0,r13
++.*:   (7d 62 25 19|19 25 62 7d)       stxsspx vs43,r2,r4
++.*:   (7e e0 5d 19|19 5d e0 7e)       stxsspx vs55,0,r11
++.*:   (f2 d0 c8 05|05 c8 d0 f2)       xsaddsp vs54,vs48,vs25
++.*:   (f1 d2 08 0c|0c 08 d2 f1)       xsmaddasp vs14,vs50,vs1
++.*:   (f3 56 50 42|42 50 56 f3)       xssubsp vs26,vs22,vs42
++.*:   (f3 75 a0 4e|4e a0 75 f3)       xsmaddmsp vs27,vs53,vs52
++.*:   (f1 00 d8 2a|2a d8 00 f1)       xsrsqrtesp vs8,vs59
++.*:   (f1 80 48 2e|2e 48 80 f1)       xssqrtsp vs12,vs41
++.*:   (f3 2b 00 83|83 00 2b f3)       xsmulsp vs57,vs11,vs32
++.*:   (f0 d4 d0 89|89 d0 d4 f0)       xsmsubasp vs38,vs20,vs26
++.*:   (f3 53 30 c0|c0 30 53 f3)       xsdivsp vs26,vs19,vs6
++.*:   (f0 65 b8 cf|cf b8 65 f0)       xsmsubmsp vs35,vs37,vs55
++.*:   (f3 60 40 69|69 40 60 f3)       xsresp  vs59,vs8
++.*:   (f1 81 0c 0f|0f 0c 81 f1)       xsnmaddasp vs44,vs33,vs33
++.*:   (f2 3e f4 4c|4c f4 3e f2)       xsnmaddmsp vs17,vs62,vs30
++.*:   (f2 d4 fc 8d|8d fc d4 f2)       xsnmsubasp vs54,vs52,vs31
++.*:   (f0 a5 d4 cb|cb d4 a5 f0)       xsnmsubmsp vs37,vs5,vs58
++.*:   (f3 d6 65 56|56 65 d6 f3)       xxlorc  vs30,vs54,vs44
++.*:   (f2 2e ed 91|91 ed 2e f2)       xxlnand vs49,vs14,vs29
++.*:   (f3 d6 f5 d1|d1 f5 d6 f3)       xxleqv  vs62,vs22,vs30
++.*:   (f3 80 b4 2f|2f b4 80 f3)       xscvdpspn vs60,vs54
++.*:   (f2 c0 6c 66|66 6c c0 f2)       xsrsp   vs22,vs45
++.*:   (f3 40 dc a2|a2 dc 40 f3)       xscvuxdsp vs26,vs59
++.*:   (f0 c0 8c e3|e3 8c c0 f0)       xscvsxdsp vs38,vs49
++.*:   (f3 60 d5 2d|2d d5 60 f3)       xscvspdpn vs59,vs26
++.*:   (ff 0e 16 8c|8c 16 0e ff)       fmrgow  f24,f14,f2
++.*:   (fe c7 2f 8c|8c 2f c7 fe)       fmrgew  f22,f7,f5
++.*:   (7c 00 71 9c|9c 71 00 7c)       msgsnd  r14
++.*:   (7c 00 b9 dc|dc b9 00 7c)       msgclr  r23
+ .*:   (7d 00 2e 99|99 2e 00 7d)       lxvd2x  vs40,0,r5
+ .*:   (7d 00 2e 99|99 2e 00 7d)       lxvd2x  vs40,0,r5
+ .*:   (7d 54 36 98|98 36 54 7d)       lxvd2x  vs10,r20,r6
+@@ -310,4 +310,6 @@ Disassembly of section \.text:
+ .*:   (4d 89 04 61|61 04 89 4d)       bgttarl cr2
+ .*:   (4d 89 04 61|61 04 89 4d)       bgttarl cr2
+ .*:   (4d 89 1c 61|61 1c 89 4d)       bctarl  12,4\*cr2\+gt,3
++.*:   (7f 5a d3 78|78 d3 5a 7f)       miso
++.*:   (7f 5a d3 78|78 d3 5a 7f)       miso
+ #pass
+diff --git a/gas/testsuite/gas/ppc/power8.s b/gas/testsuite/gas/ppc/power8.s
+index beb1c5e81c5..52a3e8ea69f 100644
+--- a/gas/testsuite/gas/ppc/power8.s
++++ b/gas/testsuite/gas/ppc/power8.s
+@@ -302,3 +302,5 @@ power8:
+       bctarl       0b01100,4*cr2+gt
+       bctarl       0b01100,4*cr2+gt,0
+       bctarl       0b01100,4*cr2+gt,3
++      or           26,26,26
++      miso
+diff --git a/gas/testsuite/gas/ppc/power9.d b/gas/testsuite/gas/ppc/power9.d
+index 4e7156d46d9..45a8f495aeb 100644
+--- a/gas/testsuite/gas/ppc/power9.d
++++ b/gas/testsuite/gas/ppc/power9.d
+@@ -399,4 +399,8 @@ Disassembly of section \.text:
+ .*:   (7c 20 20 ac|ac 20 20 7c)       dcbfl   0,r4
+ .*:   (7c 60 28 ac|ac 28 60 7c)       dcbflp  0,r5
+ .*:   (7c 60 28 ac|ac 28 60 7c)       dcbflp  0,r5
++.*:   (63 ff 00 00|00 00 ff 63)       exser
++.*:   (63 ff 00 00|00 00 ff 63)       exser
++.*:   (7c 00 18 9c|9c 18 00 7c)       msgsndu r3
++.*:   (7c 00 d8 dc|dc d8 00 7c)       msgclru r27
+ #pass
+diff --git a/gas/testsuite/gas/ppc/power9.s b/gas/testsuite/gas/ppc/power9.s
+index 69053819ffe..2d412b9e66a 100644
+--- a/gas/testsuite/gas/ppc/power9.s
++++ b/gas/testsuite/gas/ppc/power9.s
+@@ -390,3 +390,7 @@ power9:
+       dcbf        0,4,1
+       dcbflp      0,5
+       dcbf        0,5,3
++      ori         31,31,0
++      exser
++      msgsndu     3
++      msgclru     27
+diff --git a/gas/testsuite/gas/ppc/ppc.exp b/gas/testsuite/gas/ppc/ppc.exp
+index 48c4ce62f31..f2a7b44cdd3 100644
+--- a/gas/testsuite/gas/ppc/ppc.exp
++++ b/gas/testsuite/gas/ppc/ppc.exp
+@@ -76,6 +76,8 @@ if { [istarget powerpc64*-*-*] || [istarget *-*-elf64*]} then {
+ run_dump_test "common"
+ run_dump_test "476"
+ run_dump_test "a2"
++run_dump_test "be"
++run_dump_test "le_error"
+ run_dump_test "pr21303"
+ run_dump_test "vle"
+ run_dump_test "vle-reloc"
+diff --git a/gas/testsuite/gas/ppc/vsx2.d b/gas/testsuite/gas/ppc/vsx2.d
+index e7ea585262a..4f0b25bd474 100644
+--- a/gas/testsuite/gas/ppc/vsx2.d
++++ b/gas/testsuite/gas/ppc/vsx2.d
+@@ -7,59 +7,59 @@
+ Disassembly of section \.text:
+ 0+00 <vsx2>:
+-   0: (7f ce d0 19|19 d0 ce 7f)       lxsiwzx vs62,r14,r26
+-   4: (7d 00 c8 19|19 c8 00 7d)       lxsiwzx vs40,0,r25
+-   8: (7f 20 d0 98|98 d0 20 7f)       lxsiwax vs25,0,r26
+-   c: (7c 60 18 98|98 18 60 7c)       lxsiwax vs3,0,r3
+-  10: (7f cc 00 66|66 00 cc 7f)       mfvsrd  r12,vs30
+-  14: (7f cc 00 66|66 00 cc 7f)       mfvsrd  r12,vs30
+-  18: (7f cc 00 67|67 00 cc 7f)       mfvsrd  r12,vs62
+-  1c: (7f cc 00 67|67 00 cc 7f)       mfvsrd  r12,vs62
+-  20: (7d 94 00 e6|e6 00 94 7d)       mffprwz r20,f12
+-  24: (7d 94 00 e6|e6 00 94 7d)       mffprwz r20,f12
+-  28: (7d 95 00 e7|e7 00 95 7d)       mfvrwz  r21,v12
+-  2c: (7d 95 00 e7|e7 00 95 7d)       mfvrwz  r21,v12
+-  30: (7d c9 71 18|18 71 c9 7d)       stxsiwx vs14,r9,r14
+-  34: (7e a0 41 18|18 41 a0 7e)       stxsiwx vs21,0,r8
+-  38: (7d 7c 01 66|66 01 7c 7d)       mtvsrd  vs11,r28
+-  3c: (7d 7c 01 66|66 01 7c 7d)       mtvsrd  vs11,r28
+-  40: (7d 7d 01 67|67 01 7d 7d)       mtvsrd  vs43,r29
+-  44: (7d 7d 01 67|67 01 7d 7d)       mtvsrd  vs43,r29
+-  48: (7f 16 01 a6|a6 01 16 7f)       mtfprwa f24,r22
+-  4c: (7f 16 01 a6|a6 01 16 7f)       mtfprwa f24,r22
+-  50: (7f 37 01 a7|a7 01 37 7f)       mtvrwa  v25,r23
+-  54: (7f 37 01 a7|a7 01 37 7f)       mtvrwa  v25,r23
+-  58: (7f 5b 01 e6|e6 01 5b 7f)       mtfprwz f26,r27
+-  5c: (7f 5b 01 e6|e6 01 5b 7f)       mtfprwz f26,r27
+-  60: (7f 7c 01 e7|e7 01 7c 7f)       mtvrwz  v27,r28
+-  64: (7f 7c 01 e7|e7 01 7c 7f)       mtvrwz  v27,r28
+-  68: (7d b3 6c 18|18 6c b3 7d)       lxsspx  vs13,r19,r13
+-  6c: (7e 40 6c 18|18 6c 40 7e)       lxsspx  vs18,0,r13
+-  70: (7d 62 25 19|19 25 62 7d)       stxsspx vs43,r2,r4
+-  74: (7e e0 5d 19|19 5d e0 7e)       stxsspx vs55,0,r11
+-  78: (f2 d0 c8 05|05 c8 d0 f2)       xsaddsp vs54,vs48,vs25
+-  7c: (f1 d2 08 0c|0c 08 d2 f1)       xsmaddasp vs14,vs50,vs1
+-  80: (f3 56 50 42|42 50 56 f3)       xssubsp vs26,vs22,vs42
+-  84: (f3 75 a0 4e|4e a0 75 f3)       xsmaddmsp vs27,vs53,vs52
+-  88: (f1 00 d8 2a|2a d8 00 f1)       xsrsqrtesp vs8,vs59
+-  8c: (f1 80 48 2e|2e 48 80 f1)       xssqrtsp vs12,vs41
+-  90: (f3 2b 00 83|83 00 2b f3)       xsmulsp vs57,vs11,vs32
+-  94: (f0 d4 d0 89|89 d0 d4 f0)       xsmsubasp vs38,vs20,vs26
+-  98: (f3 53 30 c0|c0 30 53 f3)       xsdivsp vs26,vs19,vs6
+-  9c: (f0 65 b8 cf|cf b8 65 f0)       xsmsubmsp vs35,vs37,vs55
+-  a0: (f3 60 40 69|69 40 60 f3)       xsresp  vs59,vs8
+-  a4: (f1 81 0c 0f|0f 0c 81 f1)       xsnmaddasp vs44,vs33,vs33
+-  a8: (f2 3e f4 4c|4c f4 3e f2)       xsnmaddmsp vs17,vs62,vs30
+-  ac: (f2 d4 fc 8d|8d fc d4 f2)       xsnmsubasp vs54,vs52,vs31
+-  b0: (f0 a5 d4 cb|cb d4 a5 f0)       xsnmsubmsp vs37,vs5,vs58
+-  b4: (f3 d6 65 56|56 65 d6 f3)       xxlorc  vs30,vs54,vs44
+-  b8: (f2 2e ed 91|91 ed 2e f2)       xxlnand vs49,vs14,vs29
+-  bc: (f3 d6 f5 d1|d1 f5 d6 f3)       xxleqv  vs62,vs22,vs30
+-  c0: (f3 80 b4 2f|2f b4 80 f3)       xscvdpspn vs60,vs54
+-  c4: (f2 c0 6c 66|66 6c c0 f2)       xsrsp   vs22,vs45
+-  c8: (f3 40 dc a2|a2 dc 40 f3)       xscvuxdsp vs26,vs59
+-  cc: (f0 c0 8c e3|e3 8c c0 f0)       xscvsxdsp vs38,vs49
+-  d0: (f3 60 d5 2d|2d d5 60 f3)       xscvspdpn vs59,vs26
+-  d4: (ff 0e 16 8c|8c 16 0e ff)       fmrgow  f24,f14,f2
+-  d8: (fe c7 2f 8c|8c 2f c7 fe)       fmrgew  f22,f7,f5
++.*:   (7f ce d0 19|19 d0 ce 7f)       lxsiwzx vs62,r14,r26
++.*:   (7d 00 c8 19|19 c8 00 7d)       lxsiwzx vs40,0,r25
++.*:   (7f 20 d0 98|98 d0 20 7f)       lxsiwax vs25,0,r26
++.*:   (7c 60 18 98|98 18 60 7c)       lxsiwax vs3,0,r3
++.*:   (7f cc 00 66|66 00 cc 7f)       (mffprd  r12,f30|mfvsrd  r12,vs30)
++.*:   (7f cc 00 66|66 00 cc 7f)       (mffprd  r12,f30|mfvsrd  r12,vs30)
++.*:   (7f cc 00 67|67 00 cc 7f)       (mfvrd   r12,v30|mfvsrd  r12,vs62)
++.*:   (7f cc 00 67|67 00 cc 7f)       (mfvrd   r12,v30|mfvsrd  r12,vs62)
++.*:   (7d 94 00 e6|e6 00 94 7d)       (mffprwz r20,f12|mfvsrwz r20,vs12)
++.*:   (7d 94 00 e6|e6 00 94 7d)       (mffprwz r20,f12|mfvsrwz r20,vs12)
++.*:   (7d 95 00 e7|e7 00 95 7d)       (mfvrwz  r21,v12|mfvsrwz r21,vs44)
++.*:   (7d 95 00 e7|e7 00 95 7d)       (mfvrwz  r21,v12|mfvsrwz r21,vs44)
++.*:   (7d c9 71 18|18 71 c9 7d)       stxsiwx vs14,r9,r14
++.*:   (7e a0 41 18|18 41 a0 7e)       stxsiwx vs21,0,r8
++.*:   (7d 7c 01 66|66 01 7c 7d)       (mtfprd  f11,r28|mtvsrd  vs11,r28)
++.*:   (7d 7c 01 66|66 01 7c 7d)       (mtfprd  f11,r28|mtvsrd  vs11,r28)
++.*:   (7d 7d 01 67|67 01 7d 7d)       (mtvrd   v11,r29|mtvsrd  vs43,r29)
++.*:   (7d 7d 01 67|67 01 7d 7d)       (mtvrd   v11,r29|mtvsrd  vs43,r29)
++.*:   (7f 16 01 a6|a6 01 16 7f)       (mtfprwa f24,r22|mtvsrwa vs24,r22)
++.*:   (7f 16 01 a6|a6 01 16 7f)       (mtfprwa f24,r22|mtvsrwa vs24,r22)
++.*:   (7f 37 01 a7|a7 01 37 7f)       (mtvrwa  v25,r23|mtvsrwa vs57,r23)
++.*:   (7f 37 01 a7|a7 01 37 7f)       (mtvrwa  v25,r23|mtvsrwa vs57,r23)
++.*:   (7f 5b 01 e6|e6 01 5b 7f)       (mtfprwz f26,r27|mtvsrwz vs26,r27)
++.*:   (7f 5b 01 e6|e6 01 5b 7f)       (mtfprwz f26,r27|mtvsrwz vs26,r27)
++.*:   (7f 7c 01 e7|e7 01 7c 7f)       (mtvrwz  v27,r28|mtvsrwz vs59,r28)
++.*:   (7f 7c 01 e7|e7 01 7c 7f)       (mtvrwz  v27,r28|mtvsrwz vs59,r28)
++.*:   (7d b3 6c 18|18 6c b3 7d)       lxsspx  vs13,r19,r13
++.*:   (7e 40 6c 18|18 6c 40 7e)       lxsspx  vs18,0,r13
++.*:   (7d 62 25 19|19 25 62 7d)       stxsspx vs43,r2,r4
++.*:   (7e e0 5d 19|19 5d e0 7e)       stxsspx vs55,0,r11
++.*:   (f2 d0 c8 05|05 c8 d0 f2)       xsaddsp vs54,vs48,vs25
++.*:   (f1 d2 08 0c|0c 08 d2 f1)       xsmaddasp vs14,vs50,vs1
++.*:   (f3 56 50 42|42 50 56 f3)       xssubsp vs26,vs22,vs42
++.*:   (f3 75 a0 4e|4e a0 75 f3)       xsmaddmsp vs27,vs53,vs52
++.*:   (f1 00 d8 2a|2a d8 00 f1)       xsrsqrtesp vs8,vs59
++.*:   (f1 80 48 2e|2e 48 80 f1)       xssqrtsp vs12,vs41
++.*:   (f3 2b 00 83|83 00 2b f3)       xsmulsp vs57,vs11,vs32
++.*:   (f0 d4 d0 89|89 d0 d4 f0)       xsmsubasp vs38,vs20,vs26
++.*:   (f3 53 30 c0|c0 30 53 f3)       xsdivsp vs26,vs19,vs6
++.*:   (f0 65 b8 cf|cf b8 65 f0)       xsmsubmsp vs35,vs37,vs55
++.*:   (f3 60 40 69|69 40 60 f3)       xsresp  vs59,vs8
++.*:   (f1 81 0c 0f|0f 0c 81 f1)       xsnmaddasp vs44,vs33,vs33
++.*:   (f2 3e f4 4c|4c f4 3e f2)       xsnmaddmsp vs17,vs62,vs30
++.*:   (f2 d4 fc 8d|8d fc d4 f2)       xsnmsubasp vs54,vs52,vs31
++.*:   (f0 a5 d4 cb|cb d4 a5 f0)       xsnmsubmsp vs37,vs5,vs58
++.*:   (f3 d6 65 56|56 65 d6 f3)       xxlorc  vs30,vs54,vs44
++.*:   (f2 2e ed 91|91 ed 2e f2)       xxlnand vs49,vs14,vs29
++.*:   (f3 d6 f5 d1|d1 f5 d6 f3)       xxleqv  vs62,vs22,vs30
++.*:   (f3 80 b4 2f|2f b4 80 f3)       xscvdpspn vs60,vs54
++.*:   (f2 c0 6c 66|66 6c c0 f2)       xsrsp   vs22,vs45
++.*:   (f3 40 dc a2|a2 dc 40 f3)       xscvuxdsp vs26,vs59
++.*:   (f0 c0 8c e3|e3 8c c0 f0)       xscvsxdsp vs38,vs49
++.*:   (f3 60 d5 2d|2d d5 60 f3)       xscvspdpn vs59,vs26
++.*:   (ff 0e 16 8c|8c 16 0e ff)       fmrgow  f24,f14,f2
++.*:   (fe c7 2f 8c|8c 2f c7 fe)       fmrgew  f22,f7,f5
+ #pass
+diff --git a/gas/testsuite/gas/ppc/xvtlsbb.d b/gas/testsuite/gas/ppc/xvtlsbb.d
+index 1627d7afc6d..8aa83dd62c7 100644
+--- a/gas/testsuite/gas/ppc/xvtlsbb.d
++++ b/gas/testsuite/gas/ppc/xvtlsbb.d
+@@ -7,7 +7,7 @@
+ Disassembly of section \.text:
+ 0+0 <_start>:
+-.*:   (f0 02 ff 6e|6e ff 02 f0)       xvtlsbb vs63
++.*:   (f0 02 ff 6e|6e ff 02 f0)       xvtlsbb cr0,vs63
+ .*:   (f0 82 07 6c|6c 07 82 f0)       xvtlsbb cr1,vs0
+ .*:   (f1 02 f7 6e|6e f7 02 f1)       xvtlsbb cr2,vs62
+ .*:   (f1 82 0f 6c|6c 0f 82 f1)       xvtlsbb cr3,vs1
+diff --git a/gold/ChangeLog b/gold/ChangeLog
+index 85fefa989f0..ea4927330e2 100644
+--- a/gold/ChangeLog
++++ b/gold/ChangeLog
+@@ -1,3 +1,106 @@
++2021-01-03  Alan Modra  <amodra@gmail.com>
++
++      PR 27140
++      * powerpc.cc (Target_powerpc::Branch_info::make_stub): Only access
++      object->st_other() when 64-bit.
++      (Stub_table::add_long_branch_entry): Ignore "other" when 32-bit.
++
++2020-11-17  Alan Modra  <amodra@gmail.com>
++
++      * powerpc.cc (Target_powerpc::no_tprel_opt_): Rename from tprel_opt_.
++      Init to false.
++      (Target_powerpc::tprel_opt): Test parameters->options().tls_optimize().
++      (Target_powerpc::set_tprel_opt): Delete.
++      (Target_powerpc::set_no_tprel_opt): New function.  Update all uses
++      of set_tprel_opt.
++
++2020-11-16  Michael Hudson-Doyle  <michael.hudson@canonical.com>
++
++      PR 26902
++      * powerpc.cc (Relocate::relocate): Do not include local entry
++      offset of target function when computing the address of a stub.
++
++2020-10-09  Alan Modra  <amodra@gmail.com>
++
++      * powerpc.cc (Powerpc_relobj::do_relocate_sections): Don't do
++      local entry offset optimisation for lplt_section.
++      (Target_powerpc::Branch_info::make_stub): Don't add local
++      entry offset to long branch dest passed to
++      add_long_branch_entry.  Do pass st_other bits.
++      (Stub_table::Branch_stub_ent): Add "other_" field.
++      (Stub_table::add_long_branch_entry): Add "other" param, and
++      save.
++      (Stub_table::branch_stub_size): Adjust long branch offset.
++      (Stub_table::do_write): Likewise.
++      (Target_powerpc::Relocate::relocate): Likewise.
++
++2020-10-09  Alan Modra  <amodra@gmail.com>
++
++      * powerpc.cc (is_got_reloc): New function.
++      (Target_powerpc::Relocate::relocate): Use it here, exclude GOT
++      relocs when looking for stubs.
++
++2020-10-08  H.J. Lu  <hongjiu.lu@intel.com>
++
++      * testsuite/split_i386.sh: Updated for --split-stack-adjust-size
++      default change.
++      * testsuite/split_x86_64.sh: Likewise.
++
++2020-10-08  Alan Modra  <amodra@gmail.com>
++
++      * options.h (split_stack_adjust_size): Default to 0x100000.
++
++2020-09-26  Alan Modra  <amodra@gmail.com>
++
++      * powerpc.cc (Target_powerpc): Rename power10_stubs_ to
++      power10_relocs_.
++      (Target_powerpc::set_power10_relocs): New accessor.
++      (Target_powerpc::set_power10_stubs): Delete.
++      (Target_powerpc::power10_stubs): Adjust.
++      (Target_powerpc::has_localentry0): New accessor.
++      (ld_0_11): New constant.
++      (glink_eh_frame_fde_64v1, glink_eh_frame_fde_64v2): Adjust.
++      (glink_eh_frame_fde_64v2_localentry0): New.
++      (Output_data_glink::pltresolve_size): Update.
++      (Output_data_glink::add_eh_frame): Use localentry0 version eh_frame.
++      (Output_data_glink::do_write): Move r2 save to start of ELFv2 stub
++      and only emit for has_localentry0.  Don't use r2 in the stub.
++      (Target_powerpc::Scan::local, global): Adjust for
++      set_power10_relocs renaming.
++      (Target_powerpc::scan_relocs): Warn and reset plt_localentry0_.
++
++2020-09-24  Alan Modra  <amodra@gmail.com>
++
++      * powerpc.cc (Target_powerpc::Relocate::relocate): Don't skip
++      first insn of __tls_get_addr_opt stub.
++
++2020-09-24  Alan Modra  <amodra@gmail.com>
++
++      Apply from master
++      2020-07-27  Alan Modra  <amodra@gmail.com>
++      * options.h (DEFINE_enum): Add optional_arg__ param, adjust
++      all uses.
++      (General_options): Add --power10-stubs and --no-power10-stubs.
++      * options.cc (General_options::parse_no_power10_stubs): New.
++      (General_options::finalize): Handle --power10-stubs.
++      * powerpc.cc (set_power10_stubs): Don't set when --power10-stubs=no.
++      (power10_stubs_auto): New.
++      (struct Plt_stub_ent): Add toc_ and tocoff_.  Don't use a bitfield
++      for indx_.
++      (struct Branch_stub_ent): Add toc_and tocoff_.  Use bitfields for
++      iter_, notoc_ and save_res_.
++      (add_plt_call_entry): Set toc_.  Adjust resizing conditions for
++      --power10-stubs=auto.
++      (add_long_branch_entry): Set toc_.
++      (add_eh_frame, define_stub_syms): No longer use const_iterators
++      for plt and long branch stub iteration.
++      (build_tls_opt_head, build_tls_opt_tail): Change parameters and
++      return value.  Move tests for __tls_get_addr to callers.
++      (plt_call_size): Handle --power10-stubs=auto.
++      (branch_stub_size): Likewise.
++      (Stub_table::do_write): Likewise.
++      (relocate): Likewise.
++
+ 2020-09-19  Nick Clifton  <nickc@redhat.com>
+       This is the 2.35.1 point release.
+diff --git a/gold/options.cc b/gold/options.cc
+index b13ae71ce14..6b194374c8c 100644
+--- a/gold/options.cc
++++ b/gold/options.cc
+@@ -464,6 +464,14 @@ General_options::parse_plugin_opt(const char*, const char* arg,
+   this->add_plugin_option(arg);
+ }
++void
++General_options::parse_no_power10_stubs(const char*, const char*,
++                                      Command_line*)
++{
++  this->set_power10_stubs("no");
++  this->set_user_set_power10_stubs();
++}
++
+ void
+ General_options::parse_R(const char* option, const char* arg,
+                        Command_line* cmdline)
+@@ -1183,6 +1191,27 @@ General_options::finalize()
+         this->set_start_stop_visibility_enum(elfcpp::STV_PROTECTED);
+     }
++  // Parse the --power10-stubs argument.
++  if (!this->user_set_power10_stubs())
++    {
++      // --power10-stubs without an arg is equivalent to --power10-stubs=yes
++      // but not specifying --power10-stubs at all should be equivalent to
++      // --power10-stubs=auto.  This doesn't fit into the notion of
++      // "default_value", used both as a static initializer and to provide
++      // a missing optional arg.  Fix it here.
++      this->set_power10_stubs("auto");
++      this->set_power10_stubs_enum(POWER10_STUBS_AUTO);
++    }
++  else
++    {
++      if (strcmp(this->power10_stubs(), "auto") == 0)
++      this->set_power10_stubs_enum(POWER10_STUBS_AUTO);
++      else if (strcmp(this->power10_stubs(), "no") == 0)
++      this->set_power10_stubs_enum(POWER10_STUBS_NO);
++      else if (strcmp(this->power10_stubs(), "yes") == 0)
++      this->set_power10_stubs_enum(POWER10_STUBS_YES);
++    }
++
+   // -M is equivalent to "-Map -".
+   if (this->print_map() && !this->user_set_Map())
+     {
+diff --git a/gold/options.h b/gold/options.h
+index 3c8d25a6628..51d3614e6b6 100644
+--- a/gold/options.h
++++ b/gold/options.h
+@@ -481,9 +481,9 @@ struct Struct_special : public Struct_var
+ // After helparg__ should come an initializer list, like
+ //   {"foo", "bar", "baz"}
+ #define DEFINE_enum(varname__, dashes__, shortname__, default_value__,   \
+-                  helpstring__, helparg__, ...)                        \
++                  helpstring__, helparg__, optional_arg__, ...)        \
+   DEFINE_var(varname__, dashes__, shortname__, default_value__,          \
+-           default_value__, helpstring__, helparg__, false,            \
++           default_value__, helpstring__, helparg__, optional_arg__,   \
+            const char*, const char*, parse_choices_##varname__, false) \
+  private:                                                                \
+   static void parse_choices_##varname__(const char* option_name,         \
+@@ -703,7 +703,7 @@ class General_options
+             N_("Use DT_NEEDED for all shared libraries"));
+   DEFINE_enum(assert, options::ONE_DASH, '\0', NULL,
+-            N_("Ignored"), N_("[ignored]"),
++            N_("Ignored"), N_("[ignored]"), false,
+             {"definitions", "nodefinitions", "nosymbolic", "pure-text"});
+   // b
+@@ -761,7 +761,7 @@ class General_options
+   DEFINE_enum(compress_debug_sections, options::TWO_DASHES, '\0', "none",
+             N_("Compress .debug_* sections in the output file"),
+-            ("[none,zlib,zlib-gnu,zlib-gabi]"),
++            ("[none,zlib,zlib-gnu,zlib-gabi]"), false,
+             {"none", "zlib", "zlib-gnu", "zlib-gabi"});
+   DEFINE_bool(copy_dt_needed_entries, options::TWO_DASHES, '\0', false,
+@@ -934,7 +934,7 @@ class General_options
+               N_("FRACTION"));
+   DEFINE_enum(hash_style, options::TWO_DASHES, '\0', DEFAULT_HASH_STYLE,
+-            N_("Dynamic hash style"), N_("[sysv,gnu,both]"),
++            N_("Dynamic hash style"), N_("[sysv,gnu,both]"), false,
+             {"sysv", "gnu", "both"});
+   // i
+@@ -946,7 +946,7 @@ class General_options
+             N_("Identical Code Folding. "
+                "\'--icf=safe\' Folds ctors, dtors and functions whose"
+                " pointers are definitely not taken"),
+-            ("[none,all,safe]"),
++            ("[none,all,safe]"), false,
+             {"none", "all", "safe"});
+   DEFINE_uint(icf_iterations, options::TWO_DASHES , '\0', 0,
+@@ -1086,7 +1086,7 @@ class General_options
+   DEFINE_enum(orphan_handling, options::TWO_DASHES, '\0', "place",
+             N_("Orphan section handling"), N_("[place,discard,warn,error]"),
+-            {"place", "discard", "warn", "error"});
++            false, {"place", "discard", "warn", "error"});
+   // p
+@@ -1141,6 +1141,12 @@ class General_options
+             N_("Use posix_fallocate to reserve space in the output file"),
+             N_("Use fallocate or ftruncate to reserve space"));
++  DEFINE_enum(power10_stubs, options::TWO_DASHES, '\0', "yes",
++           N_("(PowerPC64 only) stubs use power10 insns"),
++           N_("[=auto,no,yes]"), true, {"auto", "no", "yes"});
++  DEFINE_special(no_power10_stubs, options::TWO_DASHES, '\0',
++               N_("(PowerPC64 only) stubs do not use power10 insns"), NULL);
++
+   DEFINE_bool(preread_archive_symbols, options::TWO_DASHES, '\0', false,
+             N_("Preread archive symbols when multi-threaded"), NULL);
+@@ -1236,7 +1242,7 @@ class General_options
+   DEFINE_enum(sort_section, options::TWO_DASHES, '\0', "none",
+             N_("Sort sections by name.  \'--no-text-reorder\'"
+                " will override \'--sort-section=name\' for .text"),
+-            N_("[none,name]"),
++            N_("[none,name]"), false,
+             {"none", "name"});
+   DEFINE_uint(spare_dynamic_tags, options::TWO_DASHES, '\0', 5,
+@@ -1254,7 +1260,7 @@ class General_options
+                "output sections"),
+             N_("(PowerPC only) Each output section has its own stubs"));
+-  DEFINE_uint(split_stack_adjust_size, options::TWO_DASHES, '\0', 0x4000,
++  DEFINE_uint(split_stack_adjust_size, options::TWO_DASHES, '\0', 0x100000,
+             N_("Stack size when -fsplit-stack function calls non-split"),
+             N_("SIZE"));
+@@ -1287,7 +1293,7 @@ class General_options
+             NULL);
+   DEFINE_enum(target2, options::TWO_DASHES, '\0', NULL,
+             N_("(ARM only) Set R_ARM_TARGET2 relocation type"),
+-            N_("[rel, abs, got-rel"),
++            N_("[rel, abs, got-rel"), false,
+             {"rel", "abs", "got-rel"});
+   DEFINE_bool(text_reorder, options::TWO_DASHES, '\0', true,
+@@ -1344,7 +1350,7 @@ class General_options
+   DEFINE_enum(unresolved_symbols, options::TWO_DASHES, '\0', NULL,
+             N_("How to handle unresolved symbols"),
+             ("ignore-all,report-all,ignore-in-object-files,"
+-             "ignore-in-shared-libs"),
++             "ignore-in-shared-libs"), false,
+             {"ignore-all", "report-all", "ignore-in-object-files",
+                 "ignore-in-shared-libs"});
+@@ -1507,7 +1513,7 @@ class General_options
+   DEFINE_enum(start_stop_visibility, options::DASH_Z, '\0', "protected",
+             N_("ELF symbol visibility for synthesized "
+                "__start_* and __stop_* symbols"),
+-            ("[default,internal,hidden,protected]"),
++            ("[default,internal,hidden,protected]"), false,
+             {"default", "internal", "hidden", "protected"});
+   DEFINE_bool(text, options::DASH_Z, '\0', false,
+             N_("Do not permit relocations in read-only segments"),
+@@ -1763,6 +1769,20 @@ class General_options
+   start_stop_visibility_enum() const
+   { return this->start_stop_visibility_enum_; }
++  enum Power10_stubs
++  {
++    // Use Power10 insns on @notoc calls/branches, non-Power10 elsewhere.
++    POWER10_STUBS_AUTO,
++    // Don't use Power10 insns
++    POWER10_STUBS_NO,
++    // Always use Power10 insns
++    POWER10_STUBS_YES
++  };
++
++  Power10_stubs
++  power10_stubs_enum() const
++  { return this->power10_stubs_enum_; }
++
+  private:
+   // Don't copy this structure.
+   General_options(const General_options&);
+@@ -1826,6 +1846,10 @@ class General_options
+   set_start_stop_visibility_enum(elfcpp::STV value)
+   { this->start_stop_visibility_enum_ = value; }
++  void
++  set_power10_stubs_enum(Power10_stubs value)
++  { this->power10_stubs_enum_ = value; }
++
+   // These are called by finalize() to set up the search-path correctly.
+   void
+   add_to_library_path_with_sysroot(const std::string& arg)
+@@ -1895,6 +1919,8 @@ class General_options
+   Orphan_handling orphan_handling_enum_;
+   // Symbol visibility for __start_* / __stop_* magic symbols.
+   elfcpp::STV start_stop_visibility_enum_;
++  // Power10 stubs option
++  Power10_stubs power10_stubs_enum_;
+ };
+ // The position-dependent options.  We use this to store the state of
+diff --git a/gold/powerpc.cc b/gold/powerpc.cc
+index 59ba40dc3fc..1cc2478941f 100644
+--- a/gold/powerpc.cc
++++ b/gold/powerpc.cc
+@@ -647,10 +647,9 @@ class Target_powerpc : public Sized_target<size, big_endian>
+       glink_(NULL), rela_dyn_(NULL), copy_relocs_(),
+       tlsld_got_offset_(-1U),
+       stub_tables_(), branch_lookup_table_(), branch_info_(), tocsave_loc_(),
+-      power10_stubs_(false), plt_thread_safe_(false), plt_localentry0_(false),
++      power10_relocs_(false), plt_thread_safe_(false), plt_localentry0_(false),
+       plt_localentry0_init_(false), has_localentry0_(false),
+-      has_tls_get_addr_opt_(false),
+-      tprel_opt_(parameters->options().tls_optimize()),
++      has_tls_get_addr_opt_(false), no_tprel_opt_(false),
+       relax_failed_(false), relax_fail_count_(0),
+       stub_group_size_(0), savres_section_(0),
+       tls_get_addr_(NULL), tls_get_addr_opt_(NULL),
+@@ -1079,14 +1078,25 @@ class Target_powerpc : public Sized_target<size, big_endian>
+     sym->set_dynsym_index(-1U);
+   }
++  void
++  set_power10_relocs()
++  {
++      this->power10_relocs_ = true;
++  }
++
+   bool
+   power10_stubs() const
+-  { return this->power10_stubs_; }
++  {
++    return (this->power10_relocs_
++          && (parameters->options().power10_stubs_enum()
++              != General_options::POWER10_STUBS_NO));
++  }
+-  void
+-  set_power10_stubs()
++  bool
++  power10_stubs_auto() const
+   {
+-    this->power10_stubs_ = true;
++    return (parameters->options().power10_stubs_enum()
++          == General_options::POWER10_STUBS_AUTO);
+   }
+   bool
+@@ -1097,6 +1107,10 @@ class Target_powerpc : public Sized_target<size, big_endian>
+   plt_localentry0() const
+   { return this->plt_localentry0_; }
++  bool
++  has_localentry0() const
++  { return this->has_localentry0_; }
++
+   void
+   set_has_localentry0()
+   {
+@@ -1139,11 +1153,11 @@ class Target_powerpc : public Sized_target<size, big_endian>
+   bool
+   tprel_opt() const
+-  { return this->tprel_opt_; }
++  { return !this->no_tprel_opt_ && parameters->options().tls_optimize(); }
+   void
+-  set_tprel_opt(bool val)
+-  { this->tprel_opt_ = val; }
++  set_no_tprel_opt()
++  { this->no_tprel_opt_ = true; }
+   // Remember any symbols seen with non-zero localentry, even those
+   // not providing a definition
+@@ -1696,13 +1710,13 @@ class Target_powerpc : public Sized_target<size, big_endian>
+   Branches branch_info_;
+   Tocsave_loc tocsave_loc_;
+-  bool power10_stubs_;
++  bool power10_relocs_;
+   bool plt_thread_safe_;
+   bool plt_localentry0_;
+   bool plt_localentry0_init_;
+   bool has_localentry0_;
+   bool has_tls_get_addr_opt_;
+-  bool tprel_opt_;
++  bool no_tprel_opt_;
+   bool relax_failed_;
+   int relax_fail_count_;
+@@ -1869,6 +1883,19 @@ is_plt16_reloc(unsigned int r_type)
+         || (size == 64 && r_type == elfcpp::R_PPC64_PLT16_LO_DS));
+ }
++// GOT_TYPE_STANDARD (ie. not TLS) GOT relocs
++inline bool
++is_got_reloc(unsigned int r_type)
++{
++  return (r_type == elfcpp::R_POWERPC_GOT16
++        || r_type == elfcpp::R_POWERPC_GOT16_LO
++        || r_type == elfcpp::R_POWERPC_GOT16_HI
++        || r_type == elfcpp::R_POWERPC_GOT16_HA
++        || r_type == elfcpp::R_PPC64_GOT16_DS
++        || r_type == elfcpp::R_PPC64_GOT16_LO_DS
++        || r_type == elfcpp::R_PPC64_GOT_PCREL34);
++}
++
+ // If INSN is an opcode that may be used with an @tls operand, return
+ // the transformed insn for TLS optimisation, otherwise return 0.  If
+ // REG is non-zero only match an insn with RB or RA equal to REG.
+@@ -2739,8 +2766,6 @@ Powerpc_relobj<size, big_endian>::do_relocate_sections(
+           if (this->local_has_plt_offset(i))
+             {
+               Address value = this->local_symbol_value(i, 0);
+-              if (size == 64)
+-                value += ppc64_local_entry_offset(i);
+               size_t off = this->local_plt_offset(i);
+               elfcpp::Swap<size, big_endian>::writeval(oview + off, value);
+               modified = true;
+@@ -3511,6 +3536,7 @@ Target_powerpc<size, big_endian>::Branch_info::make_stub(
+       from += (this->object_->output_section(this->shndx_)->address()
+              + this->offset_);
+       Address to;
++      unsigned int other = 0;
+       if (gsym != NULL)
+       {
+         switch (gsym->source())
+@@ -3539,7 +3565,7 @@ Target_powerpc<size, big_endian>::Branch_info::make_stub(
+         if (status != Symbol_table::CFVS_OK)
+           return true;
+         if (size == 64)
+-          to += this->object_->ppc64_local_entry_offset(gsym);
++          other = gsym->nonvis() >> 3;
+       }
+       else
+       {
+@@ -3557,7 +3583,7 @@ Target_powerpc<size, big_endian>::Branch_info::make_stub(
+           return true;
+         to = symval.value(this->object_, 0);
+         if (size == 64)
+-          to += this->object_->ppc64_local_entry_offset(this->r_sym_);
++          other = this->object_->st_other(this->r_sym_) >> 5;
+       }
+       if (!(size == 32 && this->r_type_ == elfcpp::R_PPC_PLTREL24))
+       to += this->addend_;
+@@ -3570,7 +3596,11 @@ Target_powerpc<size, big_endian>::Branch_info::make_stub(
+                                        &to, &dest_shndx))
+           return true;
+       }
+-      Address delta = to - from;
++      unsigned int local_ent = 0;
++      if (size == 64
++        && this->r_type_ != elfcpp::R_PPC64_REL24_NOTOC)
++      local_ent = elfcpp::ppc64_decode_local_entry(other);
++      Address delta = to + local_ent - from;
+       if (delta + max_branch_offset >= 2 * max_branch_offset
+         || (size == 64
+             && this->r_type_ == elfcpp::R_PPC64_REL24_NOTOC
+@@ -3592,7 +3622,7 @@ Target_powerpc<size, big_endian>::Branch_info::make_stub(
+                          && gsym->output_data() == target->savres_section());
+         ok = stub_table->add_long_branch_entry(this->object_,
+                                                this->r_type_,
+-                                               from, to, save_res);
++                                               from, to, other, save_res);
+       }
+     }
+   if (!ok)
+@@ -4181,6 +4211,7 @@ static const uint32_t cmpwi_11_0 = 0x2c0b0000;
+ static const uint32_t cror_15_15_15   = 0x4def7b82;
+ static const uint32_t cror_31_31_31   = 0x4ffffb82;
+ static const uint32_t ld_0_1          = 0xe8010000;
++static const uint32_t ld_0_11         = 0xe80b0000;
+ static const uint32_t ld_0_12         = 0xe80c0000;
+ static const uint32_t ld_2_1          = 0xe8410000;
+ static const uint32_t ld_2_2          = 0xe8420000;
+@@ -4563,9 +4594,9 @@ static const unsigned char glink_eh_frame_fde_64v1[] =
+   0, 0, 0, 0,                         // Replaced with offset to .glink.
+   0, 0, 0, 0,                         // Replaced with size of .glink.
+   0,                                  // Augmentation size.
+-  elfcpp::DW_CFA_advance_loc + 1,
++  elfcpp::DW_CFA_advance_loc + 2,
+   elfcpp::DW_CFA_register, 65, 12,
+-  elfcpp::DW_CFA_advance_loc + 5,
++  elfcpp::DW_CFA_advance_loc + 4,
+   elfcpp::DW_CFA_restore_extended, 65
+ };
+@@ -4575,9 +4606,20 @@ static const unsigned char glink_eh_frame_fde_64v2[] =
+   0, 0, 0, 0,                         // Replaced with offset to .glink.
+   0, 0, 0, 0,                         // Replaced with size of .glink.
+   0,                                  // Augmentation size.
+-  elfcpp::DW_CFA_advance_loc + 1,
++  elfcpp::DW_CFA_advance_loc + 2,
+   elfcpp::DW_CFA_register, 65, 0,
+-  elfcpp::DW_CFA_advance_loc + 7,
++  elfcpp::DW_CFA_advance_loc + 2,
++  elfcpp::DW_CFA_restore_extended, 65
++};
++
++static const unsigned char glink_eh_frame_fde_64v2_localentry0[] =
++{
++  0, 0, 0, 0,                         // Replaced with offset to .glink.
++  0, 0, 0, 0,                         // Replaced with size of .glink.
++  0,                                  // Augmentation size.
++  elfcpp::DW_CFA_advance_loc + 3,
++  elfcpp::DW_CFA_register, 65, 0,
++  elfcpp::DW_CFA_advance_loc + 2,
+   elfcpp::DW_CFA_restore_extended, 65
+ };
+@@ -4631,26 +4673,33 @@ class Stub_table : public Output_relaxed_input_section
+   struct Plt_stub_ent
+   {
+     Plt_stub_ent(unsigned int off, unsigned int indx)
+-      : off_(off), indx_(indx), iter_(0), notoc_(0), r2save_(0), localentry0_(0)
++      : off_(off), indx_(indx), iter_(0), notoc_(0), toc_(0),
++      r2save_(0), localentry0_(0), tocoff_(0)
+     { }
+     unsigned int off_;
+-    unsigned int indx_ : 28;
++    unsigned int indx_;
+     unsigned int iter_ : 1;
+     unsigned int notoc_ : 1;
++    unsigned int toc_ : 1;
+     unsigned int r2save_ : 1;
+     unsigned int localentry0_ : 1;
++    unsigned int tocoff_ : 8;
+   };
+   struct Branch_stub_ent
+   {
+     Branch_stub_ent(unsigned int off, bool notoc, bool save_res)
+-      : off_(off), iter_(false), notoc_(notoc), save_res_(save_res)
++      : off_(off), iter_(0), notoc_(notoc), toc_(0), save_res_(save_res),
++      other_(0), tocoff_(0)
+     { }
+     unsigned int off_;
+-    bool iter_;
+-    bool notoc_;
+-    bool save_res_;
++    unsigned int iter_ : 1;
++    unsigned int notoc_ : 1;
++    unsigned int toc_ : 1;
++    unsigned int save_res_ : 1;
++    unsigned int other_ : 3;
++    unsigned int tocoff_ : 8;
+   };
+   typedef typename elfcpp::Elf_types<size>::Elf_Addr Address;
+   static const Address invalid_address = static_cast<Address>(0) - 1;
+@@ -4716,7 +4765,7 @@ class Stub_table : public Output_relaxed_input_section
+   // Add a long branch stub.
+   bool
+   add_long_branch_entry(const Powerpc_relobj<size, big_endian>*,
+-                      unsigned int, Address, Address, bool);
++                      unsigned int, Address, Address, unsigned int, bool);
+   const Branch_stub_ent*
+   find_long_branch_entry(const Powerpc_relobj<size, big_endian>*,
+@@ -4898,7 +4947,7 @@ class Stub_table : public Output_relaxed_input_section
+   // Size of a given plt call stub.
+   unsigned int
+-  plt_call_size(typename Plt_stub_entries::const_iterator p) const;
++  plt_call_size(typename Plt_stub_entries::iterator p) const;
+   unsigned int
+   plt_call_align(unsigned int bytes) const
+@@ -4909,16 +4958,14 @@ class Stub_table : public Output_relaxed_input_section
+   // Return long branch stub size.
+   unsigned int
+-  branch_stub_size(typename Branch_stub_entries::const_iterator p,
++  branch_stub_size(typename Branch_stub_entries::iterator p,
+                  bool* need_lt);
+-  bool
+-  build_tls_opt_head(unsigned char** pp,
+-                   typename Plt_stub_entries::const_iterator cs);
++  void
++  build_tls_opt_head(unsigned char** pp,  bool save_lr);
+-  bool
+-  build_tls_opt_tail(unsigned char* p,
+-                   typename Plt_stub_entries::const_iterator cs);
++  void
++  build_tls_opt_tail(unsigned char* p);
+   void
+   plt_error(const Plt_stub_key& p);
+@@ -5083,15 +5130,22 @@ Stub_table<size, big_endian>::add_plt_call_entry(
+       if (r_type == elfcpp::R_PPC64_REL24_NOTOC)
+       {
+         if (!p.second && !p.first->second.notoc_
+-            && !this->targ_->power10_stubs())
++            && (!this->targ_->power10_stubs()
++                || this->targ_->power10_stubs_auto()))
+           this->need_resize_ = true;
+         p.first->second.notoc_ = 1;
+       }
+-      else if (!tocsave && !p.first->second.localentry0_)
++      else
+       {
+-        if (!p.second && !p.first->second.r2save_)
++        if (!p.second && !p.first->second.toc_)
+           this->need_resize_ = true;
+-        p.first->second.r2save_ = 1;
++        p.first->second.toc_ = 1;
++        if (!tocsave && !p.first->second.localentry0_)
++          {
++            if (!p.second && !p.first->second.r2save_)
++              this->need_resize_ = true;
++            p.first->second.r2save_ = 1;
++          }
+       }
+     }
+   if (p.second || (this->resizing_ && !p.first->second.iter_))
+@@ -5134,15 +5188,22 @@ Stub_table<size, big_endian>::add_plt_call_entry(
+       if (r_type == elfcpp::R_PPC64_REL24_NOTOC)
+       {
+         if (!p.second && !p.first->second.notoc_
+-            && !this->targ_->power10_stubs())
++            && (!this->targ_->power10_stubs()
++                || this->targ_->power10_stubs_auto()))
+           this->need_resize_ = true;
+         p.first->second.notoc_ = 1;
+       }
+-      else if (!tocsave && !p.first->second.localentry0_)
++      else
+       {
+-        if (!p.second && !p.first->second.r2save_)
++        if (!p.second && !p.first->second.toc_)
+           this->need_resize_ = true;
+-        p.first->second.r2save_ = 1;
++        p.first->second.toc_ = 1;
++        if (!tocsave && !p.first->second.localentry0_)
++          {
++            if (!p.second && !p.first->second.r2save_)
++              this->need_resize_ = true;
++            p.first->second.r2save_ = 1;
++          }
+       }
+     }
+   if (p.second || (this->resizing_ && !p.first->second.iter_))
+@@ -5224,6 +5285,7 @@ Stub_table<size, big_endian>::add_long_branch_entry(
+     unsigned int r_type,
+     Address from,
+     Address to,
++    unsigned int other,
+     bool save_res)
+ {
+   Branch_stub_key key(object, to);
+@@ -5231,11 +5293,20 @@ Stub_table<size, big_endian>::add_long_branch_entry(
+   Branch_stub_ent ent(this->branch_size_, notoc, save_res);
+   std::pair<typename Branch_stub_entries::iterator, bool> p
+     = this->long_branch_stubs_.insert(std::make_pair(key, ent));
+-  if (notoc && !p.first->second.notoc_)
++  if (notoc)
+     {
+-      this->need_resize_ = true;
++      if (!p.second && !p.first->second.notoc_)
++      this->need_resize_ = true;
+       p.first->second.notoc_ = true;
+     }
++  else
++    {
++      if (!p.second && !p.first->second.toc_)
++      this->need_resize_ = true;
++      p.first->second.toc_ = true;
++    }
++  if (size == 64 && p.first->second.other_ == 0)
++    p.first->second.other_ = other;
+   gold_assert(save_res == p.first->second.save_res_);
+   if (p.second || (this->resizing_ && !p.first->second.iter_))
+     {
+@@ -5330,7 +5401,7 @@ Stub_table<size, big_endian>::add_eh_frame(Layout* layout)
+   if (!this->targ_->has_glink())
+     return;
+-  typedef typename Plt_stub_entries::const_iterator plt_iter;
++  typedef typename Plt_stub_entries::iterator plt_iter;
+   std::vector<plt_iter> calls;
+   if (!this->plt_call_stubs_.empty())
+     for (plt_iter cs = this->plt_call_stubs_.begin();
+@@ -5491,7 +5562,8 @@ class Output_data_glink : public Output_section_data
+   {
+     if (size == 64)
+       return (8
+-            + (this->targ_->abiversion() < 2 ? 11 * 4 : 14 * 4));
++            + (this->targ_->abiversion() < 2 ? 11 * 4
++               : this->targ_->has_localentry0() ? 14 * 4 : 13 * 4));
+     return 16 * 4;
+   }
+@@ -5534,6 +5606,12 @@ Output_data_glink<size, big_endian>::add_eh_frame(Layout* layout)
+                                    sizeof (Eh_cie<64>::eh_frame_cie),
+                                    glink_eh_frame_fde_64v1,
+                                    sizeof (glink_eh_frame_fde_64v1));
++      else if (this->targ_->has_localentry0())
++      layout->add_eh_frame_for_plt(this,
++                                   Eh_cie<64>::eh_frame_cie,
++                                   sizeof (Eh_cie<64>::eh_frame_cie),
++                                   glink_eh_frame_fde_64v2_localentry0,
++                                   sizeof (glink_eh_frame_fde_64v2));
+       else
+       layout->add_eh_frame_for_plt(this,
+                                    Eh_cie<64>::eh_frame_cie,
+@@ -5632,7 +5710,7 @@ Stub_table<size, big_endian>::define_stub_syms(Symbol_table* symtab)
+       // output .symtab ordering depends on the order in which symbols
+       // are added to the linker symtab.  We want reproducible output
+       // so must sort the call stub symbols.
+-      typedef typename Plt_stub_entries::const_iterator plt_iter;
++      typedef typename Plt_stub_entries::iterator plt_iter;
+       std::vector<plt_iter> sorted;
+       sorted.resize(this->plt_call_stubs_.size());
+@@ -5676,7 +5754,7 @@ Stub_table<size, big_endian>::define_stub_syms(Symbol_table* symtab)
+       }
+     }
+-  typedef typename Branch_stub_entries::const_iterator branch_iter;
++  typedef typename Branch_stub_entries::iterator branch_iter;
+   for (branch_iter bs = this->long_branch_stubs_.begin();
+        bs != this->long_branch_stubs_.end();
+        ++bs)
+@@ -5698,88 +5776,72 @@ Stub_table<size, big_endian>::define_stub_syms(Symbol_table* symtab)
+ // Emit the start of a __tls_get_addr_opt plt call stub.
+ template<int size, bool big_endian>
+-bool
+-Stub_table<size, big_endian>::build_tls_opt_head(
+-     unsigned char** pp,
+-     typename Plt_stub_entries::const_iterator cs)
++void
++Stub_table<size, big_endian>::build_tls_opt_head(unsigned char** pp,
++                                               bool save_lr)
+ {
+-  if (this->targ_->is_tls_get_addr_opt(cs->first.sym_))
++  unsigned char* p = *pp;
++  if (size == 64)
+     {
+-      unsigned char* p = *pp;
+-      if (size == 64)
+-      {
+-        write_insn<big_endian>(p, ld_11_3 + 0);
+-        p += 4;
+-        write_insn<big_endian>(p, ld_12_3 + 8);
+-        p += 4;
+-        write_insn<big_endian>(p, mr_0_3);
+-        p += 4;
+-        write_insn<big_endian>(p, cmpdi_11_0);
+-        p += 4;
+-        write_insn<big_endian>(p, add_3_12_13);
+-        p += 4;
+-        write_insn<big_endian>(p, beqlr);
+-        p += 4;
+-        write_insn<big_endian>(p, mr_3_0);
+-        p += 4;
+-        if (cs->second.r2save_ && !cs->second.localentry0_)
+-          {
+-            write_insn<big_endian>(p, mflr_11);
+-            p += 4;
+-            write_insn<big_endian>(p, (std_11_1 + this->targ_->stk_linker()));
+-            p += 4;
+-          }
+-      }
+-      else
++      write_insn<big_endian>(p, ld_11_3 + 0);
++      p += 4;
++      write_insn<big_endian>(p, ld_12_3 + 8);
++      p += 4;
++      write_insn<big_endian>(p, mr_0_3);
++      p += 4;
++      write_insn<big_endian>(p, cmpdi_11_0);
++      p += 4;
++      write_insn<big_endian>(p, add_3_12_13);
++      p += 4;
++      write_insn<big_endian>(p, beqlr);
++      p += 4;
++      write_insn<big_endian>(p, mr_3_0);
++      p += 4;
++      if (save_lr)
+       {
+-        write_insn<big_endian>(p, lwz_11_3 + 0);
+-        p += 4;
+-        write_insn<big_endian>(p, lwz_12_3 + 4);
+-        p += 4;
+-        write_insn<big_endian>(p, mr_0_3);
+-        p += 4;
+-        write_insn<big_endian>(p, cmpwi_11_0);
++        write_insn<big_endian>(p, mflr_11);
+         p += 4;
+-        write_insn<big_endian>(p, add_3_12_2);
+-        p += 4;
+-        write_insn<big_endian>(p, beqlr);
+-        p += 4;
+-        write_insn<big_endian>(p, mr_3_0);
+-        p += 4;
+-        write_insn<big_endian>(p, nop);
++        write_insn<big_endian>(p, (std_11_1 + this->targ_->stk_linker()));
+         p += 4;
+       }
+-      *pp = p;
+-      return true;
+     }
+-  return false;
+-}
+-
+-// Emit the tail of a __tls_get_addr_opt plt call stub.
+-
+-template<int size, bool big_endian>
+-bool
+-Stub_table<size, big_endian>::build_tls_opt_tail(
+-     unsigned char* p,
+-     typename Plt_stub_entries::const_iterator cs)
+-{
+-  if (size == 64
+-      && cs->second.r2save_
+-      && !cs->second.localentry0_
+-      && this->targ_->is_tls_get_addr_opt(cs->first.sym_))
++  else
+     {
+-      write_insn<big_endian>(p, bctrl);
++      write_insn<big_endian>(p, lwz_11_3 + 0);
+       p += 4;
+-      write_insn<big_endian>(p, ld_2_1 + this->targ_->stk_toc());
++      write_insn<big_endian>(p, lwz_12_3 + 4);
+       p += 4;
+-      write_insn<big_endian>(p, ld_11_1 + this->targ_->stk_linker());
++      write_insn<big_endian>(p, mr_0_3);
+       p += 4;
+-      write_insn<big_endian>(p, mtlr_11);
++      write_insn<big_endian>(p, cmpwi_11_0);
++      p += 4;
++      write_insn<big_endian>(p, add_3_12_2);
++      p += 4;
++      write_insn<big_endian>(p, beqlr);
++      p += 4;
++      write_insn<big_endian>(p, mr_3_0);
++      p += 4;
++      write_insn<big_endian>(p, nop);
+       p += 4;
+-      write_insn<big_endian>(p, blr);
+-      return true;
+     }
+-  return false;
++  *pp = p;
++}
++
++// Emit the tail of a __tls_get_addr_opt plt call stub.
++
++template<int size, bool big_endian>
++void
++Stub_table<size, big_endian>::build_tls_opt_tail(unsigned char* p)
++{
++  write_insn<big_endian>(p, bctrl);
++  p += 4;
++  write_insn<big_endian>(p, ld_2_1 + this->targ_->stk_toc());
++  p += 4;
++  write_insn<big_endian>(p, ld_11_1 + this->targ_->stk_linker());
++  p += 4;
++  write_insn<big_endian>(p, mtlr_11);
++  p += 4;
++  write_insn<big_endian>(p, blr);
+ }
+ // Emit pc-relative plt call stub code.
+@@ -5949,7 +6011,7 @@ build_notoc_offset(unsigned char* p, uint64_t off, bool load)
+ template<int size, bool big_endian>
+ unsigned int
+ Stub_table<size, big_endian>::plt_call_size(
+-    typename Plt_stub_entries::const_iterator p) const
++    typename Plt_stub_entries::iterator p) const
+ {
+   if (size == 32)
+     {
+@@ -5961,77 +6023,122 @@ Stub_table<size, big_endian>::plt_call_size(
+   const Output_data_plt_powerpc<size, big_endian>* plt;
+   uint64_t plt_addr = this->plt_off(p, &plt);
+   plt_addr += plt->address();
+-  unsigned int bytes = 0;
+-  const Symbol* gsym = p->first.sym_;
+-  if (this->targ_->is_tls_get_addr_opt(gsym))
++  if (this->targ_->power10_stubs()
++      && this->targ_->power10_stubs_auto())
+     {
+-      if (p->second.r2save_ && !p->second.localentry0_)
+-      bytes = 13 * 4;
+-      else
+-      bytes = 7 * 4;
++      unsigned int bytes = 0;
++      if (p->second.notoc_)
++      {
++        if (this->targ_->is_tls_get_addr_opt(p->first.sym_))
++          bytes = 7 * 4;
++        uint64_t from = this->stub_address() + p->second.off_ + bytes;
++        uint64_t odd = from & 4;
++        uint64_t off = plt_addr - from;
++        if (off - odd + (1ULL << 33) < 1ULL << 34)
++          bytes += odd + 4 * 4;
++        else if (off - (8 - odd) + (0x20002ULL << 32) < 0x40004ULL << 32)
++          bytes += 7 * 4;
++        else
++          bytes += 8 * 4;
++        bytes = this->plt_call_align(bytes);
++      }
++      unsigned int tail = 0;
++      if (p->second.toc_)
++      {
++        p->second.tocoff_ = bytes;
++        if (this->targ_->is_tls_get_addr_opt(p->first.sym_))
++          {
++            bytes += 7 * 4;
++            if (p->second.r2save_ && !p->second.localentry0_)
++              {
++                bytes += 2 * 4;
++                tail = 4 * 4;
++              }
++          }
++        if (p->second.r2save_)
++          bytes += 4;
++        uint64_t got_addr
++          = this->targ_->got_section()->output_section()->address();
++        const Powerpc_relobj<size, big_endian>* ppcobj = static_cast
++          <const Powerpc_relobj<size, big_endian>*>(p->first.object_);
++        got_addr += ppcobj->toc_base_offset();
++        uint64_t off = plt_addr - got_addr;
++        bytes += 3 * 4 + 4 * (ha(off) != 0);
++      }
++      return bytes + tail;
+     }
+-
+-  if (p->second.r2save_)
+-    bytes += 4;
+-
+-  if (this->targ_->power10_stubs())
++  else
+     {
+-      uint64_t from = this->stub_address() + p->second.off_ + bytes;
+-      if (bytes > 8 * 4)
+-      from -= 4 * 4;
+-      uint64_t odd = from & 4;
+-      uint64_t off = plt_addr - from;
+-      if (off - odd + (1ULL << 33) < 1ULL << 34)
+-      bytes += odd + 4 * 4;
+-      else if (off - (8 - odd) + (0x20002ULL << 32) < 0x40004ULL << 32)
+-      bytes += 7 * 4;
+-      else
+-      bytes += 8 * 4;
+-      return bytes;
+-    }
++      unsigned int bytes = 0;
++      unsigned int tail = 0;
++      if (this->targ_->is_tls_get_addr_opt(p->first.sym_))
++      {
++        bytes = 7 * 4;
++        if (p->second.r2save_ && !p->second.localentry0_)
++          {
++            bytes = 9 * 4;
++            tail = 4 * 4;
++          }
++      }
+-  if (p->second.notoc_)
+-    {
+-      uint64_t from = this->stub_address() + p->second.off_ + bytes + 2 * 4;
+-      if (bytes > 32)
+-      from -= 4 * 4;
+-      uint64_t off = plt_addr - from;
+-      if (off + 0x8000 < 0x10000)
+-      bytes += 7 * 4;
+-      else if (off + 0x80008000ULL < 0x100000000ULL)
+-      bytes += 8 * 4;
+-      else
++      if (p->second.r2save_)
++      bytes += 4;
++
++      if (this->targ_->power10_stubs())
+       {
+-        bytes += 8 * 4;
+-        if (off + 0x800000000000ULL >= 0x1000000000000ULL
+-            && ((off >> 32) & 0xffff) != 0)
+-          bytes += 4;
+-        if (((off >> 32) & 0xffffffffULL) != 0)
+-          bytes += 4;
+-        if (hi(off) != 0)
+-          bytes += 4;
+-        if (l(off) != 0)
+-          bytes += 4;
++        uint64_t from = this->stub_address() + p->second.off_ + bytes;
++        uint64_t odd = from & 4;
++        uint64_t off = plt_addr - from;
++        if (off - odd + (1ULL << 33) < 1ULL << 34)
++          bytes += odd + 4 * 4;
++        else if (off - (8 - odd) + (0x20002ULL << 32) < 0x40004ULL << 32)
++          bytes += 7 * 4;
++        else
++          bytes += 8 * 4;
++        return bytes + tail;
+       }
+-      return bytes;
+-    }
+-  uint64_t got_addr = this->targ_->got_section()->output_section()->address();
+-  const Powerpc_relobj<size, big_endian>* ppcobj = static_cast
+-    <const Powerpc_relobj<size, big_endian>*>(p->first.object_);
+-  got_addr += ppcobj->toc_base_offset();
+-  uint64_t off = plt_addr - got_addr;
+-  bytes += 3 * 4 + 4 * (ha(off) != 0);
+-  if (this->targ_->abiversion() < 2)
+-    {
+-      bool static_chain = parameters->options().plt_static_chain();
+-      bool thread_safe = this->targ_->plt_thread_safe();
+-      bytes += (4
+-              + 4 * static_chain
+-              + 8 * thread_safe
+-              + 4 * (ha(off + 8 + 8 * static_chain) != ha(off)));
++      if (p->second.notoc_)
++      {
++        uint64_t from = this->stub_address() + p->second.off_ + bytes + 2 * 4;
++        uint64_t off = plt_addr - from;
++        if (off + 0x8000 < 0x10000)
++          bytes += 7 * 4;
++        else if (off + 0x80008000ULL < 0x100000000ULL)
++          bytes += 8 * 4;
++        else
++          {
++            bytes += 8 * 4;
++            if (off + 0x800000000000ULL >= 0x1000000000000ULL
++                && ((off >> 32) & 0xffff) != 0)
++              bytes += 4;
++            if (((off >> 32) & 0xffffffffULL) != 0)
++              bytes += 4;
++            if (hi(off) != 0)
++              bytes += 4;
++            if (l(off) != 0)
++              bytes += 4;
++          }
++        return bytes + tail;
++      }
++
++      uint64_t got_addr = this->targ_->got_section()->output_section()->address();
++      const Powerpc_relobj<size, big_endian>* ppcobj = static_cast
++      <const Powerpc_relobj<size, big_endian>*>(p->first.object_);
++      got_addr += ppcobj->toc_base_offset();
++      uint64_t off = plt_addr - got_addr;
++      bytes += 3 * 4 + 4 * (ha(off) != 0);
++      if (this->targ_->abiversion() < 2)
++      {
++        bool static_chain = parameters->options().plt_static_chain();
++        bool thread_safe = this->targ_->plt_thread_safe();
++        bytes += (4
++                  + 4 * static_chain
++                  + 8 * thread_safe
++                  + 4 * (ha(off + 8 + 8 * static_chain) != ha(off)));
++      }
++      return bytes + tail;
+     }
+-  return bytes;
+ }
+ // Return long branch stub size.
+@@ -6039,7 +6146,7 @@ Stub_table<size, big_endian>::plt_call_size(
+ template<int size, bool big_endian>
+ unsigned int
+ Stub_table<size, big_endian>::branch_stub_size(
+-     typename Branch_stub_entries::const_iterator p,
++     typename Branch_stub_entries::iterator p,
+      bool* need_lt)
+ {
+   Address loc = this->stub_address() + this->last_plt_size_ + p->second.off_;
+@@ -6053,46 +6160,57 @@ Stub_table<size, big_endian>::branch_stub_size(
+     }
+   uint64_t off = p->first.dest_ - loc;
++  unsigned int bytes = 0;
+   if (p->second.notoc_)
+     {
+       if (this->targ_->power10_stubs())
+       {
+         Address odd = loc & 4;
+         if (off + (1 << 25) < 2 << 25)
+-          return odd + 12;
+-        if (off - odd + (1ULL << 33) < 1ULL << 34)
+-          return odd + 16;
+-        if (off - (8 - odd) + (0x20002ULL << 32) < 0x40004ULL << 32)
+-          return 28;
+-        return 32;
+-      }
+-      off -= 8;
+-      if (off + 0x8000 < 0x10000)
+-      return 24;
+-      if (off + 0x80008000ULL < 0x100000000ULL)
+-      {
+-        if (off + 24 + (1 << 25) < 2 << 25)
+-          return 28;
+-        return 32;
+-      }
+-      unsigned int bytes = 32;
+-      if (off + 0x800000000000ULL >= 0x1000000000000ULL
+-        && ((off >> 32) & 0xffff) != 0)
+-      bytes += 4;
+-      if (((off >> 32) & 0xffffffffULL) != 0)
+-      bytes += 4;
+-      if (hi(off) != 0)
+-      bytes += 4;
+-      if (l(off) != 0)
+-      bytes += 4;
+-      return bytes;
++          bytes = odd + 12;
++        else if (off - odd + (1ULL << 33) < 1ULL << 34)
++          bytes = odd + 16;
++        else if (off - (8 - odd) + (0x20002ULL << 32) < 0x40004ULL << 32)
++          bytes = 28;
++        else
++          bytes = 32;
++        if (!(p->second.toc_ && this->targ_->power10_stubs_auto()))
++          return bytes;
++        p->second.tocoff_ = bytes;
++      }
++      else
++      {
++        off -= 8;
++        if (off + 0x8000 < 0x10000)
++          return 24;
++        if (off + 0x80008000ULL < 0x100000000ULL)
++          {
++            if (off + 24 + (1 << 25) < 2 << 25)
++              return 28;
++            return 32;
++          }
++
++        bytes = 32;
++        if (off + 0x800000000000ULL >= 0x1000000000000ULL
++            && ((off >> 32) & 0xffff) != 0)
++          bytes += 4;
++        if (((off >> 32) & 0xffffffffULL) != 0)
++          bytes += 4;
++        if (hi(off) != 0)
++          bytes += 4;
++        if (l(off) != 0)
++          bytes += 4;
++        return bytes;
++      }
+     }
++  off += elfcpp::ppc64_decode_local_entry(p->second.other_);
+   if (off + (1 << 25) < 2 << 25)
+-    return 4;
+-  if (!this->targ_->power10_stubs())
++    return bytes + 4;
++  if (!this->targ_->power10_stubs()
++      || (p->second.toc_ && this->targ_->power10_stubs_auto()))
+     *need_lt = true;
+-  return 16;
++  return bytes + 16;
+ }
+ template<int size, bool big_endian>
+@@ -6128,6 +6246,10 @@ Stub_table<size, big_endian>::do_write(Output_file* of)
+   if (size == 64
+       && this->targ_->power10_stubs())
+     {
++      const Output_data_got_powerpc<size, big_endian>* got
++      = this->targ_->got_section();
++      Address got_os_addr = got->output_section()->address();
++
+       if (!this->plt_call_stubs_.empty())
+       {
+         // Write out plt call stubs.
+@@ -6137,22 +6259,94 @@ Stub_table<size, big_endian>::do_write(Output_file* of)
+              ++cs)
+           {
+             p = oview + cs->second.off_;
+-            this->build_tls_opt_head(&p, cs);
+-            if (cs->second.r2save_)
+-              {
+-                write_insn<big_endian>(p, std_2_1 + this->targ_->stk_toc());
+-                p += 4;
+-              }
+             const Output_data_plt_powerpc<size, big_endian>* plt;
+             Address pltoff = this->plt_off(cs, &plt);
+             Address plt_addr = pltoff + plt->address();
+-            Address from = this->stub_address() + (p - oview);
+-            Address delta = plt_addr - from;
+-            p = build_power10_offset<big_endian>(p, delta, from & 4, true);
+-            write_insn<big_endian>(p, mtctr_12);
+-            p += 4;
+-            if (!this->build_tls_opt_tail(p, cs))
+-              write_insn<big_endian>(p, bctr);
++            if (this->targ_->power10_stubs_auto())
++              {
++                if (cs->second.notoc_)
++                  {
++                    if (this->targ_->is_tls_get_addr_opt(cs->first.sym_))
++                      this->build_tls_opt_head(&p, false);
++                    Address from = this->stub_address() + (p - oview);
++                    Address delta = plt_addr - from;
++                    p = build_power10_offset<big_endian>(p, delta, from & 4,
++                                                         true);
++                    write_insn<big_endian>(p, mtctr_12);
++                    p += 4;
++                    write_insn<big_endian>(p, bctr);
++                    p += 4;
++                    p = oview + this->plt_call_align(p - oview);
++                  }
++                if (cs->second.toc_)
++                  {
++                    if (this->targ_->is_tls_get_addr_opt(cs->first.sym_))
++                      {
++                        bool save_lr
++                          = cs->second.r2save_ && !cs->second.localentry0_;
++                        this->build_tls_opt_head(&p, save_lr);
++                      }
++                    const Powerpc_relobj<size, big_endian>* ppcobj
++                      = static_cast<const Powerpc_relobj<size, big_endian>*>(
++                          cs->first.object_);
++                    Address got_addr = got_os_addr + ppcobj->toc_base_offset();
++                    Address off = plt_addr - got_addr;
++
++                    if (off + 0x80008000 > 0xffffffff || (off & 7) != 0)
++                      this->plt_error(cs->first);
++
++                    if (cs->second.r2save_)
++                      {
++                        write_insn<big_endian>(p, std_2_1 + this->targ_->stk_toc());
++                        p += 4;
++                      }
++                    if (ha(off) != 0)
++                      {
++                        write_insn<big_endian>(p, addis_12_2 + ha(off));
++                        p += 4;
++                        write_insn<big_endian>(p, ld_12_12 + l(off));
++                        p += 4;
++                      }
++                    else
++                      {
++                        write_insn<big_endian>(p, ld_12_2 + l(off));
++                        p += 4;
++                      }
++                    write_insn<big_endian>(p, mtctr_12);
++                    p += 4;
++                    if (cs->second.r2save_
++                        && !cs->second.localentry0_
++                        && this->targ_->is_tls_get_addr_opt(cs->first.sym_))
++                      this->build_tls_opt_tail(p);
++                    else
++                      write_insn<big_endian>(p, bctr);
++                  }
++              }
++            else
++              {
++                if (this->targ_->is_tls_get_addr_opt(cs->first.sym_))
++                  {
++                    bool save_lr
++                      = cs->second.r2save_ && !cs->second.localentry0_;
++                    this->build_tls_opt_head(&p, save_lr);
++                  }
++                if (cs->second.r2save_)
++                  {
++                    write_insn<big_endian>(p, std_2_1 + this->targ_->stk_toc());
++                    p += 4;
++                  }
++                Address from = this->stub_address() + (p - oview);
++                Address delta = plt_addr - from;
++                p = build_power10_offset<big_endian>(p, delta, from & 4, true);
++                write_insn<big_endian>(p, mtctr_12);
++                p += 4;
++                if (cs->second.r2save_
++                    && !cs->second.localentry0_
++                    && this->targ_->is_tls_get_addr_opt(cs->first.sym_))
++                  this->build_tls_opt_tail(p);
++                else
++                  write_insn<big_endian>(p, bctr);
++              }
+           }
+       }
+@@ -6168,19 +6362,79 @@ Stub_table<size, big_endian>::do_write(Output_file* of)
+         p = oview + off;
+         Address loc = this->stub_address() + off;
+         Address delta = bs->first.dest_ - loc;
+-        if (bs->second.notoc_ || delta + (1 << 25) >= 2 << 25)
++        if (this->targ_->power10_stubs_auto())
+           {
+-            unsigned char* startp = p;
+-            p = build_power10_offset<big_endian>(p, delta, loc & 4, false);
+-            delta -= p - startp;
++            if (bs->second.notoc_)
++              {
++                unsigned char* startp = p;
++                p = build_power10_offset<big_endian>(p, delta,
++                                                     loc & 4, false);
++                delta -= p - startp;
++                startp = p;
++                if (delta + (1 << 25) < 2 << 25)
++                  write_insn<big_endian>(p, b | (delta & 0x3fffffc));
++                else
++                  {
++                    write_insn<big_endian>(p, mtctr_12);
++                    p += 4;
++                    write_insn<big_endian>(p, bctr);
++                  }
++                p += 4;
++                delta -= p - startp;
++              }
++            if (bs->second.toc_)
++              {
++                delta += elfcpp::ppc64_decode_local_entry(bs->second.other_);
++                if (delta + (1 << 25) >= 2 << 25)
++                  {
++                    Address brlt_addr
++                      = this->targ_->find_branch_lookup_table(bs->first.dest_);
++                    gold_assert(brlt_addr != invalid_address);
++                    brlt_addr += this->targ_->brlt_section()->address();
++                    Address got_addr = got_os_addr + bs->first.toc_base_off_;
++                    Address brltoff = brlt_addr - got_addr;
++                    if (ha(brltoff) == 0)
++                      {
++                        write_insn<big_endian>(p, ld_12_2 + l(brltoff));
++                        p += 4;
++                      }
++                    else
++                      {
++                        write_insn<big_endian>(p, addis_12_2 + ha(brltoff));
++                        p += 4;
++                        write_insn<big_endian>(p, ld_12_12 + l(brltoff));
++                        p += 4;
++                      }
++                  }
++                if (delta + (1 << 25) < 2 << 25)
++                  write_insn<big_endian>(p, b | (delta & 0x3fffffc));
++                else
++                  {
++                    write_insn<big_endian>(p, mtctr_12);
++                    p += 4;
++                    write_insn<big_endian>(p, bctr);
++                  }
++              }
+           }
+-        if (delta + (1 << 25) < 2 << 25)
+-          write_insn<big_endian>(p, b | (delta & 0x3fffffc));
+         else
+           {
+-            write_insn<big_endian>(p, mtctr_12);
+-            p += 4;
+-            write_insn<big_endian>(p, bctr);
++            if (!bs->second.notoc_)
++              delta += elfcpp::ppc64_decode_local_entry(bs->second.other_);
++            if (bs->second.notoc_ || delta + (1 << 25) >= 2 << 25)
++              {
++                unsigned char* startp = p;
++                p = build_power10_offset<big_endian>(p, delta,
++                                                     loc & 4, false);
++                delta -= p - startp;
++              }
++            if (delta + (1 << 25) < 2 << 25)
++              write_insn<big_endian>(p, b | (delta & 0x3fffffc));
++            else
++              {
++                write_insn<big_endian>(p, mtctr_12);
++                p += 4;
++                write_insn<big_endian>(p, bctr);
++              }
+           }
+       }
+     }
+@@ -6204,7 +6458,11 @@ Stub_table<size, big_endian>::do_write(Output_file* of)
+             Address plt_addr = pltoff + plt->address();
+             p = oview + cs->second.off_;
+-            this->build_tls_opt_head(&p, cs);
++            if (this->targ_->is_tls_get_addr_opt(cs->first.sym_))
++              {
++                bool save_lr = cs->second.r2save_ && !cs->second.localentry0_;
++                this->build_tls_opt_head(&p, save_lr);
++              }
+             if (cs->second.r2save_)
+               {
+                 write_insn<big_endian>(p, std_2_1 + this->targ_->stk_toc());
+@@ -6241,7 +6499,11 @@ Stub_table<size, big_endian>::do_write(Output_file* of)
+               }
+             write_insn<big_endian>(p, mtctr_12);
+             p += 4;
+-            if (!this->build_tls_opt_tail(p, cs))
++            if (cs->second.r2save_
++                && !cs->second.localentry0_
++                && this->targ_->is_tls_get_addr_opt(cs->first.sym_))
++              this->build_tls_opt_tail(p);
++            else
+               write_insn<big_endian>(p, bctr);
+           }
+       }
+@@ -6292,8 +6554,12 @@ Stub_table<size, big_endian>::do_write(Output_file* of)
+               }
+             p = oview + cs->second.off_;
+-            if (this->build_tls_opt_head(&p, cs))
+-              use_fake_dep = thread_safe;
++            if (this->targ_->is_tls_get_addr_opt(cs->first.sym_))
++              {
++                bool save_lr = cs->second.r2save_ && !cs->second.localentry0_;
++                this->build_tls_opt_head(&p, save_lr);
++                use_fake_dep = thread_safe;
++              }
+             if (cs->second.r2save_)
+               {
+                 write_insn<big_endian>(p, std_2_1 + this->targ_->stk_toc());
+@@ -6355,8 +6621,10 @@ Stub_table<size, big_endian>::do_write(Output_file* of)
+                 write_insn<big_endian>(p, ld_2_2 + l(off + 8));
+                 p += 4;
+               }
+-            if (this->build_tls_opt_tail(p, cs))
+-              ;
++            if (cs->second.r2save_
++                && !cs->second.localentry0_
++                && this->targ_->is_tls_get_addr_opt(cs->first.sym_))
++              this->build_tls_opt_tail(p);
+             else if (thread_safe && !use_fake_dep)
+               {
+                 write_insn<big_endian>(p, cmpldi_2_0);
+@@ -6382,6 +6650,8 @@ Stub_table<size, big_endian>::do_write(Output_file* of)
+         p = oview + off;
+         Address loc = this->stub_address() + off;
+         Address delta = bs->first.dest_ - loc;
++        if (!bs->second.notoc_)
++          delta += elfcpp::ppc64_decode_local_entry(bs->second.other_);
+         if (bs->second.notoc_)
+           {
+             unsigned char* startp = p;
+@@ -6437,7 +6707,8 @@ Stub_table<size, big_endian>::do_write(Output_file* of)
+             plt_addr += plt->address();
+             p = oview + cs->second.off_;
+-            this->build_tls_opt_head(&p, cs);
++            if (this->targ_->is_tls_get_addr_opt(cs->first.sym_))
++              this->build_tls_opt_head(&p, false);
+             if (parameters->options().output_is_position_independent())
+               {
+                 Address got_addr;
+@@ -6577,15 +6848,25 @@ Output_data_glink<size, big_endian>::do_write(Output_file* of)
+           }
+         else
+           {
++            if (this->targ_->has_localentry0())
++              {
++                write_insn<big_endian>(p, std_2_1 + 24),      p += 4;
++              }
+             write_insn<big_endian>(p, mflr_0),                p += 4;
+             write_insn<big_endian>(p, bcl_20_31),             p += 4;
+             write_insn<big_endian>(p, mflr_11),               p += 4;
+-            write_insn<big_endian>(p, std_2_1 + 24),          p += 4;
+-            write_insn<big_endian>(p, ld_2_11 + l(-16)),      p += 4;
+             write_insn<big_endian>(p, mtlr_0),                p += 4;
++            if (this->targ_->has_localentry0())
++              {
++                write_insn<big_endian>(p, ld_0_11 + l(-20)),  p += 4;
++              }
++            else
++              {
++                write_insn<big_endian>(p, ld_0_11 + l(-16)),  p += 4;
++              }
+             write_insn<big_endian>(p, sub_12_12_11),          p += 4;
+-            write_insn<big_endian>(p, add_11_2_11),           p += 4;
+-            write_insn<big_endian>(p, addi_0_12 + l(-48)),    p += 4;
++            write_insn<big_endian>(p, add_11_0_11),           p += 4;
++            write_insn<big_endian>(p, addi_0_12 + l(-44)),    p += 4;
+             write_insn<big_endian>(p, ld_12_11 + 0),          p += 4;
+             write_insn<big_endian>(p, srdi_0_0_2),            p += 4;
+             write_insn<big_endian>(p, mtctr_12),              p += 4;
+@@ -8191,7 +8472,7 @@ Target_powerpc<size, big_endian>::Scan::local(
+             uint32_t insn = elfcpp::Swap<32, big_endian>::readval(view + off);
+             if ((insn & ((0x3fu << 26) | 0x1f << 16))
+                 != ((15u << 26) | ((size == 32 ? 2 : 13) << 16)))
+-              target->set_tprel_opt(false);
++              target->set_no_tprel_opt();
+           }
+       }
+       break;
+@@ -8206,7 +8487,7 @@ Target_powerpc<size, big_endian>::Scan::local(
+       break;
+       // Fall through.
+     case elfcpp::R_POWERPC_TPREL16_HI:
+-      target->set_tprel_opt(false);
++      target->set_no_tprel_opt();
+       break;
+     default:
+       break;
+@@ -8230,7 +8511,7 @@ Target_powerpc<size, big_endian>::Scan::local(
+     case elfcpp::R_PPC64_GOT_TLSLD_PCREL34:
+     case elfcpp::R_PPC64_GOT_DTPREL_PCREL34:
+     case elfcpp::R_PPC64_GOT_TPREL_PCREL34:
+-      target->set_power10_stubs();
++      target->set_power10_relocs();
+       break;
+     default:
+       break;
+@@ -8988,7 +9269,7 @@ Target_powerpc<size, big_endian>::Scan::global(
+             uint32_t insn = elfcpp::Swap<32, big_endian>::readval(view + off);
+             if ((insn & ((0x3fu << 26) | 0x1f << 16))
+                 != ((15u << 26) | ((size == 32 ? 2 : 13) << 16)))
+-              target->set_tprel_opt(false);
++              target->set_no_tprel_opt();
+           }
+       }
+       break;
+@@ -9003,7 +9284,7 @@ Target_powerpc<size, big_endian>::Scan::global(
+       break;
+       // Fall through.
+     case elfcpp::R_POWERPC_TPREL16_HI:
+-      target->set_tprel_opt(false);
++      target->set_no_tprel_opt();
+       break;
+     default:
+       break;
+@@ -9027,7 +9308,7 @@ Target_powerpc<size, big_endian>::Scan::global(
+     case elfcpp::R_PPC64_GOT_TLSLD_PCREL34:
+     case elfcpp::R_PPC64_GOT_DTPREL_PCREL34:
+     case elfcpp::R_PPC64_GOT_TPREL_PCREL34:
+-      target->set_power10_stubs();
++      target->set_power10_relocs();
+       break;
+     default:
+       break;
+@@ -9369,6 +9650,13 @@ Target_powerpc<size, big_endian>::scan_relocs(
+     needs_special_offset_handling,
+     local_symbol_count,
+     plocal_symbols);
++
++  if (this->plt_localentry0_ && this->power10_relocs_)
++    {
++      gold_warning(_("--plt-localentry is incompatible with "
++                   "power10 pc-relative code"));
++      this->plt_localentry0_ = false;
++    }
+ }
+ // Functor class for processing the global symbol table.
+@@ -10118,6 +10406,7 @@ Target_powerpc<size, big_endian>::Relocate::relocate(
+        ? gsym->use_plt_offset(Scan::get_reference_flags(r_type, target))
+        : object->local_has_plt_offset(r_sym));
+   if (has_plt_offset
++      && !is_got_reloc(r_type)
+       && !is_plt16_reloc<size>(r_type)
+       && r_type != elfcpp::R_PPC64_PLT_PCREL34
+       && r_type != elfcpp::R_PPC64_PLT_PCREL34_NOTOC
+@@ -10175,19 +10464,29 @@ Target_powerpc<size, big_endian>::Relocate::relocate(
+                 const int reloc_size = elfcpp::Elf_sizes<size>::rela_size;
+                 elfcpp::Shdr<size, big_endian> shdr(relinfo->reloc_shdr);
+                 size_t reloc_count = shdr.get_sh_size() / reloc_size;
++                if (size == 64
++                    && r_type != elfcpp::R_PPC64_REL24_NOTOC)
++                  value += ent->tocoff_;
+                 if (size == 64
+                     && ent->r2save_
+-                    && r_type == elfcpp::R_PPC64_REL24_NOTOC)
+-                  value += 4;
+-                else if (size == 64
+-                         && ent->r2save_
+-                         && relnum < reloc_count - 1)
++                    && !(gsym != NULL
++                         && target->is_tls_get_addr_opt(gsym)))
+                   {
+-                    Reltype next_rela(preloc + reloc_size);
+-                    if (elfcpp::elf_r_type<size>(next_rela.get_r_info())
+-                        == elfcpp::R_PPC64_TOCSAVE
+-                        && next_rela.get_r_offset() == rela.get_r_offset() + 4)
+-                      value += 4;
++                    if (r_type == elfcpp::R_PPC64_REL24_NOTOC)
++                      {
++                        if (!(target->power10_stubs()
++                              && target->power10_stubs_auto()))
++                          value += 4;
++                      }
++                    else if (relnum < reloc_count - 1)
++                      {
++                        Reltype next_rela(preloc + reloc_size);
++                        if (elfcpp::elf_r_type<size>(next_rela.get_r_info())
++                            == elfcpp::R_PPC64_TOCSAVE
++                            && (next_rela.get_r_offset()
++                                == rela.get_r_offset() + 4))
++                          value += 4;
++                      }
+                   }
+                 localentry0 = ent->localentry0_;
+                 has_stub_value = true;
+@@ -10250,13 +10549,7 @@ Target_powerpc<size, big_endian>::Relocate::relocate(
+       elfcpp::Swap<32, big_endian>::writeval(iview + 1, pnop & 0xffffffff);
+       r_type = elfcpp::R_POWERPC_NONE;
+     }
+-  else if (r_type == elfcpp::R_POWERPC_GOT16
+-         || r_type == elfcpp::R_POWERPC_GOT16_LO
+-         || r_type == elfcpp::R_POWERPC_GOT16_HI
+-         || r_type == elfcpp::R_POWERPC_GOT16_HA
+-         || r_type == elfcpp::R_PPC64_GOT16_DS
+-         || r_type == elfcpp::R_PPC64_GOT16_LO_DS
+-         || r_type == elfcpp::R_PPC64_GOT_PCREL34)
++  else if (is_got_reloc(r_type))
+     {
+       if (gsym != NULL)
+       {
+@@ -10758,14 +11051,15 @@ Target_powerpc<size, big_endian>::Relocate::relocate(
+               || r_type == elfcpp::R_POWERPC_PLT16_HA)))
+       addend = rela.get_r_addend();
+       value = psymval->value(object, addend);
++      unsigned int local_ent = 0;
+       if (size == 64 && is_branch_reloc<size>(r_type))
+       {
+         if (target->abiversion() >= 2)
+           {
+             if (gsym != NULL)
+-              value += object->ppc64_local_entry_offset(gsym);
++              local_ent = object->ppc64_local_entry_offset(gsym);
+             else
+-              value += object->ppc64_local_entry_offset(r_sym);
++              local_ent = object->ppc64_local_entry_offset(r_sym);
+           }
+         else
+           {
+@@ -10774,9 +11068,9 @@ Target_powerpc<size, big_endian>::Relocate::relocate(
+                                       &value, &dest_shndx);
+           }
+       }
+-      Address max_branch_offset = max_branch_delta<size>(r_type);
+-      if (max_branch_offset != 0
+-        && (value - address + max_branch_offset >= 2 * max_branch_offset
++      Address max_branch = max_branch_delta<size>(r_type);
++      if (max_branch != 0
++        && (value + local_ent - address + max_branch >= 2 * max_branch
+             || (size == 64
+                 && r_type == elfcpp::R_PPC64_REL24_NOTOC
+                 && (gsym != NULL
+@@ -10795,12 +11089,20 @@ Target_powerpc<size, big_endian>::Relocate::relocate(
+                   value = (value - target->savres_section()->address()
+                            + stub_table->branch_size());
+                 else
+-                  value = (stub_table->stub_address() + stub_table->plt_size()
+-                           + ent->off_);
++                  {
++                    value = (stub_table->stub_address()
++                             + stub_table->plt_size()
++                             + ent->off_);
++                    if (size == 64
++                        && r_type != elfcpp::R_PPC64_REL24_NOTOC)
++                      value += ent->tocoff_;
++                  }
+                 has_stub_value = true;
+               }
+           }
+       }
++      if (!has_stub_value)
++      value += local_ent;
+     }
+   switch (r_type)
+diff --git a/gold/testsuite/split_i386.sh b/gold/testsuite/split_i386.sh
+index 67e2b1bb801..611c892b23f 100755
+--- a/gold/testsuite/split_i386.sh
++++ b/gold/testsuite/split_i386.sh
+@@ -45,7 +45,7 @@ match 'lea.*-0x200\(%esp\),' split_i386_1.stdout
+ match 'stc' split_i386_2.stdout
+ match 'call.*__morestack_non_split>?$' split_i386_2.stdout
+ nomatch 'call.*__morestack>?$' split_i386_2.stdout
+-match 'lea.*-0x4200\(%esp\),' split_i386_2.stdout
++match 'lea.*-0x100200\(%esp\),' split_i386_2.stdout
+ match 'failed to match' split_i386_3.stdout
+diff --git a/gold/testsuite/split_x32.sh b/gold/testsuite/split_x32.sh
+index aefdda5647f..bf395c97315 100755
+--- a/gold/testsuite/split_x32.sh
++++ b/gold/testsuite/split_x32.sh
+@@ -44,9 +44,9 @@ match 'callq.*__morestack>?$' split_x32_1.stdout
+ match 'lea.*-0x200\(%rsp\),' split_x32_1.stdout
+ match 'stc' split_x32_2.stdout
+-match 'callq.*__morestack_non_split>?$' split_x32_2.stdout
+-nomatch 'callq.*__morestack>?$' split_x32_2.stdout
+-match 'lea.*-0x4200\(%rsp\),' split_x32_2.stdout
++match 'call.*__morestack_non_split>?$' split_x32_2.stdout
++nomatch 'call.*__morestack>?$' split_x32_2.stdout
++match 'lea.*-0x100200\(%rsp\),' split_x32_2.stdout
+ match 'failed to match' split_x32_3.stdout
+diff --git a/gold/testsuite/split_x86_64.sh b/gold/testsuite/split_x86_64.sh
+index 33bb4892ed6..a91009b45a5 100755
+--- a/gold/testsuite/split_x86_64.sh
++++ b/gold/testsuite/split_x86_64.sh
+@@ -43,9 +43,9 @@ match 'callq.*__morestack>?$' split_x86_64_1.stdout
+ match 'lea.*-0x200\(%rsp\),' split_x86_64_1.stdout
+ match 'stc' split_x86_64_2.stdout
+-match 'callq.*__morestack_non_split>?$' split_x86_64_2.stdout
+-nomatch 'callq.*__morestack>?$' split_x86_64_2.stdout
+-match 'lea.*-0x4200\(%rsp\),' split_x86_64_2.stdout
++match 'call.*__morestack_non_split>?$' split_x86_64_2.stdout
++nomatch 'call.*__morestack>?$' split_x86_64_2.stdout
++match 'lea.*-0x100200\(%rsp\),' split_x86_64_2.stdout
+ match 'failed to match' split_x86_64_3.stdout
+diff --git a/include/ChangeLog b/include/ChangeLog
+index acdd85fc4df..5997c26899c 100644
+--- a/include/ChangeLog
++++ b/include/ChangeLog
+@@ -1,3 +1,15 @@
++2020-11-15  Mark Wielaard  <mark@klomp.org>
++
++      Backport from the mainline:
++      2020-09-23  Mark Wielaard  <mark@klomp.org>
++
++      Sync with GCC
++      * dwarf2.def: Add DWARF5 Unit type header encoding macros
++      DW_UT_FIRST, DW_UT and DW_UT_END.
++      * dwarf2.h (enum dwarf_unit_type): Removed and define using
++      DW_UT_FIRST, DW_UT and DW_UT_END macros.
++      (get_DW_UT_name): New function declaration.
++
+ 2020-07-22  H.J. Lu  <hongjiu.lu@intel.com>
+       PR ld/26262
+diff --git a/include/dwarf2.def b/include/dwarf2.def
+index d8a8cce7947..13825a3eef7 100644
+--- a/include/dwarf2.def
++++ b/include/dwarf2.def
+@@ -805,3 +805,14 @@ DW_IDX (DW_IDX_hi_user, 0x3fff)
+ DW_IDX (DW_IDX_GNU_internal, 0x2000)
+ DW_IDX (DW_IDX_GNU_external, 0x2001)
+ DW_END_IDX
++
++/* DWARF5 Unit type header encodings  */
++DW_FIRST_UT (DW_UT_compile, 0x01)
++DW_UT (DW_UT_type, 0x02)
++DW_UT (DW_UT_partial, 0x03)
++DW_UT (DW_UT_skeleton, 0x04)
++DW_UT (DW_UT_split_compile, 0x05)
++DW_UT (DW_UT_split_type, 0x06)
++DW_UT (DW_UT_lo_user, 0x80)
++DW_UT (DW_UT_hi_user, 0xff)
++DW_END_UT
+diff --git a/include/dwarf2.h b/include/dwarf2.h
+index 882453dce08..3f271fb0f7a 100644
+--- a/include/dwarf2.h
++++ b/include/dwarf2.h
+@@ -55,6 +55,7 @@
+ #define DW_CFA_DUP(name, value) , name = value
+ #define DW_IDX(name, value) , name = value
+ #define DW_IDX_DUP(name, value) , name = value
++#define DW_UT(name, value) , name = value
+ #define DW_FIRST_TAG(name, value) enum dwarf_tag { \
+   name = value
+@@ -77,6 +78,9 @@
+ #define DW_FIRST_IDX(name, value) enum dwarf_name_index_attribute { \
+   name = value
+ #define DW_END_IDX };
++#define DW_FIRST_UT(name, value) enum dwarf_unit_type { \
++  name = value
++#define DW_END_UT };
+ #include "dwarf2.def"
+@@ -94,6 +98,8 @@
+ #undef DW_END_CFA
+ #undef DW_FIRST_IDX
+ #undef DW_END_IDX
++#undef DW_FIRST_UT
++#undef DW_END_UT
+ #undef DW_TAG
+ #undef DW_TAG_DUP
+@@ -108,6 +114,7 @@
+ #undef DW_CFA_DUP
+ #undef DW_IDX
+ #undef DW_IDX_DUP
++#undef DW_UT
+ /* Flag that tells whether entry has a child or not.  */
+ #define DW_children_no   0
+@@ -450,19 +457,6 @@ enum dwarf_range_list_entry
+     DW_RLE_start_end = 0x06,
+     DW_RLE_start_length = 0x07
+   };
+-
+-/* Unit types in unit_type unit header field.  */
+-enum dwarf_unit_type
+-  {
+-    DW_UT_compile = 0x01,
+-    DW_UT_type = 0x02,
+-    DW_UT_partial = 0x03,
+-    DW_UT_skeleton = 0x04,
+-    DW_UT_split_compile = 0x05,
+-    DW_UT_split_type = 0x06,
+-    DW_UT_lo_user = 0x80,
+-    DW_UT_hi_user = 0xff
+-  };
\f
+ /* @@@ For use with GNU frame unwind information.  */
+@@ -534,6 +528,10 @@ extern const char *get_DW_CFA_name (unsigned int opc);
+    recognized.  */
+ extern const char *get_DW_IDX_name (unsigned int idx);
++/* Return the name of a DW_UT_ constant, or NULL if the value is not
++   recognized.  */
++extern const char *get_DW_UT_name (unsigned int ut);
++
+ #ifdef __cplusplus
+ }
+ #endif /* __cplusplus */
+diff --git a/ld/ChangeLog b/ld/ChangeLog
+index 4eec7d29775..d8abc62717c 100644
+--- a/ld/ChangeLog
++++ b/ld/ChangeLog
+@@ -1,3 +1,107 @@
++2021-01-01  Alan Modra  <amodra@gmail.com>
++
++      Apply from master
++      2020-12-31  H.J. Lu  <hongjiu.lu@intel.com>
++                  Alan Modra  <amodra@gmail.com>
++      PR 27128
++      * testsuite/ld-elf/pr27128.s: New file.
++      * testsuite/ld-elf/pr27128.t: Likewise.
++      * testsuite/ld-elf/pr27128a.d: Likewise.
++      * testsuite/ld-elf/pr27128b.d: Likewise.
++      * testsuite/ld-elf/pr27128c.d: Likewise.
++      * testsuite/ld-elf/pr27128d.d: Likewise.
++      * testsuite/ld-elf/pr27128e.d: Likewise.
++
++      2020-08-24  Alan Modra  <amodra@gmail.com>
++      * testsuite/ld-sparc/tlssunbin32.rd: Update for new readelf output.
++      * testsuite/ld-sparc/tlssunbin64.rd: Likewise.
++
++      2020-08-22  H.J. Lu  <hongjiu.lu@intel.com>
++      PR ld/26382
++      * testsuite/ld-elf/pr26302.nd: Updated.
++      * testsuite/ld-elf/pr26302.rd: New file.
++      * testsuite/ld-elf/shared.exp: Add a test for readelf -sW.
++
++      2020-08-10  H.J. Lu  <hongjiu.lu@intel.com>
++      PR binutils/26302
++      * testsuite/ld-elf/pr26302.nd: New file.
++      * testsuite/ld-elf/pr26302.ver: Likewise.
++      * testsuite/ld-elf/pr26302a.c: Likewise.
++      * testsuite/ld-elf/pr26302b.c: Likewise.
++      * testsuite/ld-elf/shared.exp: Run binutils/26302 tests.
++
++2020-12-04  H.J. Lu  <hongjiu.lu@intel.com>
++
++      PR ld/27016
++      * testsuite/ld-x86-64/x86-64.exp: Run pr27016a and pr27016b.
++      * testsuite/ld-x86-64/pr27016a.d: New file.
++      * testsuite/ld-x86-64/pr27016a.s: Likewise.
++      * testsuite/ld-x86-64/pr27016b.d: Likewise.
++      * testsuite/ld-x86-64/pr27016b.s: Likewise.
++
++2020-11-16  H.J. Lu  <hongjiu.lu@intel.com>
++
++      PR ld/26869
++      * ldelf.c (ldelf_before_allocation): Set rel_from_abs to 1 for
++      __ehdr_start.
++      * testsuite/ld-i386/i386.exp: Run pr26869.
++      * testsuite/ld-i386/pr26869.d: New file.
++      * testsuite/ld-i386/pr26869.s: Likewise.
++
++2020-10-07  H.J. Lu  <hongjiu.lu@intel.com>
++
++      * testsuite/ld-i386/property-3.r: Updated for Fedora binary
++      annotation plugin for GCC.
++      * testsuite/ld-i386/property-4.r: Likewise.
++      * testsuite/ld-i386/property-5.r: Likewise.
++      * testsuite/ld-x86-64/property-3.r: Likewise.
++      * testsuite/ld-x86-64/property-4.r: Likewise.
++      * testsuite/ld-x86-64/property-5.r: Likewise.
++
++2020-10-07  H.J. Lu  <hongjiu.lu@intel.com>
++
++      PR ld/26711
++      * testsuite/ld-i386/i386.exp: Run ld/26711 tests.
++      * testsuite/ld-x86-64/x86-64.exp: Likewise.
++      * testsuite/ld-i386/pr26711-1.d: Likewise.
++      * testsuite/ld-i386/pr26711-2.d: Likewise.
++      * testsuite/ld-i386/pr26711-3.d: Likewise.
++      * testsuite/ld-x86-64/pr26711-1-x32.d: Likewise.
++      * testsuite/ld-x86-64/pr26711-1.d: Likewise.
++      * testsuite/ld-x86-64/pr26711-2-x32.d: Likewise.
++      * testsuite/ld-x86-64/pr26711-2.d: Likewise.
++      * testsuite/ld-x86-64/pr26711-3-x32.d: Likewise.
++      * testsuite/ld-x86-64/pr26711-3.d: Likewise.
++      * testsuite/ld-x86-64/pr26711.s: Likewise.
++
++2020-09-26  Alan Modra  <amodra@gmail.com>
++
++      * testsuite/ld-powerpc/elfv2so.d,
++      * testsuite/ld-powerpc/notoc2.d,
++      * testsuite/ld-powerpc/tlsdesc.wf,
++      * testsuite/ld-powerpc/tlsdesc2.d,
++      * testsuite/ld-powerpc/tlsdesc2.wf,
++      * testsuite/ld-powerpc/tlsopt5.d,
++      * testsuite/ld-powerpc/tlsopt5.wf,
++      * testsuite/ld-powerpc/tlsopt6.d,
++      * testsuite/ld-powerpc/tlsopt6.wf: Update __glink_PLTresolve.
++
++2020-09-24  Alan Modra  <amodra@gmail.com>
++
++      PR 26655
++      * emultempl/ppc64elf.em (params): Add ppc_edit.
++      (ppc_before_allocation): Split off some edit functions to..
++      (ppc_edit): ..this, new function.
++
++2020-09-24  Alan Modra  <amodra@gmail.com>
++
++      Apply from master
++      2020-08-13  Alan Modra  <amodra@gmail.com>
++      * emultempl/ppc64elf.em (params): Init new field.
++      (enum ppc64_opt): Add OPTION_NO_PCREL_OPT.
++      (PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS),
++      (PARSE_AND_LIST_ARGS_CASES): Support --no-pcrel-optimize.
++
+ 2020-09-19  Nick Clifton  <nickc@redhat.com>
+       This is the 2.35.1 point release.
+diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em
+index 1331d03113b..2df5a218e6a 100644
+--- a/ld/emultempl/ppc64elf.em
++++ b/ld/emultempl/ppc64elf.em
+@@ -32,13 +32,15 @@ fragment <<EOF
+ static asection *ppc_add_stub_section (const char *, asection *);
+ static void ppc_layout_sections_again (void);
++static void ppc_edit (void);
+ static struct ppc64_elf_params params = { NULL,
+                                         &ppc_add_stub_section,
+                                         &ppc_layout_sections_again,
++                                        &ppc_edit,
+                                         1, -1, -1, 0,
+                                         ${DEFAULT_PLT_STATIC_CHAIN-0}, -1, 5,
+-                                        -1, -1, 0, -1, -1, 0};
++                                        -1, -1, 0, 0, -1, -1, 0};
+ /* Fake input file for stubs.  */
+ static lang_input_statement_type *stub_file;
+@@ -294,7 +296,19 @@ ppc_before_allocation (void)
+           einfo (_("%X%P: inline PLT: %E\n"));
+       }
+-      if (ppc64_elf_tls_setup (&link_info)
++      if (!ppc64_elf_tls_setup (&link_info))
++      einfo (_("%X%P: TLS problem %E\n"));
++    }
++
++  gld${EMULATION_NAME}_before_allocation ();
++}
++
++static void
++ppc_edit (void)
++{
++  if (stub_file != NULL)
++    {
++      if (elf_hash_table (&link_info)->tls_sec != NULL
+         && !no_tls_opt)
+       {
+         /* Size the sections.  This is premature, but we want to know the
+@@ -323,8 +337,6 @@ ppc_before_allocation (void)
+           sort_toc_sections (&toc_os->children, NULL, NULL);
+       }
+     }
+-
+-  gld${EMULATION_NAME}_before_allocation ();
+ }
+ struct hook_stub_info
+@@ -686,6 +698,7 @@ enum ppc64_opt
+   OPTION_NO_PLT_LOCALENTRY,
+   OPTION_POWER10_STUBS,
+   OPTION_NO_POWER10_STUBS,
++  OPTION_NO_PCREL_OPT,
+   OPTION_STUBSYMS,
+   OPTION_NO_STUBSYMS,
+   OPTION_SAVRES,
+@@ -717,6 +730,7 @@ PARSE_AND_LIST_LONGOPTS=${PARSE_AND_LIST_LONGOPTS}'
+   { "plt-localentry", optional_argument, NULL, OPTION_PLT_LOCALENTRY },
+   { "no-plt-localentry", no_argument, NULL, OPTION_NO_PLT_LOCALENTRY },
+   { "power10-stubs", optional_argument, NULL, OPTION_POWER10_STUBS },
++  { "no-pcrel-optimize", no_argument, NULL, OPTION_NO_PCREL_OPT },
+   { "no-power10-stubs", no_argument, NULL, OPTION_NO_POWER10_STUBS },
+   { "emit-stub-syms", no_argument, NULL, OPTION_STUBSYMS },
+   { "no-emit-stub-syms", no_argument, NULL, OPTION_NO_STUBSYMS },
+@@ -776,6 +790,9 @@ PARSE_AND_LIST_OPTIONS=${PARSE_AND_LIST_OPTIONS}'
+   --power10-stubs [=auto]     Use Power10 PLT call stubs (default auto)\n"
+                  ));
+   fprintf (file, _("\
++  --no-pcrel-optimize         Don'\''t perform R_PPC64_PCREL_OPT optimization\n"
++                 ));
++  fprintf (file, _("\
+   --no-power10-stubs          Don'\''t use Power10 PLT call stubs\n"
+                  ));
+   fprintf (file, _("\
+@@ -909,6 +926,10 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
+       params.power10_stubs = 0;
+       break;
++    case OPTION_NO_PCREL_OPT:
++      params.no_pcrel_opt = 1;
++      break;
++
+     case OPTION_STUBSYMS:
+       params.emit_stub_syms = 1;
+       break;
+@@ -985,6 +1006,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
+       params.no_multi_toc = 1;
+       no_toc_sort = 1;
+       params.plt_static_chain = 1;
++      params.no_pcrel_opt = 1;
+       return FALSE;
+ '
+diff --git a/ld/ldelf.c b/ld/ldelf.c
+index bada3ade2d7..831d032fe56 100644
+--- a/ld/ldelf.c
++++ b/ld/ldelf.c
+@@ -1589,6 +1589,8 @@ ldelf_before_allocation (char *audit, char *depaudit,
+                     (char *) &ehdr_start->u + sizeof ehdr_start->u.def.next,
+                     sizeof ehdr_start_save_u);
+             ehdr_start->type = bfd_link_hash_defined;
++            /* It will be converted to section-relative later.  */
++            ehdr_start->rel_from_abs = 1;
+             ehdr_start->u.def.section = bfd_abs_section_ptr;
+             ehdr_start->u.def.value = 0;
+           }
+diff --git a/ld/testsuite/ld-elf/pr26302.nd b/ld/testsuite/ld-elf/pr26302.nd
+new file mode 100644
+index 00000000000..bc9a675789a
+--- /dev/null
++++ b/ld/testsuite/ld-elf/pr26302.nd
+@@ -0,0 +1,3 @@
++#...
++ +U foo@FOO
++#pass
+diff --git a/ld/testsuite/ld-elf/pr26302.rd b/ld/testsuite/ld-elf/pr26302.rd
+new file mode 100644
+index 00000000000..8f7b8a96e75
+--- /dev/null
++++ b/ld/testsuite/ld-elf/pr26302.rd
+@@ -0,0 +1,12 @@
++#...
++Symbol table '\.dynsym' contains [0-9]+ entries:
++ +Num: +Value +Size Type +Bind +Vis +Ndx Name
++#...
++ +[0-9]+: +[a-f0-9]+ +0 +FUNC +GLOBAL +DEFAULT +UND +foo@FOO \([0-9]+\)
++#...
++
++Symbol table '\.symtab' contains [0-9]+ entries:
++ +Num: +Value +Size Type +Bind +Vis +Ndx Name
++#...
++ +[0-9]+: +[a-f0-9]+ +0 +FUNC +GLOBAL +DEFAULT +UND +foo@FOO
++#pass
+diff --git a/ld/testsuite/ld-elf/pr26302.ver b/ld/testsuite/ld-elf/pr26302.ver
+new file mode 100644
+index 00000000000..f2c03ac7a13
+--- /dev/null
++++ b/ld/testsuite/ld-elf/pr26302.ver
+@@ -0,0 +1,5 @@
++FOO
++{
++global:
++  foo;
++};
+diff --git a/ld/testsuite/ld-elf/pr26302a.c b/ld/testsuite/ld-elf/pr26302a.c
+new file mode 100644
+index 00000000000..cd0130cacdf
+--- /dev/null
++++ b/ld/testsuite/ld-elf/pr26302a.c
+@@ -0,0 +1,4 @@
++void
++foo (void)
++{
++}
+diff --git a/ld/testsuite/ld-elf/pr26302b.c b/ld/testsuite/ld-elf/pr26302b.c
+new file mode 100644
+index 00000000000..eae278df96d
+--- /dev/null
++++ b/ld/testsuite/ld-elf/pr26302b.c
+@@ -0,0 +1,7 @@
++extern void foo (void);
++
++void
++bar (void)
++{
++  foo ();
++}
+diff --git a/ld/testsuite/ld-elf/pr27128.s b/ld/testsuite/ld-elf/pr27128.s
+new file mode 100644
+index 00000000000..7af5be183b6
+--- /dev/null
++++ b/ld/testsuite/ld-elf/pr27128.s
+@@ -0,0 +1,13 @@
++      .text
++      .globl  foo
++      .type   foo,%function
++foo:
++      .space 16
++      .size foo, .-foo
++      .symver foo,foo@@VERS_2.0,remove
++      .globl  _Zrm1XS_
++      .type   _Zrm1XS_,%function
++_Zrm1XS_:
++      .space 16
++      .size _Zrm1XS_, .-_Zrm1XS_
++      .symver _Zrm1XS_,_Zrm1XS_@@VERS_2.0,remove
+diff --git a/ld/testsuite/ld-elf/pr27128.t b/ld/testsuite/ld-elf/pr27128.t
+new file mode 100644
+index 00000000000..27669a505b6
+--- /dev/null
++++ b/ld/testsuite/ld-elf/pr27128.t
+@@ -0,0 +1,6 @@
++VERS_2.0 {
++global:
++  foo; _Zrm1XS_;
++local:
++  *;
++};
+diff --git a/ld/testsuite/ld-elf/pr27128a.d b/ld/testsuite/ld-elf/pr27128a.d
+new file mode 100644
+index 00000000000..9ce8eaa5467
+--- /dev/null
++++ b/ld/testsuite/ld-elf/pr27128a.d
+@@ -0,0 +1,16 @@
++#source: pr27128.s
++#ld: -shared -version-script pr27128.t
++#nm: -n -P
++#target: [check_shared_lib_support]
++#notarget: [is_underscore_target]
++# _Zrm1XS_ doesn't have an extra underscore.
++#xfail: hppa64-*-* tic6x-*-*
++# hppa64 uses dot-symbols, tic6x DYN lacks dynamic sections for this testcase
++
++#...
++VERS_2\.0 A 0+ 
++#...
++foo@@VERS_2\.0 T [0-9a-f]+ 10
++#...
++_Zrm1XS_@@VERS_2\.0 T [0-9a-f]+ 10
++#pass
+diff --git a/ld/testsuite/ld-elf/pr27128b.d b/ld/testsuite/ld-elf/pr27128b.d
+new file mode 100644
+index 00000000000..934f8330d76
+--- /dev/null
++++ b/ld/testsuite/ld-elf/pr27128b.d
+@@ -0,0 +1,16 @@
++#source: pr27128.s
++#ld: -shared -version-script pr27128.t
++#nm: -n -D --format=posix
++#target: [check_shared_lib_support]
++#notarget: [is_underscore_target]
++# _Zrm1XS_ doesn't have an extra underscore.
++#xfail: hppa64-*-* tic6x-*-*
++# hppa64 uses dot-symbols, tic6x DYN lacks dynamic sections for this testcase
++
++#...
++VERS_2\.0 A 0+ 
++#...
++foo@@VERS_2\.0 T [0-9a-f]+ 10
++#...
++_Zrm1XS_@@VERS_2\.0 T [0-9a-f]+ 10
++#pass
+diff --git a/ld/testsuite/ld-elf/pr27128c.d b/ld/testsuite/ld-elf/pr27128c.d
+new file mode 100644
+index 00000000000..f80c57b64cd
+--- /dev/null
++++ b/ld/testsuite/ld-elf/pr27128c.d
+@@ -0,0 +1,16 @@
++#source: pr27128.s
++#ld: -shared -version-script pr27128.t
++#nm: -n --format=sysv
++#target: [check_shared_lib_support]
++#notarget: [is_underscore_target]
++# _Zrm1XS_ doesn't have an extra underscore.
++#xfail: hppa64-*-* tic6x-*-*
++# hppa64 uses dot-symbols, tic6x DYN lacks dynamic sections for this testcase
++
++#...
++VERS_2\.0 +\|0+\| +A +\| +OBJECT\| +\| +\|\*ABS\*
++#...
++foo@@VERS_2\.0 +\|[0-9a-f]+\| +T +\| +FUNC\|0+10\| +\|\.text
++#...
++_Zrm1XS_@@VERS_2\.0 +\|[0-9a-f]+\| +T +\| +FUNC\|0+10\| +\|\.text
++#pass
+diff --git a/ld/testsuite/ld-elf/pr27128d.d b/ld/testsuite/ld-elf/pr27128d.d
+new file mode 100644
+index 00000000000..ba628d22de3
+--- /dev/null
++++ b/ld/testsuite/ld-elf/pr27128d.d
+@@ -0,0 +1,16 @@
++#source: pr27128.s
++#ld: -shared -version-script pr27128.t
++#nm: -n -D --format=sysv
++#target: [check_shared_lib_support]
++#notarget: [is_underscore_target]
++# _Zrm1XS_ doesn't have an extra underscore.
++#xfail: hppa64-*-* tic6x-*-*
++# hppa64 uses dot-symbols, tic6x DYN lacks dynamic sections for this testcase
++
++#...
++VERS_2\.0 +\|0+\| +A +\| +OBJECT\| +\| +\|\*ABS\*
++#...
++foo@@VERS_2\.0 +\|[0-9a-f]+\| +T +\| +FUNC\|0+10\| +\|\.text
++#...
++_Zrm1XS_@@VERS_2\.0 +\|[0-9a-f]+\| +T +\| +FUNC\|0+10\| +\|\.text
++#pass
+diff --git a/ld/testsuite/ld-elf/pr27128e.d b/ld/testsuite/ld-elf/pr27128e.d
+new file mode 100644
+index 00000000000..b8b1657fe71
+--- /dev/null
++++ b/ld/testsuite/ld-elf/pr27128e.d
+@@ -0,0 +1,16 @@
++#source: pr27128.s
++#ld: -shared -version-script pr27128.t
++#nm: -n --demangle -D --format=posix
++#target: [check_shared_lib_support]
++#notarget: [is_underscore_target]
++# _Zrm1XS_ doesn't have an extra underscore.
++#xfail: hppa64-*-* tic6x-*-*
++# hppa64 uses dot-symbols, tic6x DYN lacks dynamic sections for this testcase
++
++#...
++VERS_2\.0 A 0+ 
++#...
++foo@@VERS_2\.0 T [0-9a-f]+ 10
++#...
++operator%\(X, X\)@@VERS_2\.0 T [0-9a-f]+ 10
++#pass
+diff --git a/ld/testsuite/ld-elf/shared.exp b/ld/testsuite/ld-elf/shared.exp
+index e9e90120586..4de5b341834 100644
+--- a/ld/testsuite/ld-elf/shared.exp
++++ b/ld/testsuite/ld-elf/shared.exp
+@@ -843,6 +843,25 @@ run_cc_link_tests [list \
+       {{readelf {--dyn-syms --wide} pr26094-1b.rd}} \
+       "pr26094-1" \
+     ] \
++    [list \
++      "Build pr26302a.so" \
++      "-shared -Wl,--version-script=pr26302.ver" \
++      "-fPIC" \
++      {pr26302a.c} \
++      {} \
++      "pr26302a.so"
++    ] \
++    [list \
++      "Build pr26302b.so" \
++      "-shared -Wl,--no-as-needed tmpdir/pr26302a.so" \
++      "-fPIC" \
++      {pr26302b.c} \
++      {{readelf {-sW} pr26302.rd} \
++       {nm {-u} pr26302.nd} \
++       {nm {-u -D} pr26302.nd} \
++       {nm {-u -D --with-symbol-versions} pr26302.nd}} \
++      "pr26302b.so" \
++    ] \
+ ]
+ run_ld_link_tests [list \
+diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
+index 164c099cbbb..f031b01ffea 100644
+--- a/ld/testsuite/ld-i386/i386.exp
++++ b/ld/testsuite/ld-i386/i386.exp
+@@ -470,6 +470,10 @@ run_dump_test "pr24322b"
+ run_dump_test "align-branch-1"
+ run_dump_test "pr26018"
+ run_dump_test "pr26263"
++run_dump_test "pr26711-1"
++run_dump_test "pr26711-2"
++run_dump_test "pr26711-3"
++run_dump_test "pr26869"
+ if { !([istarget "i?86-*-linux*"]
+        || [istarget "i?86-*-gnu*"]
+diff --git a/ld/testsuite/ld-i386/pr26711-1.d b/ld/testsuite/ld-i386/pr26711-1.d
+new file mode 100644
+index 00000000000..24a8429fbca
+--- /dev/null
++++ b/ld/testsuite/ld-i386/pr26711-1.d
+@@ -0,0 +1,10 @@
++#source: ../ld-x86-64/pr26711.s
++#source: ../ld-x86-64/start.s
++#as: --32 -mx86-used-note=no
++#ld: -m elf_i386 -z ibt
++#readelf: -n
++
++Displaying notes found in: .note.gnu.property
++[     ]+Owner[        ]+Data size[    ]+Description
++  GNU                  0x[0-9a-f]+    NT_GNU_PROPERTY_TYPE_0
++      Properties: x86 feature: IBT
+diff --git a/ld/testsuite/ld-i386/pr26711-2.d b/ld/testsuite/ld-i386/pr26711-2.d
+new file mode 100644
+index 00000000000..e92559fa70f
+--- /dev/null
++++ b/ld/testsuite/ld-i386/pr26711-2.d
+@@ -0,0 +1,10 @@
++#source: ../ld-x86-64/pr26711.s
++#source: ../ld-x86-64/start.s
++#as: --32 -mx86-used-note=no
++#ld: -m elf_i386 -z shstk
++#readelf: -n
++
++Displaying notes found in: .note.gnu.property
++[     ]+Owner[        ]+Data size[    ]+Description
++  GNU                  0x[0-9a-f]+    NT_GNU_PROPERTY_TYPE_0
++      Properties: x86 feature: SHSTK
+diff --git a/ld/testsuite/ld-i386/pr26711-3.d b/ld/testsuite/ld-i386/pr26711-3.d
+new file mode 100644
+index 00000000000..df9bfced540
+--- /dev/null
++++ b/ld/testsuite/ld-i386/pr26711-3.d
+@@ -0,0 +1,10 @@
++#source: ../ld-x86-64/pr26711.s
++#source: ../ld-x86-64/start.s
++#as: --32 -mx86-used-note=no
++#ld: -m elf_i386 -z ibt -z shstk
++#readelf: -n
++
++Displaying notes found in: .note.gnu.property
++[     ]+Owner[        ]+Data size[    ]+Description
++  GNU                  0x[0-9a-f]+    NT_GNU_PROPERTY_TYPE_0
++      Properties: x86 feature: IBT, SHSTK
+diff --git a/ld/testsuite/ld-i386/pr26869.d b/ld/testsuite/ld-i386/pr26869.d
+new file mode 100644
+index 00000000000..bfd00a70e9b
+--- /dev/null
++++ b/ld/testsuite/ld-i386/pr26869.d
+@@ -0,0 +1,14 @@
++#as: --32
++#ld: -shared -melf_i386
++#readelf: -r -s --wide
++
++Relocation section '.rel.dyn' at offset 0x[a-f0-9]+ contains 1 entry:
++ Offset     Info    Type                Sym. Value  Symbol's Name
++0+[a-f0-9]+  00000008 R_386_RELATIVE        
++
++#...
++Symbol table '.symtab' contains [0-9]+ entries:
++   Num:    Value  Size Type    Bind   Vis      Ndx Name
++#...
++ +[a-f0-9]+: 00000000     0 NOTYPE  LOCAL  DEFAULT    1 __ehdr_start
++#pass
+diff --git a/ld/testsuite/ld-i386/pr26869.s b/ld/testsuite/ld-i386/pr26869.s
+new file mode 100644
+index 00000000000..e492b98e869
+--- /dev/null
++++ b/ld/testsuite/ld-i386/pr26869.s
+@@ -0,0 +1,3 @@
++      .text
++foo:
++      pushl   __ehdr_start@GOT(%ebx)
+diff --git a/ld/testsuite/ld-i386/property-3.r b/ld/testsuite/ld-i386/property-3.r
+index 1abb90b3a2e..e95d47ae8d6 100644
+--- a/ld/testsuite/ld-i386/property-3.r
++++ b/ld/testsuite/ld-i386/property-3.r
+@@ -3,5 +3,6 @@ Displaying notes found in: .note.gnu.property
+ [     ]+Owner[        ]+Data size[    ]+Description
+   GNU                  0x[0-9a-f]+    NT_GNU_PROPERTY_TYPE_0
+       Properties: stack size: 0x800000
++#...
+       x86 ISA needed: CMOV, SSE
+ #pass
+diff --git a/ld/testsuite/ld-i386/property-4.r b/ld/testsuite/ld-i386/property-4.r
+index e94846e88ea..a4b7bb71adf 100644
+--- a/ld/testsuite/ld-i386/property-4.r
++++ b/ld/testsuite/ld-i386/property-4.r
+@@ -3,5 +3,6 @@ Displaying notes found in: .note.gnu.property
+ [     ]+Owner[        ]+Data size[    ]+Description
+   GNU                  0x[0-9a-f]+    NT_GNU_PROPERTY_TYPE_0
+       Properties: stack size: 0x800000
++#...
+       x86 ISA needed: CMOV, SSE, SSE3
+ #pass
+diff --git a/ld/testsuite/ld-i386/property-5.r b/ld/testsuite/ld-i386/property-5.r
+index bd87a9317ef..5ff95648c29 100644
+--- a/ld/testsuite/ld-i386/property-5.r
++++ b/ld/testsuite/ld-i386/property-5.r
+@@ -3,5 +3,6 @@ Displaying notes found in: .note.gnu.property
+ [     ]+Owner[        ]+Data size[    ]+Description
+   GNU                  0x[0-9a-f]+    NT_GNU_PROPERTY_TYPE_0
+       Properties: stack size: 0x900000
++#...
+       x86 ISA needed: CMOV, SSE, SSE3
+ #pass
+diff --git a/ld/testsuite/ld-powerpc/elfv2so.d b/ld/testsuite/ld-powerpc/elfv2so.d
+index 0162bd0880e..4018f0536c6 100644
+--- a/ld/testsuite/ld-powerpc/elfv2so.d
++++ b/ld/testsuite/ld-powerpc/elfv2so.d
+@@ -74,12 +74,11 @@ Disassembly of section \.text:
+ .*:   (7c 08 02 a6|a6 02 08 7c)       mflr    r0
+ .*:   (42 9f 00 05|05 00 9f 42)       bcl     .*
+ .*:   (7d 68 02 a6|a6 02 68 7d)       mflr    r11
+-.*:   (18 00 41 f8|f8 41 00 18)       std     r2,24\(r1\)
+-.*:   (e8 4b ff f0|f0 ff 4b e8)       ld      r2,-16\(r11\)
+ .*:   (7c 08 03 a6|a6 03 08 7c)       mtlr    r0
++.*:   (e8 0b ff f0|f0 ff 0b e8)       ld      r0,-16\(r11\)
+ .*:   (7d 8b 60 50|50 60 8b 7d)       subf    r12,r11,r12
+-.*:   (7d 62 5a 14|14 5a 62 7d)       add     r11,r2,r11
+-.*:   (38 0c ff d0|d0 ff 0c 38)       addi    r0,r12,-48
++.*:   (7d 60 5a 14|14 5a 60 7d)       add     r11,r0,r11
++.*:   (38 0c ff d4|d4 ff 0c 38)       addi    r0,r12,-44
+ .*:   (e9 8b 00 00|00 00 8b e9)       ld      r12,0\(r11\)
+ .*:   (78 00 f0 82|82 f0 00 78)       rldicl  r0,r0,62,2
+ .*:   (7d 89 03 a6|a6 03 89 7d)       mtctr   r12
+@@ -87,16 +86,16 @@ Disassembly of section \.text:
+ .*:   (4e 80 04 20|20 04 80 4e)       bctr
+ .* <f5@plt>:
+-.*:   (4b ff ff c8|c8 ff ff 4b)       b       .* <__glink_PLTresolve>
++.*:   (4b ff ff cc|cc ff ff 4b)       b       .* <__glink_PLTresolve>
+ .* <f3@plt>:
+-.*:   (4b ff ff c4|c4 ff ff 4b)       b       .* <__glink_PLTresolve>
++.*:   (4b ff ff c8|c8 ff ff 4b)       b       .* <__glink_PLTresolve>
+ .* <f2@plt>:
+-.*:   (4b ff ff c0|c0 ff ff 4b)       b       .* <__glink_PLTresolve>
++.*:   (4b ff ff c4|c4 ff ff 4b)       b       .* <__glink_PLTresolve>
+ .* <f4@plt>:
+-.*:   (4b ff ff bc|bc ff ff 4b)       b       .* <__glink_PLTresolve>
++.*:   (4b ff ff c0|c0 ff ff 4b)       b       .* <__glink_PLTresolve>
+ .* <f1@plt>:
+-.*:   (4b ff ff b8|b8 ff ff 4b)       b       .* <__glink_PLTresolve>
++.*:   (4b ff ff bc|bc ff ff 4b)       b       .* <__glink_PLTresolve>
+diff --git a/ld/testsuite/ld-powerpc/notoc2.d b/ld/testsuite/ld-powerpc/notoc2.d
+index 1e519c0d1b0..3448f8b37e6 100644
+--- a/ld/testsuite/ld-powerpc/notoc2.d
++++ b/ld/testsuite/ld-powerpc/notoc2.d
+@@ -22,8 +22,8 @@ Disassembly of section \.text:
+ .*:   (39 80 ff ff|ff ff 80 39) 
+ .*:   (06 10 00 00|00 00 10 06)       pla     r12,0
+ .*:   (39 80 00 00|00 00 80 39) 
+-.*:   (06 10 00 00|00 00 10 06)       pla     r3,92
+-.*:   (38 60 00 5c|5c 00 60 38) 
++.*:   (06 10 00 00|00 00 10 06)       pla     r3,88
++.*:   (38 60 00 58|58 00 60 38) 
+ .*:   (4b ff ff 99|99 ff ff 4b)       bl      .* <.*\.plt_call\.puts>
+ .*:   (60 00 00 00|00 00 00 60)       nop
+ #pass
+diff --git a/ld/testsuite/ld-powerpc/tlsdesc.wf b/ld/testsuite/ld-powerpc/tlsdesc.wf
+index 09503fa0053..e7d4522b507 100644
+--- a/ld/testsuite/ld-powerpc/tlsdesc.wf
++++ b/ld/testsuite/ld-powerpc/tlsdesc.wf
+@@ -38,9 +38,9 @@ Contents of the \.eh_frame section:
+   DW_CFA_nop
+ 0+4c 0+14 0+50 FDE cie=0+ pc=0+2f8\.\.0+32c
+-  DW_CFA_advance_loc: 4 to 0+2fc
++  DW_CFA_advance_loc: 8 to 0+300
+   DW_CFA_register: r65 in r12
+-  DW_CFA_advance_loc: 20 to 0+310
++  DW_CFA_advance_loc: 16 to 0+310
+   DW_CFA_restore_extended: r65
+ 0+64 0+10 0+68 FDE cie=0+ pc=0+2e0\.\.0+2ec
+diff --git a/ld/testsuite/ld-powerpc/tlsdesc2.d b/ld/testsuite/ld-powerpc/tlsdesc2.d
+index 47aedbecb88..c271c949b01 100644
+--- a/ld/testsuite/ld-powerpc/tlsdesc2.d
++++ b/ld/testsuite/ld-powerpc/tlsdesc2.d
+@@ -53,12 +53,11 @@ Disassembly of section \.text:
+ .*:   (7c 08 02 a6|a6 02 08 7c)       mflr    r0
+ .*:   (42 9f 00 05|05 00 9f 42)       bcl     .*
+ .*:   (7d 68 02 a6|a6 02 68 7d)       mflr    r11
+-.*:   (f8 41 00 18|18 00 41 f8)       std     r2,24\(r1\)
+-.*:   (e8 4b ff f0|f0 ff 4b e8)       ld      r2,-16\(r11\)
+ .*:   (7c 08 03 a6|a6 03 08 7c)       mtlr    r0
++.*:   (e8 0b ff f0|f0 ff 0b e8)       ld      r0,-16\(r11\)
+ .*:   (7d 8b 60 50|50 60 8b 7d)       subf    r12,r11,r12
+-.*:   (7d 62 5a 14|14 5a 62 7d)       add     r11,r2,r11
+-.*:   (38 0c ff d0|d0 ff 0c 38)       addi    r0,r12,-48
++.*:   (7d 60 5a 14|14 5a 60 7d)       add     r11,r0,r11
++.*:   (38 0c ff d4|d4 ff 0c 38)       addi    r0,r12,-44
+ .*:   (e9 8b 00 00|00 00 8b e9)       ld      r12,0\(r11\)
+ .*:   (78 00 f0 82|82 f0 00 78)       rldicl  r0,r0,62,2
+ .*:   (7d 89 03 a6|a6 03 89 7d)       mtctr   r12
+@@ -66,4 +65,4 @@ Disassembly of section \.text:
+ .*:   (4e 80 04 20|20 04 80 4e)       bctr
+ .* <__tls_get_addr_opt@plt>:
+-.*:   (4b ff ff c8|c8 ff ff 4b)       b       .* <__glink_PLTresolve>
++.*:   (4b ff ff cc|cc ff ff 4b)       b       .* <__glink_PLTresolve>
+diff --git a/ld/testsuite/ld-powerpc/tlsdesc2.wf b/ld/testsuite/ld-powerpc/tlsdesc2.wf
+index cb92c294b15..79a417ba06e 100644
+--- a/ld/testsuite/ld-powerpc/tlsdesc2.wf
++++ b/ld/testsuite/ld-powerpc/tlsdesc2.wf
+@@ -37,10 +37,10 @@ Contents of the \.eh_frame section:
+   DW_CFA_nop
+   DW_CFA_nop
+-0+4c 0+14 0+50 FDE cie=0+ pc=0+318\.\.0+354
+-  DW_CFA_advance_loc: 4 to 0+31c
++0+4c 0+14 0+50 FDE cie=0+ pc=0+318\.\.0+350
++  DW_CFA_advance_loc: 8 to 0+320
+   DW_CFA_register: r65 in r0
+-  DW_CFA_advance_loc: 28 to 0+338
++  DW_CFA_advance_loc: 8 to 0+328
+   DW_CFA_restore_extended: r65
+ 0+64 0+10 0+68 FDE cie=0+ pc=0+300\.\.0+30c
+diff --git a/ld/testsuite/ld-powerpc/tlsopt5.d b/ld/testsuite/ld-powerpc/tlsopt5.d
+index 0fcb79821b8..efd6debc555 100644
+--- a/ld/testsuite/ld-powerpc/tlsopt5.d
++++ b/ld/testsuite/ld-powerpc/tlsopt5.d
+@@ -49,12 +49,11 @@ Disassembly of section \.text:
+ .*:   (a6 02 08 7c|7c 08 02 a6)       mflr    r0
+ .*:   (05 00 9f 42|42 9f 00 05)       bcl     .*
+ .*:   (a6 02 68 7d|7d 68 02 a6)       mflr    r11
+-.*:   (18 00 41 f8|f8 41 00 18)       std     r2,24\(r1\)
+-.*:   (f0 ff 4b e8|e8 4b ff f0)       ld      r2,-16\(r11\)
+ .*:   (a6 03 08 7c|7c 08 03 a6)       mtlr    r0
++.*:   (f0 ff 0b e8|e8 0b ff f0)       ld      r0,-16\(r11\)
+ .*:   (50 60 8b 7d|7d 8b 60 50)       subf    r12,r11,r12
+-.*:   (14 5a 62 7d|7d 62 5a 14)       add     r11,r2,r11
+-.*:   (d0 ff 0c 38|38 0c ff d0)       addi    r0,r12,-48
++.*:   (14 5a 60 7d|7d 60 5a 14)       add     r11,r0,r11
++.*:   (d4 ff 0c 38|38 0c ff d4)       addi    r0,r12,-44
+ .*:   (00 00 8b e9|e9 8b 00 00)       ld      r12,0\(r11\)
+ .*:   (82 f0 00 78|78 00 f0 82)       rldicl  r0,r0,62,2
+ .*:   (a6 03 89 7d|7d 89 03 a6)       mtctr   r12
+@@ -62,7 +61,7 @@ Disassembly of section \.text:
+ .*:   (20 04 80 4e|4e 80 04 20)       bctr
+ .* <__tls_get_addr_opt@plt>:
+-.*    (c8 ff ff 4b|4b ff ff c8)       b       .*
++.*    (cc ff ff 4b|4b ff ff cc)       b       .*
+ .* <aaaaa@plt>:
+-.*:   (c4 ff ff 4b|4b ff ff c4)       b       .*
++.*:   (c8 ff ff 4b|4b ff ff c8)       b       .*
+diff --git a/ld/testsuite/ld-powerpc/tlsopt5.wf b/ld/testsuite/ld-powerpc/tlsopt5.wf
+index f0453610e08..84bd94ed728 100644
+--- a/ld/testsuite/ld-powerpc/tlsopt5.wf
++++ b/ld/testsuite/ld-powerpc/tlsopt5.wf
+@@ -16,9 +16,9 @@ Contents of the \.eh_frame section:
+   DW_CFA_restore_extended: r65
+ 0+2c 0+14 0+30 FDE cie=0+ pc=.*
+-  DW_CFA_advance_loc: 4 to .*
++  DW_CFA_advance_loc: 8 to .*
+   DW_CFA_register: r65 in r0
+-  DW_CFA_advance_loc: 28 to .*
++  DW_CFA_advance_loc: 8 to .*
+   DW_CFA_restore_extended: r65
+ 0+44 0+10 0+48 FDE cie=0+ pc=.*
+diff --git a/ld/testsuite/ld-powerpc/tlsopt6.d b/ld/testsuite/ld-powerpc/tlsopt6.d
+index 4ca64092c1d..15def719cba 100644
+--- a/ld/testsuite/ld-powerpc/tlsopt6.d
++++ b/ld/testsuite/ld-powerpc/tlsopt6.d
+@@ -67,12 +67,11 @@ Disassembly of section \.text:
+ .*:   (a6 02 08 7c|7c 08 02 a6)       mflr    r0
+ .*:   (05 00 9f 42|42 9f 00 05)       bcl     .*
+ .*:   (a6 02 68 7d|7d 68 02 a6)       mflr    r11
+-.*:   (18 00 41 f8|f8 41 00 18)       std     r2,24\(r1\)
+-.*:   (f0 ff 4b e8|e8 4b ff f0)       ld      r2,-16\(r11\)
+ .*:   (a6 03 08 7c|7c 08 03 a6)       mtlr    r0
++.*:   (f0 ff 0b e8|e8 0b ff f0)       ld      r0,-16\(r11\)
+ .*:   (50 60 8b 7d|7d 8b 60 50)       subf    r12,r11,r12
+-.*:   (14 5a 62 7d|7d 62 5a 14)       add     r11,r2,r11
+-.*:   (d0 ff 0c 38|38 0c ff d0)       addi    r0,r12,-48
++.*:   (14 5a 60 7d|7d 60 5a 14)       add     r11,r0,r11
++.*:   (d4 ff 0c 38|38 0c ff d4)       addi    r0,r12,-44
+ .*:   (00 00 8b e9|e9 8b 00 00)       ld      r12,0\(r11\)
+ .*:   (82 f0 00 78|78 00 f0 82)       rldicl  r0,r0,62,2
+ .*:   (a6 03 89 7d|7d 89 03 a6)       mtctr   r12
+@@ -80,7 +79,7 @@ Disassembly of section \.text:
+ .*:   (20 04 80 4e|4e 80 04 20)       bctr
+ .* <__tls_get_addr_opt@plt>:
+-.*    (c8 ff ff 4b|4b ff ff c8)       b       .*
++.*    (cc ff ff 4b|4b ff ff cc)       b       .*
+ .* <aaaaa@plt>:
+-.*:   (c4 ff ff 4b|4b ff ff c4)       b       .*
++.*:   (c8 ff ff 4b|4b ff ff c8)       b       .*
+diff --git a/ld/testsuite/ld-powerpc/tlsopt6.wf b/ld/testsuite/ld-powerpc/tlsopt6.wf
+index abb414a6339..c2b96163523 100644
+--- a/ld/testsuite/ld-powerpc/tlsopt6.wf
++++ b/ld/testsuite/ld-powerpc/tlsopt6.wf
+@@ -38,9 +38,9 @@ Contents of the \.eh_frame section:
+   DW_CFA_nop
+ 0+4c 0+14 0+50 FDE cie=0+ pc=.*
+-  DW_CFA_advance_loc: 4 to .*
++  DW_CFA_advance_loc: 8 to .*
+   DW_CFA_register: r65 in r0
+-  DW_CFA_advance_loc: 28 to .*
++  DW_CFA_advance_loc: 8 to .*
+   DW_CFA_restore_extended: r65
+ 0+64 0+10 0+68 FDE cie=0+ pc=.*
+diff --git a/ld/testsuite/ld-sparc/tlssunbin32.rd b/ld/testsuite/ld-sparc/tlssunbin32.rd
+index 937611da91b..a41f27d644c 100644
+--- a/ld/testsuite/ld-sparc/tlssunbin32.rd
++++ b/ld/testsuite/ld-sparc/tlssunbin32.rd
+@@ -111,7 +111,7 @@ Symbol table '\.symtab' contains [0-9]+ entries:
+ .* FUNC +GLOBAL +DEFAULT +8 _start
+ .* TLS +GLOBAL +HIDDEN +9 sh4
+ .* TLS +GLOBAL +DEFAULT +10 bg7
+-.* FUNC +GLOBAL +DEFAULT +UND __tls_get_addr@@SUNWprivate_1.1
++.* FUNC +GLOBAL +DEFAULT +UND __tls_get_addr@SUNWprivate_1.1
+ .* TLS +GLOBAL +HIDDEN +9 sh5
+ .* NOTYPE +GLOBAL +DEFAULT +12 __bss_start
+ .* TLS +GLOBAL +DEFAULT +UND sG6
+diff --git a/ld/testsuite/ld-sparc/tlssunbin64.rd b/ld/testsuite/ld-sparc/tlssunbin64.rd
+index 07a632c5ec9..4d792b84108 100644
+--- a/ld/testsuite/ld-sparc/tlssunbin64.rd
++++ b/ld/testsuite/ld-sparc/tlssunbin64.rd
+@@ -111,7 +111,7 @@ Symbol table '\.symtab' contains [0-9]+ entries:
+ .* FUNC +GLOBAL +DEFAULT +8 _start
+ .* TLS +GLOBAL +HIDDEN +9 sh4
+ .* TLS +GLOBAL +DEFAULT +10 bg7
+-.* FUNC +GLOBAL +DEFAULT +UND __tls_get_addr@@SUNWprivate_1.1
++.* FUNC +GLOBAL +DEFAULT +UND __tls_get_addr@SUNWprivate_1.1
+ .* TLS +GLOBAL +HIDDEN +9 sh5
+ .* NOTYPE +GLOBAL +DEFAULT +12 __bss_start
+ .* TLS +GLOBAL +DEFAULT +UND sG6
+diff --git a/ld/testsuite/ld-x86-64/pr26711-1-x32.d b/ld/testsuite/ld-x86-64/pr26711-1-x32.d
+new file mode 100644
+index 00000000000..67013195b2e
+--- /dev/null
++++ b/ld/testsuite/ld-x86-64/pr26711-1-x32.d
+@@ -0,0 +1,10 @@
++#source: pr26711.s
++#source: start.s
++#as: --x32 -mx86-used-note=no
++#ld: -m elf32_x86_64 -z ibt
++#readelf: -n
++
++Displaying notes found in: .note.gnu.property
++[     ]+Owner[        ]+Data size[    ]+Description
++  GNU                  0x[0-9a-f]+    NT_GNU_PROPERTY_TYPE_0
++      Properties: x86 feature: IBT
+diff --git a/ld/testsuite/ld-x86-64/pr26711-1.d b/ld/testsuite/ld-x86-64/pr26711-1.d
+new file mode 100644
+index 00000000000..d8e3cbf19ba
+--- /dev/null
++++ b/ld/testsuite/ld-x86-64/pr26711-1.d
+@@ -0,0 +1,10 @@
++#source: pr26711.s
++#source: start.s
++#as: --64 -defsym __64_bit__=1 -mx86-used-note=no
++#ld: -m elf_x86_64 -z ibt
++#readelf: -n
++
++Displaying notes found in: .note.gnu.property
++[     ]+Owner[        ]+Data size[    ]+Description
++  GNU                  0x[0-9a-f]+    NT_GNU_PROPERTY_TYPE_0
++      Properties: x86 feature: IBT
+diff --git a/ld/testsuite/ld-x86-64/pr26711-2-x32.d b/ld/testsuite/ld-x86-64/pr26711-2-x32.d
+new file mode 100644
+index 00000000000..9822f8df4dc
+--- /dev/null
++++ b/ld/testsuite/ld-x86-64/pr26711-2-x32.d
+@@ -0,0 +1,10 @@
++#source: pr26711.s
++#source: start.s
++#as: --x32 -mx86-used-note=no
++#ld: -m elf32_x86_64 -z shstk
++#readelf: -n
++
++Displaying notes found in: .note.gnu.property
++[     ]+Owner[        ]+Data size[    ]+Description
++  GNU                  0x[0-9a-f]+    NT_GNU_PROPERTY_TYPE_0
++      Properties: x86 feature: SHSTK
+diff --git a/ld/testsuite/ld-x86-64/pr26711-2.d b/ld/testsuite/ld-x86-64/pr26711-2.d
+new file mode 100644
+index 00000000000..e24cfbfc0b0
+--- /dev/null
++++ b/ld/testsuite/ld-x86-64/pr26711-2.d
+@@ -0,0 +1,10 @@
++#source: pr26711.s
++#source: start.s
++#as: --64 -defsym __64_bit__=1 -mx86-used-note=no
++#ld: -m elf_x86_64 -z shstk
++#readelf: -n
++
++Displaying notes found in: .note.gnu.property
++[     ]+Owner[        ]+Data size[    ]+Description
++  GNU                  0x[0-9a-f]+    NT_GNU_PROPERTY_TYPE_0
++      Properties: x86 feature: SHSTK
+diff --git a/ld/testsuite/ld-x86-64/pr26711-3-x32.d b/ld/testsuite/ld-x86-64/pr26711-3-x32.d
+new file mode 100644
+index 00000000000..0661c7d5236
+--- /dev/null
++++ b/ld/testsuite/ld-x86-64/pr26711-3-x32.d
+@@ -0,0 +1,10 @@
++#source: pr26711.s
++#source: start.s
++#as: --x32 -mx86-used-note=no
++#ld: -m elf32_x86_64 -z ibt -z shstk
++#readelf: -n
++
++Displaying notes found in: .note.gnu.property
++[     ]+Owner[        ]+Data size[    ]+Description
++  GNU                  0x[0-9a-f]+    NT_GNU_PROPERTY_TYPE_0
++      Properties: x86 feature: IBT, SHSTK
+diff --git a/ld/testsuite/ld-x86-64/pr26711-3.d b/ld/testsuite/ld-x86-64/pr26711-3.d
+new file mode 100644
+index 00000000000..87bc3ccfb05
+--- /dev/null
++++ b/ld/testsuite/ld-x86-64/pr26711-3.d
+@@ -0,0 +1,10 @@
++#source: pr26711.s
++#source: start.s
++#as: --64 -defsym __64_bit__=1 -mx86-used-note=no
++#ld: -m elf_x86_64 -z ibt -z shstk
++#readelf: -n
++
++Displaying notes found in: .note.gnu.property
++[     ]+Owner[        ]+Data size[    ]+Description
++  GNU                  0x[0-9a-f]+    NT_GNU_PROPERTY_TYPE_0
++      Properties: x86 feature: IBT, SHSTK
+diff --git a/ld/testsuite/ld-x86-64/pr26711.s b/ld/testsuite/ld-x86-64/pr26711.s
+new file mode 100644
+index 00000000000..8fa185d42a7
+--- /dev/null
++++ b/ld/testsuite/ld-x86-64/pr26711.s
+@@ -0,0 +1,33 @@
++      .section ".note.gnu.property", "a"
++.ifdef __64_bit__
++      .p2align 3
++.else
++      .p2align 2
++.endif
++      .long 1f - 0f           /* name length */
++      .long 5f - 2f           /* data length */
++      .long 5                 /* note type */
++0:    .asciz "GNU"            /* vendor name */
++1:
++.ifdef __64_bit__
++      .p2align 3
++.else
++      .p2align 2
++.endif
++2:    .long 0xc0001002        /* pr_type.  */
++      .long 4f - 3f           /* pr_datasz.  */
++3:
++      .long 0x30
++4:
++.ifdef __64_bit__
++      .p2align 3
++.else
++      .p2align 2
++.endif
++5:
++
++      .text
++      .globl  foo
++      .type   foo, @function
++foo:
++      ret
+diff --git a/ld/testsuite/ld-x86-64/pr27016a.d b/ld/testsuite/ld-x86-64/pr27016a.d
+new file mode 100644
+index 00000000000..13200e3aed3
+--- /dev/null
++++ b/ld/testsuite/ld-x86-64/pr27016a.d
+@@ -0,0 +1,23 @@
++#source: pr27016a.s
++#source: pr27016b.s
++#as: --64 -mx86-used-note=no -mrelax-relocations=no
++#ld: -m elf_x86_64 -z max-page-size=0x200000 -z noseparate-code -e main
++#objdump: -dw
++
++.*: +file format .*
++
++
++Disassembly of section .text:
++
++0+4000e8 <main>:
++ +[a-f0-9]+:  55                      push   %rbp
++ +[a-f0-9]+:  48 89 e5                mov    %rsp,%rbp
++ +[a-f0-9]+:  4c 8d 1d 39 3f 00 00    lea    0x3f39\(%rip\),%r11        # 40402c <thesym>
++ +[a-f0-9]+:  41 8b 03                mov    \(%r11\),%eax
++ +[a-f0-9]+:  8d 50 01                lea    0x1\(%rax\),%edx
++ +[a-f0-9]+:  4c 8d 1d 2c 3f 00 00    lea    0x3f2c\(%rip\),%r11        # 40402c <thesym>
++ +[a-f0-9]+:  41 89 13                mov    %edx,\(%r11\)
++ +[a-f0-9]+:  b8 00 00 00 00          mov    \$0x0,%eax
++ +[a-f0-9]+:  5d                      pop    %rbp
++ +[a-f0-9]+:  c3                      retq   
++#pass
+diff --git a/ld/testsuite/ld-x86-64/pr27016a.s b/ld/testsuite/ld-x86-64/pr27016a.s
+new file mode 100644
+index 00000000000..b64851a5ffb
+--- /dev/null
++++ b/ld/testsuite/ld-x86-64/pr27016a.s
+@@ -0,0 +1,23 @@
++        .text
++        .comm   global_int,4,4
++        .globl  main
++        .type   main, @function
++main:
++        .cfi_startproc
++        pushq   %rbp
++        .cfi_def_cfa_offset 16
++        .cfi_offset 6, -16
++        movq    %rsp, %rbp
++        .cfi_def_cfa_register 6
++        movq    thesym@GOTPCREL(%rip), %r11
++        movl    (%r11), %eax
++        leal    1(%rax), %edx
++        movq    thesym@GOTPCREL(%rip), %r11
++        movl    %edx, (%r11)
++        movl    $0, %eax
++        popq    %rbp
++        .cfi_def_cfa 7, 8
++        ret
++        .cfi_endproc
++        .size   main, .-main
++        .section        .note.GNU-stack,"",@progbits
+diff --git a/ld/testsuite/ld-x86-64/pr27016b.d b/ld/testsuite/ld-x86-64/pr27016b.d
+new file mode 100644
+index 00000000000..d1b144bfaa3
+--- /dev/null
++++ b/ld/testsuite/ld-x86-64/pr27016b.d
+@@ -0,0 +1,23 @@
++#source: pr27016a.s
++#source: pr27016b.s
++#as: --64 -mx86-used-note=no -mrelax-relocations=yes
++#ld: -m elf_x86_64 -z max-page-size=0x200000 -z noseparate-code -e main
++#objdump: -dw
++
++.*: +file format .*
++
++
++Disassembly of section .text:
++
++0+4000e8 <main>:
++ +[a-f0-9]+:  55                      push   %rbp
++ +[a-f0-9]+:  48 89 e5                mov    %rsp,%rbp
++ +[a-f0-9]+:  49 c7 c3 2c 40 40 00    mov    \$0x40402c,%r11
++ +[a-f0-9]+:  41 8b 03                mov    \(%r11\),%eax
++ +[a-f0-9]+:  8d 50 01                lea    0x1\(%rax\),%edx
++ +[a-f0-9]+:  49 c7 c3 2c 40 40 00    mov    \$0x40402c,%r11
++ +[a-f0-9]+:  41 89 13                mov    %edx,\(%r11\)
++ +[a-f0-9]+:  b8 00 00 00 00          mov    \$0x0,%eax
++ +[a-f0-9]+:  5d                      pop    %rbp
++ +[a-f0-9]+:  c3                      retq   
++#pass
+diff --git a/ld/testsuite/ld-x86-64/pr27016b.s b/ld/testsuite/ld-x86-64/pr27016b.s
+new file mode 100644
+index 00000000000..ded8d7a826c
+--- /dev/null
++++ b/ld/testsuite/ld-x86-64/pr27016b.s
+@@ -0,0 +1,4 @@
++      .globl thesym
++thesym = 0x40402c
++
++      .section        .note.GNU-stack,"",@progbits
+diff --git a/ld/testsuite/ld-x86-64/property-3.r b/ld/testsuite/ld-x86-64/property-3.r
+index 1abb90b3a2e..e95d47ae8d6 100644
+--- a/ld/testsuite/ld-x86-64/property-3.r
++++ b/ld/testsuite/ld-x86-64/property-3.r
+@@ -3,5 +3,6 @@ Displaying notes found in: .note.gnu.property
+ [     ]+Owner[        ]+Data size[    ]+Description
+   GNU                  0x[0-9a-f]+    NT_GNU_PROPERTY_TYPE_0
+       Properties: stack size: 0x800000
++#...
+       x86 ISA needed: CMOV, SSE
+ #pass
+diff --git a/ld/testsuite/ld-x86-64/property-4.r b/ld/testsuite/ld-x86-64/property-4.r
+index e94846e88ea..a4b7bb71adf 100644
+--- a/ld/testsuite/ld-x86-64/property-4.r
++++ b/ld/testsuite/ld-x86-64/property-4.r
+@@ -3,5 +3,6 @@ Displaying notes found in: .note.gnu.property
+ [     ]+Owner[        ]+Data size[    ]+Description
+   GNU                  0x[0-9a-f]+    NT_GNU_PROPERTY_TYPE_0
+       Properties: stack size: 0x800000
++#...
+       x86 ISA needed: CMOV, SSE, SSE3
+ #pass
+diff --git a/ld/testsuite/ld-x86-64/property-5.r b/ld/testsuite/ld-x86-64/property-5.r
+index bd87a9317ef..5ff95648c29 100644
+--- a/ld/testsuite/ld-x86-64/property-5.r
++++ b/ld/testsuite/ld-x86-64/property-5.r
+@@ -3,5 +3,6 @@ Displaying notes found in: .note.gnu.property
+ [     ]+Owner[        ]+Data size[    ]+Description
+   GNU                  0x[0-9a-f]+    NT_GNU_PROPERTY_TYPE_0
+       Properties: stack size: 0x900000
++#...
+       x86 ISA needed: CMOV, SSE, SSE3
+ #pass
+diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
+index d836f334963..91410304ea0 100644
+--- a/ld/testsuite/ld-x86-64/x86-64.exp
++++ b/ld/testsuite/ld-x86-64/x86-64.exp
+@@ -432,6 +432,12 @@ run_dump_test "pr25416-3"
+ run_dump_test "pr25416-4"
+ run_dump_test "pr26018"
+ run_dump_test "pr26263"
++run_dump_test "pr26711-1"
++run_dump_test "pr26711-1-x32"
++run_dump_test "pr26711-2"
++run_dump_test "pr26711-2-x32"
++run_dump_test "pr26711-3"
++run_dump_test "pr26711-3-x32"
+ if ![istarget "x86_64-*-linux*"] {
+     return
+@@ -641,6 +647,8 @@ run_dump_test "pr20253-5b"
+ run_dump_test "tlsdesc2"
+ run_dump_test "pr22048"
+ run_dump_test "pr22929"
++run_dump_test "pr27016a"
++run_dump_test "pr27016b"
+ proc undefined_weak {cflags ldflags} {
+     set testname "Undefined weak symbol"
+diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
+index 19d2b702d62..42daff15948 100644
+--- a/libiberty/ChangeLog
++++ b/libiberty/ChangeLog
+@@ -1,3 +1,12 @@
++2020-11-15  Mark Wielaard  <mark@klomp.org>
++
++      Backport from the mainline:
++      2020-09-23  Mark Wielaard  <mark@klomp.org>
++
++      Sync with GCC
++      * dwarfnames.c (get_DW_UT_name): Define using DW_UT_FIRST, DW_UT
++      and DW_UT_END.
++
+ 2020-06-23  Nick Alcock  <nick.alcock@oracle.com>
+       * bsearch_r.c: New file.
+diff --git a/libiberty/dwarfnames.c b/libiberty/dwarfnames.c
+index 968d1917532..af11668b431 100644
+--- a/libiberty/dwarfnames.c
++++ b/libiberty/dwarfnames.c
+@@ -64,6 +64,11 @@ Boston, MA 02110-1301, USA.  */
+   switch (idx) {                                      \
+   DW_IDX (name, value)
+ #define DW_END_IDX } return 0; }
++#define DW_FIRST_UT(name, value) \
++  const char *get_DW_UT_name (unsigned int ut) {      \
++  switch (ut) {                                       \
++  DW_UT (name, value)
++#define DW_END_UT } return 0; }
+ #define DW_TAG(name, value) case name: return # name ;
+ #define DW_TAG_DUP(name, value)
+@@ -78,6 +83,7 @@ Boston, MA 02110-1301, USA.  */
+ #define DW_CFA_DUP(name, value)
+ #define DW_IDX(name, value) case name: return # name ;
+ #define DW_IDX_DUP(name, value)
++#define DW_UT(name, value) case name: return # name ;
+ #include "dwarf2.def"
+@@ -95,6 +101,7 @@ Boston, MA 02110-1301, USA.  */
+ #undef DW_END_CFA
+ #undef DW_FIRST_IDX
+ #undef DW_END_IDX
++#undef DW_END_UT
+ #undef DW_TAG
+ #undef DW_TAG_DUP
+diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
+index b53a2bba98d..fada4f8c94b 100644
+--- a/opcodes/ChangeLog
++++ b/opcodes/ChangeLog
+@@ -1,3 +1,31 @@
++2020-10-07  H.J. Lu  <hongjiu.lu@intel.com>
++
++      PR gas/26685
++      * i386-dis.c (mod_table): Replace Gv with Gdq on movdiri.
++
++2020-10-07  Jan Beulich  <jbeulich@suse.com>
++
++      * i386-dis.c (OP_E_memory): Revert previous change.
++
++2020-09-24  Alan Modra  <amodra@gmail.com>
++
++      Apply from master
++      2020-08-19  Alan Modra  <amodra@gmail.com>
++      * ppc-opc.c (powerpc_opcodes): Replace OBF with BF for vcmpsq,
++      vcmpuq and xvtlsbb.
++
++      2020-08-10  Alan Modra  <amodra@gmail.com>
++      * ppc-opc.c (powerpc_opcodes): Add many mtspr and mfspr extended
++      instructions.
++
++      2020-08-10  Alan Modra  <amodra@gmail.com>
++      * ppc-opc.c (powerpc_opcodes): Add exser, msgsndu, msgclru.
++      Enable icbt for power5, miso for power8.
++
++      2020-08-10  Alan Modra  <amodra@gmail.com>
++      * ppc-opc.c (powerpc_opcodes): Prioritise mtfprd and mtvrd over
++      mtvsrd, and similarly for mfvsrd.
++
+ 2020-09-19  Nick Clifton  <nickc@redhat.com>
+       This is the 2.35.1 point release.
+diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
+index 8e0b4a1c2b1..ea2ca1bb88e 100644
+--- a/opcodes/i386-dis.c
++++ b/opcodes/i386-dis.c
+@@ -10496,7 +10496,7 @@ static const struct dis386 mod_table[][2] = {
+   },
+   {
+     /* MOD_0F38F9_PREFIX_0 */
+-    { "movdiri",      { Ev, Gv }, PREFIX_OPCODE },
++    { "movdiri",      { Ev, Gdq }, PREFIX_OPCODE },
+   },
+   {
+     /* MOD_62_32BIT */
+@@ -14190,7 +14190,7 @@ OP_E_memory (int bytemode, int sizeflag)
+                 /* Without base nor index registers, zero-extend the
+                    lower 32-bit displacement to 64 bits.  */
+                 disp = (unsigned int) disp;
+-                needindex = scale;
++                needindex = 1;
+               }
+             needaddr32 = 1;
+           }
+diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c
+index 6932e4e820d..d15bde1326e 100644
+--- a/opcodes/ppc-opc.c
++++ b/opcodes/ppc-opc.c
+@@ -4441,7 +4441,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"nmachhws",  XO (4, 110,0,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
+ {"nmachhws.", XO (4, 110,0,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
+ {"vadduqm",   VX (4, 256),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
+-{"vcmpuq",    VX (4, 257),    VXBF_MASK,   POWER10,   0,              {OBF, VA, VB}},
++{"vcmpuq",    VX (4, 257),    VXBF_MASK,   POWER10,   0,              {BF, VA, VB}},
+ {"vmaxsb",    VX (4, 258),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
+ {"vslb",      VX (4, 260),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
+ {"vslq",      VX (4, 261),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
+@@ -4459,7 +4459,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"macchwu",   XO (4, 140,0,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
+ {"macchwu.",  XO (4, 140,0,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
+ {"vaddcuq",   VX (4, 320),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
+-{"vcmpsq",    VX (4, 321),    VXBF_MASK,   POWER10,   0,              {OBF, VA, VB}},
++{"vcmpsq",    VX (4, 321),    VXBF_MASK,   POWER10,   0,              {BF, VA, VB}},
+ {"vmaxsh",    VX (4, 322),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
+ {"vslh",      VX (4, 324),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
+ {"vrlqnm",    VX (4, 325),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
+@@ -6114,6 +6114,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"rlnm.",     M(23,1),        M_MASK,      PWRCOM,    PPCVLE,         {RA, RS, RB, MBE, ME}},
+ {"nop",               OP(24),         0xffffffff,  PPCCOM,    PPCVLE,         {0}},
++{"exser",     0x63ff0000,     0xffffffff,  POWER9,    PPCVLE,         {0}},
+ {"ori",               OP(24),         OP_MASK,     PPCCOM,    PPCVLE,         {RA, RS, UI}},
+ {"oril",      OP(24),         OP_MASK,     PWRCOM,    PPCVLE,         {RA, RS, UI}},
+@@ -6236,7 +6237,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"ldx",               X(31,21),       X_MASK,      PPC64,     0,              {RT, RA0, RB}},
+-{"icbt",      X(31,22),  X_MASK, BOOKE|PPCE300|PPCA2|PPC476, 0,       {CT, RA0, RB}},
++{"icbt",      X(31,22), X_MASK, POWER5|BOOKE|PPCE300, 0,              {CT, RA0, RB}},
+ {"lwzx",      X(31,23),       X_MASK,      PPCCOM,    0,              {RT, RA0, RB}},
+ {"lx",                X(31,23),       X_MASK,      PWRCOM,    0,              {RT, RA, RB}},
+@@ -6302,9 +6303,9 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"subf.",     XO(31,40,0,1),  XO_MASK,     PPC,       0,              {RT, RA, RB}},
+ {"sub.",      XO(31,40,0,1),  XO_MASK,     PPC,       0,              {RT, RB, RA}},
+-{"mfvsrd",    X(31,51),       XX1RB_MASK,   PPCVSX2,  0,              {RA, XS6}},
+ {"mffprd",    X(31,51),       XX1RB_MASK|1, PPCVSX2,  0,              {RA, FRS}},
+ {"mfvrd",     X(31,51)|1,     XX1RB_MASK|1, PPCVSX2,  0,              {RA, VS}},
++{"mfvsrd",    X(31,51),       XX1RB_MASK,   PPCVSX2,  0,              {RA, XS6}},
+ {"eratilx",   X(31,51),       X_MASK,      PPCA2,     0,              {ERAT_T, RA, RB}},
+ {"lbarx",     X(31,52),       XEH_MASK, POWER8|E6500, 0,              {RT, RA0, RB, EH}},
+@@ -6354,6 +6355,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"mulhw",     XO(31,75,0,0),  XO_MASK,     PPC,       0,              {RT, RA, RB}},
+ {"mulhw.",    XO(31,75,0,1),  XO_MASK,     PPC,       0,              {RT, RA, RB}},
++{"msgsndu",   XRTRA(31,78,0,0), XRTRA_MASK, POWER9,   0,              {RB}},
+ {"dlmzb",     XRC(31,78,0), X_MASK, PPC403|PPC440|PPC476|TITAN, 0,    {RA, RS, RB}},
+ {"dlmzb.",    XRC(31,78,1), X_MASK, PPC403|PPC440|PPC476|TITAN, 0,    {RA, RS, RB}},
+@@ -6387,6 +6389,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"lxvrdx",    X(31,109),      XX1_MASK,    POWER10,   0,              {XT6, RA0, RB}},
++{"msgclru",   XRTRA(31,110,0,0), XRTRA_MASK, POWER9,  0,              {RB}},
+ {"mvidsplt",  X(31,110),      X_MASK,      E6500,     0,              {VD, RA, RB}},
+ {"mtsrdin",   X(31,114),      XRA_MASK,    PPC64,     0,              {RS, RB}},
+@@ -6489,9 +6492,9 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"mtmsrd",    X(31,178),      XRLARB_MASK, PPC64,     0,              {RS, A_L}},
+-{"mtvsrd",    X(31,179),      XX1RB_MASK,   PPCVSX2,  0,              {XT6, RA}},
+ {"mtfprd",    X(31,179),      XX1RB_MASK|1, PPCVSX2,  0,              {FRT, RA}},
+ {"mtvrd",     X(31,179)|1,    XX1RB_MASK|1, PPCVSX2,  0,              {VD, RA}},
++{"mtvsrd",    X(31,179),      XX1RB_MASK,   PPCVSX2,  0,              {XT6, RA}},
+ {"eratre",    X(31,179),      X_MASK,      PPCA2,     0,              {RT, RA, WS}},
+ {"stdux",     X(31,181),      X_MASK,      PPC64,     0,              {RS, RAS, RB}},
+@@ -6738,11 +6741,13 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"mfmq",      XSPR(31,339,  0), XSPR_MASK, M601,      0,              {RT}},
+ {"mfxer",     XSPR(31,339,  1), XSPR_MASK, COM,       0,              {RT}},
++{"mfudscr",   XSPR(31,339,  3), XSPR_MASK, POWER9,    0,              {RS}},
+ {"mfrtcu",    XSPR(31,339,  4), XSPR_MASK, COM,       TITAN,          {RT}},
+ {"mfrtcl",    XSPR(31,339,  5), XSPR_MASK, COM,       TITAN,          {RT}},
+ {"mfdec",     XSPR(31,339,  6), XSPR_MASK, MFDEC1,    0,              {RT}},
+ {"mflr",      XSPR(31,339,  8), XSPR_MASK, COM,       0,              {RT}},
+ {"mfctr",     XSPR(31,339,  9), XSPR_MASK, COM,       0,              {RT}},
++{"mfuamr",    XSPR(31,339, 13), XSPR_MASK, POWER9,    0,              {RS}},
+ {"mfdscr",    XSPR(31,339, 17), XSPR_MASK, POWER6,    0,              {RT}},
+ {"mftid",     XSPR(31,339, 17), XSPR_MASK, POWER,     0,              {RT}},
+ {"mfdsisr",   XSPR(31,339, 18), XSPR_MASK, COM,       TITAN,          {RT}},
+@@ -6753,9 +6758,12 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"mfsrr0",    XSPR(31,339, 26), XSPR_MASK, COM,       0,              {RT}},
+ {"mfsrr1",    XSPR(31,339, 27), XSPR_MASK, COM,       0,              {RT}},
+ {"mfcfar",    XSPR(31,339, 28), XSPR_MASK, POWER6,    0,              {RT}},
++{"mfamr",     XSPR(31,339, 29), XSPR_MASK, POWER7,    0,              {RS}},
++{"mfpidr",    XSPR(31,339, 48), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mfpid",     XSPR(31,339, 48), XSPR_MASK, BOOKE,     0,              {RT}},
+ {"mfcsrr0",   XSPR(31,339, 58), XSPR_MASK, BOOKE,     0,              {RT}},
+ {"mfcsrr1",   XSPR(31,339, 59), XSPR_MASK, BOOKE,     0,              {RT}},
++{"mfiamr",    XSPR(31,339, 61), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mfdear",    XSPR(31,339, 61), XSPR_MASK, BOOKE,     0,              {RT}},
+ {"mfesr",     XSPR(31,339, 62), XSPR_MASK, BOOKE,     0,              {RT}},
+ {"mfivpr",    XSPR(31,339, 63), XSPR_MASK, BOOKE,     0,              {RT}},
+@@ -6769,16 +6777,28 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"mfcounta",  XSPR(31,339,150), XSPR_MASK, PPC860,    0,              {RT}},
+ {"mfcountb",  XSPR(31,339,151), XSPR_MASK, PPC860,    0,              {RT}},
+ {"mfcmpe",    XSPR(31,339,152), XSPR_MASK, PPC860,    0,              {RT}},
++{"mffscr",    XSPR(31,339,153), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mfcmpf",    XSPR(31,339,153), XSPR_MASK, PPC860,    0,              {RT}},
+ {"mfcmpg",    XSPR(31,339,154), XSPR_MASK, PPC860,    0,              {RT}},
+ {"mfcmph",    XSPR(31,339,155), XSPR_MASK, PPC860,    0,              {RT}},
+ {"mflctrl1",  XSPR(31,339,156), XSPR_MASK, PPC860,    0,              {RT}},
++{"mfuamor",   XSPR(31,339,157), XSPR_MASK, POWER7,    0,              {RS}},
+ {"mflctrl2",  XSPR(31,339,157), XSPR_MASK, PPC860,    0,              {RT}},
+ {"mfictrl",   XSPR(31,339,158), XSPR_MASK, PPC860,    0,              {RT}},
++{"mfpspb",    XSPR(31,339,159), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mfbar",     XSPR(31,339,159), XSPR_MASK, PPC860,    0,              {RT}},
++{"mfdpdes",   XSPR(31,339,176), XSPR_MASK, POWER10,   0,              {RS}},
++{"mfdawr0",   XSPR(31,339,180), XSPR_MASK, POWER10,   0,              {RS}},
++{"mfdawr1",   XSPR(31,339,181), XSPR_MASK, POWER10,   0,              {RS}},
++{"mfrpr",     XSPR(31,339,186), XSPR_MASK, POWER10,   0,              {RS}},
++{"mfciabr",   XSPR(31,339,187), XSPR_MASK, POWER10,   0,              {RS}},
++{"mfdawrx0",  XSPR(31,339,188), XSPR_MASK, POWER10,   0,              {RS}},
++{"mfdawrx1",  XSPR(31,339,189), XSPR_MASK, POWER10,   0,              {RS}},
++{"mfhfscr",   XSPR(31,339,190), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mfvrsave",  XSPR(31,339,256), XSPR_MASK, PPCVEC,    0,              {RT}},
+ {"mfusprg0",  XSPR(31,339,256), XSPR_MASK, BOOKE,     0,              {RT}},
+ {"mfsprg",    XSPR(31,339,256), XSPRG_MASK, PPC,      0,              {RT, SPRG}},
++{"mfusprg3",  XSPR(31,339,259), XSPR_MASK, POWER10,   0,              {RT}},
+ {"mfsprg4",   XSPR(31,339,260), XSPR_MASK, PPC405|BOOKE, 0,           {RT}},
+ {"mfsprg5",   XSPR(31,339,261), XSPR_MASK, PPC405|BOOKE, 0,           {RT}},
+ {"mfsprg6",   XSPR(31,339,262), XSPR_MASK, PPC405|BOOKE, 0,           {RT}},
+@@ -6794,20 +6814,37 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"mfear",     XSPR(31,339,282), XSPR_MASK, PPC,       TITAN,          {RT}},
+ {"mfpir",     XSPR(31,339,286), XSPR_MASK, BOOKE,     0,              {RT}},
+ {"mfpvr",     XSPR(31,339,287), XSPR_MASK, PPC,       0,              {RT}},
++{"mfhsprg0",  XSPR(31,339,304), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mfdbsr",    XSPR(31,339,304), XSPR_MASK, BOOKE,     0,              {RT}},
++{"mfhsprg1",  XSPR(31,339,305), XSPR_MASK, POWER10,   0,              {RS}},
++{"mfhdisr",   XSPR(31,339,306), XSPR_MASK, POWER10,   0,              {RS}},
++{"mfhdar",    XSPR(31,339,307), XSPR_MASK, POWER10,   0,              {RS}},
++{"mfspurr",   XSPR(31,339,308), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mfdbcr0",   XSPR(31,339,308), XSPR_MASK, BOOKE,     0,              {RT}},
++{"mfpurr",    XSPR(31,339,309), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mfdbcr1",   XSPR(31,339,309), XSPR_MASK, BOOKE,     0,              {RT}},
++{"mfhdec",    XSPR(31,339,310), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mfdbcr2",   XSPR(31,339,310), XSPR_MASK, BOOKE,     0,              {RT}},
+ {"mfiac1",    XSPR(31,339,312), XSPR_MASK, BOOKE,     0,              {RT}},
++{"mfhrmor",   XSPR(31,339,313), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mfiac2",    XSPR(31,339,313), XSPR_MASK, BOOKE,     0,              {RT}},
++{"mfhsrr0",   XSPR(31,339,314), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mfiac3",    XSPR(31,339,314), XSPR_MASK, BOOKE,     0,              {RT}},
++{"mfhsrr1",   XSPR(31,339,315), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mfiac4",    XSPR(31,339,315), XSPR_MASK, BOOKE,     0,              {RT}},
+ {"mfdac1",    XSPR(31,339,316), XSPR_MASK, BOOKE,     0,              {RT}},
+ {"mfdac2",    XSPR(31,339,317), XSPR_MASK, BOOKE,     0,              {RT}},
++{"mflpcr",    XSPR(31,339,318), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mfdvc1",    XSPR(31,339,318), XSPR_MASK, BOOKE,     0,              {RT}},
++{"mflpidr",   XSPR(31,339,319), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mfdvc2",    XSPR(31,339,319), XSPR_MASK, BOOKE,     0,              {RT}},
++{"mfhmer",    XSPR(31,339,336), XSPR_MASK, POWER7,    0,              {RS}},
+ {"mftsr",     XSPR(31,339,336), XSPR_MASK, BOOKE,     0,              {RT}},
++{"mfhmeer",   XSPR(31,339,337), XSPR_MASK, POWER7,    0,              {RS}},
++{"mfpcr",     XSPR(31,339,338), XSPR_MASK, POWER10,   0,              {RS}},
++{"mfheir",    XSPR(31,339,339), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mftcr",     XSPR(31,339,340), XSPR_MASK, BOOKE,     0,              {RT}},
++{"mfamor",    XSPR(31,339,349), XSPR_MASK, POWER7,    0,              {RS}},
+ {"mfivor0",   XSPR(31,339,400), XSPR_MASK, BOOKE,     0,              {RT}},
+ {"mfivor1",   XSPR(31,339,401), XSPR_MASK, BOOKE,     0,              {RT}},
+ {"mfivor2",   XSPR(31,339,402), XSPR_MASK, BOOKE,     0,              {RT}},
+@@ -6824,6 +6861,14 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"mfivor13",  XSPR(31,339,413), XSPR_MASK, BOOKE,     0,              {RT}},
+ {"mfivor14",  XSPR(31,339,414), XSPR_MASK, BOOKE,     0,              {RT}},
+ {"mfivor15",  XSPR(31,339,415), XSPR_MASK, BOOKE,     0,              {RT}},
++{"mftir",     XSPR(31,339,446), XSPR_MASK, POWER10,   0,              {RS}},
++{"mfptcr",    XSPR(31,339,464), XSPR_MASK, POWER10,   0,              {RS}},
++{"mfuspgr0",  XSPR(31,339,496), XSPR_MASK, POWER10,   0,              {RS}},
++{"mfuspgr1",  XSPR(31,339,497), XSPR_MASK, POWER10,   0,              {RS}},
++{"mfurmor",   XSPR(31,339,505), XSPR_MASK, POWER10,   0,              {RS}},
++{"mfusrr0",   XSPR(31,339,506), XSPR_MASK, POWER10,   0,              {RS}},
++{"mfusrr1",   XSPR(31,339,507), XSPR_MASK, POWER10,   0,              {RS}},
++{"mfsmfctrl", XSPR(31,339,511), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mfspefscr", XSPR(31,339,512), XSPR_MASK, PPCSPE,    0,              {RT}},
+ {"mfbbear",   XSPR(31,339,513), XSPR_MASK, PPCBRLK,   0,              {RT}},
+ {"mfbbtar",   XSPR(31,339,514), XSPR_MASK, PPCBRLK,   0,              {RT}},
+@@ -6848,18 +6893,36 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"mfdpdr",    XSPR(31,339,630), XSPR_MASK, PPC860,    0,              {RT}},
+ {"mfdpir",    XSPR(31,339,631), XSPR_MASK, PPC860,    0,              {RT}},
+ {"mfimmr",    XSPR(31,339,638), XSPR_MASK, PPC860,    0,              {RT}},
++{"mfusier2",  XSPR(31,339,736), XSPR_MASK, POWER10,   0,              {RT}},
++{"mfsier2",   XSPR(31,339,736), XSPR_MASK, POWER10,   0,              {RT}},
++{"mfusier3",  XSPR(31,339,737), XSPR_MASK, POWER10,   0,              {RT}},
++{"mfsier3",   XSPR(31,339,737), XSPR_MASK, POWER10,   0,              {RT}},
++{"mfummcr3",  XSPR(31,339,738), XSPR_MASK, POWER10,   0,              {RT}},
++{"mfmmcr3",   XSPR(31,339,738), XSPR_MASK, POWER10,   0,              {RT}},
++{"mfusier",   XSPR(31,339,768), XSPR_MASK, POWER10,   0,              {RT}},
++{"mfsier",    XSPR(31,339,768), XSPR_MASK, POWER10,   0,              {RT}},
++{"mfummcra",  XSPR(31,339,770), XSPR_MASK, POWER9,    0,              {RS}},
++{"mfmmcra",   XSPR(31,339,770), XSPR_MASK, POWER7,    0,              {RS}},
+ {"mfupmc1",   XSPR(31,339,771), XSPR_MASK, POWER9,    0,              {RT}},
+-{"mfpmc1",    XSPR(31,339,771), XSPR_MASK, POWER9,    0,              {RT}},
++{"mfpmc1",    XSPR(31,339,771), XSPR_MASK, POWER7,    0,              {RT}},
+ {"mfupmc2",   XSPR(31,339,772), XSPR_MASK, POWER9,    0,              {RT}},
+-{"mfpmc2",    XSPR(31,339,772), XSPR_MASK, POWER9,    0,              {RT}},
++{"mfpmc2",    XSPR(31,339,772), XSPR_MASK, POWER7,    0,              {RT}},
+ {"mfupmc3",   XSPR(31,339,773), XSPR_MASK, POWER9,    0,              {RT}},
+-{"mfpmc3",    XSPR(31,339,773), XSPR_MASK, POWER9,    0,              {RT}},
++{"mfpmc3",    XSPR(31,339,773), XSPR_MASK, POWER7,    0,              {RT}},
+ {"mfupmc4",   XSPR(31,339,774), XSPR_MASK, POWER9,    0,              {RT}},
+-{"mfpmc4",    XSPR(31,339,774), XSPR_MASK, POWER9,    0,              {RT}},
++{"mfpmc4",    XSPR(31,339,774), XSPR_MASK, POWER7,    0,              {RT}},
+ {"mfupmc5",   XSPR(31,339,775), XSPR_MASK, POWER9,    0,              {RT}},
+-{"mfpmc5",    XSPR(31,339,775), XSPR_MASK, POWER9,    0,              {RT}},
++{"mfpmc5",    XSPR(31,339,775), XSPR_MASK, POWER7,    0,              {RT}},
+ {"mfupmc6",   XSPR(31,339,776), XSPR_MASK, POWER9,    0,              {RT}},
+-{"mfpmc6",    XSPR(31,339,776), XSPR_MASK, POWER9,    0,              {RT}},
++{"mfpmc6",    XSPR(31,339,776), XSPR_MASK, POWER7,    0,              {RT}},
++{"mfummcr0",  XSPR(31,339,779), XSPR_MASK, POWER9,    0,              {RS}},
++{"mfmmcr0",   XSPR(31,339,779), XSPR_MASK, POWER7,    0,              {RS}},
++{"mfusiar",   XSPR(31,339,780), XSPR_MASK, POWER9,    0,              {RS}},
++{"mfsiar",    XSPR(31,339,780), XSPR_MASK, POWER9,    0,              {RS}},
++{"mfusdar",   XSPR(31,339,781), XSPR_MASK, POWER9,    0,              {RS}},
++{"mfsdar",    XSPR(31,339,781), XSPR_MASK, POWER9,    0,              {RS}},
++{"mfummcr1",  XSPR(31,339,782), XSPR_MASK, POWER9,    0,              {RS}},
++{"mfmmcr1",   XSPR(31,339,782), XSPR_MASK, POWER7,    0,              {RS}},
+ {"mfmi_ctr",  XSPR(31,339,784), XSPR_MASK, PPC860,    0,              {RT}},
+ {"mfmi_ap",   XSPR(31,339,786), XSPR_MASK, PPC860,    0,              {RT}},
+ {"mfmi_epn",  XSPR(31,339,787), XSPR_MASK, PPC860,    0,              {RT}},
+@@ -6873,12 +6936,25 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"mfmd_twc",  XSPR(31,339,797), XSPR_MASK, PPC860,    0,              {RT}},
+ {"mfmd_rpn",  XSPR(31,339,798), XSPR_MASK, PPC860,    0,              {RT}},
+ {"mfm_tw",    XSPR(31,339,799), XSPR_MASK, PPC860,    0,              {RT}},
++{"mfbescrs",  XSPR(31,339,800), XSPR_MASK, POWER9,    0,              {RS}},
++{"mfbescrsu", XSPR(31,339,801), XSPR_MASK, POWER9,    0,              {RS}},
++{"mfbescrr",  XSPR(31,339,802), XSPR_MASK, POWER9,    0,              {RS}},
++{"mfbescrru", XSPR(31,339,803), XSPR_MASK, POWER9,    0,              {RS}},
++{"mfebbhr",   XSPR(31,339,804), XSPR_MASK, POWER9,    0,              {RS}},
++{"mfebbrr",   XSPR(31,339,805), XSPR_MASK, POWER9,    0,              {RS}},
++{"mfbescr",   XSPR(31,339,806), XSPR_MASK, POWER9,    0,              {RS}},
++{"mftar",     XSPR(31,339,815), XSPR_MASK, POWER9,    0,              {RS}},
++{"mfasdr",    XSPR(31,339,816), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mfmi_dbcam",        XSPR(31,339,816), XSPR_MASK, PPC860,    0,              {RT}},
+ {"mfmi_dbram0",       XSPR(31,339,817), XSPR_MASK, PPC860,    0,              {RT}},
+ {"mfmi_dbram1",       XSPR(31,339,818), XSPR_MASK, PPC860,    0,              {RT}},
++{"mfpsscr",   XSPR(31,339,823), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mfmd_dbcam",        XSPR(31,339,824), XSPR_MASK, PPC860,    0,              {RT}},
+ {"mfmd_dbram0",       XSPR(31,339,825), XSPR_MASK, PPC860,    0,              {RT}},
+ {"mfmd_dbram1",       XSPR(31,339,826), XSPR_MASK, PPC860,    0,              {RT}},
++{"mfic",      XSPR(31,339,848), XSPR_MASK, POWER8,    0,              {RS}},
++{"mfvtb",     XSPR(31,339,849), XSPR_MASK, POWER8,    0,              {RS}},
++{"mfhpsscr",  XSPR(31,339,855), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mfivndx",   XSPR(31,339,880), XSPR_MASK, TITAN,     0,              {RT}},
+ {"mfdvndx",   XSPR(31,339,881), XSPR_MASK, TITAN,     0,              {RT}},
+ {"mfivlim",   XSPR(31,339,882), XSPR_MASK, TITAN,     0,              {RT}},
+@@ -7051,14 +7127,15 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"sthux",     X(31,439),      X_MASK,      COM,       0,              {RS, RAS, RB}},
+-{"mdors",     0x7f9ce378,     0xffffffff,  E500MC,    0,              {0}},
+-
+-{"miso",      0x7f5ad378,     0xffffffff,  E6500,     0,              {0}},
+-
+-/* The "yield", "mdoio" and "mdoom" instructions are extended mnemonics for
+-   "or rX,rX,rX", with rX being r27, r29 and r30 respectively.        */
++/* or 26,26,26 */
++{"miso",      0x7f5ad378,   0xffffffff, POWER8|E6500, 0,              {0}},
++/* or 27,27,27 */
+ {"yield",     0x7f7bdb78,     0xffffffff,  POWER7,    0,              {0}},
++/* or 28,28,28 */
++{"mdors",     0x7f9ce378,     0xffffffff,  E500MC,    0,              {0}},
++/* or 29,29,29 */
+ {"mdoio",     0x7fbdeb78,     0xffffffff,  POWER7,    0,              {0}},
++/* or 30,30,30 */
+ {"mdoom",     0x7fdef378,     0xffffffff,  POWER7,    0,              {0}},
+ {"mr",                XRC(31,444,0),  X_MASK,      COM,       0,              {RA, RSB}},
+ {"or",                XRC(31,444,0),  X_MASK,      COM,       0,              {RA, RS, RB}},
+@@ -7124,8 +7201,10 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"mtmq",      XSPR(31,467,  0), XSPR_MASK, M601,      0,              {RS}},
+ {"mtxer",     XSPR(31,467,  1), XSPR_MASK, COM,       0,              {RS}},
++{"mtudscr",   XSPR(31,467,  3), XSPR_MASK, POWER9,    0,              {RS}},
+ {"mtlr",      XSPR(31,467,  8), XSPR_MASK, COM,       0,              {RS}},
+ {"mtctr",     XSPR(31,467,  9), XSPR_MASK, COM,       0,              {RS}},
++{"mtuamr",    XSPR(31,467, 13), XSPR_MASK, POWER9,    0,              {RS}},
+ {"mtdscr",    XSPR(31,467, 17), XSPR_MASK, POWER6,    0,              {RS}},
+ {"mttid",     XSPR(31,467, 17), XSPR_MASK, POWER,     0,              {RS}},
+ {"mtdsisr",   XSPR(31,467, 18), XSPR_MASK, COM,       TITAN,          {RS}},
+@@ -7138,13 +7217,20 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"mtsrr0",    XSPR(31,467, 26), XSPR_MASK, COM,       0,              {RS}},
+ {"mtsrr1",    XSPR(31,467, 27), XSPR_MASK, COM,       0,              {RS}},
+ {"mtcfar",    XSPR(31,467, 28), XSPR_MASK, POWER6,    0,              {RS}},
++{"mtamr",     XSPR(31,467, 29), XSPR_MASK, POWER7,    0,              {RS}},
++{"mtpidr",    XSPR(31,467, 48), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mtpid",     XSPR(31,467, 48), XSPR_MASK, BOOKE,     0,              {RS}},
+ {"mtdecar",   XSPR(31,467, 54), XSPR_MASK, BOOKE,     0,              {RS}},
+ {"mtcsrr0",   XSPR(31,467, 58), XSPR_MASK, BOOKE,     0,              {RS}},
+ {"mtcsrr1",   XSPR(31,467, 59), XSPR_MASK, BOOKE,     0,              {RS}},
++{"mtiamr",    XSPR(31,467, 61), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mtdear",    XSPR(31,467, 61), XSPR_MASK, BOOKE,     0,              {RS}},
+ {"mtesr",     XSPR(31,467, 62), XSPR_MASK, BOOKE,     0,              {RS}},
+ {"mtivpr",    XSPR(31,467, 63), XSPR_MASK, BOOKE,     0,              {RS}},
++{"mttfhar",   XSPR(31,467,128), XSPR_MASK, POWER9,    0,              {RS}},
++{"mttfiar",   XSPR(31,467,129), XSPR_MASK, POWER9,    0,              {RS}},
++{"mttexasr",  XSPR(31,467,130), XSPR_MASK, POWER9,    0,              {RS}},
++{"mttexasru", XSPR(31,467,131), XSPR_MASK, POWER9,    0,              {RS}},
+ {"mtcmpa",    XSPR(31,467,144), XSPR_MASK, PPC860,    0,              {RS}},
+ {"mtcmpb",    XSPR(31,467,145), XSPR_MASK, PPC860,    0,              {RS}},
+ {"mtcmpc",    XSPR(31,467,146), XSPR_MASK, PPC860,    0,              {RS}},
+@@ -7155,13 +7241,24 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"mtcountb",  XSPR(31,467,151), XSPR_MASK, PPC860,    0,              {RS}},
+ {"mtctrl",    XSPR(31,467,152), XSPR_MASK, POWER4,    0,              {RS}},
+ {"mtcmpe",    XSPR(31,467,152), XSPR_MASK, PPC860,    0,              {RS}},
++{"mtfscr",    XSPR(31,467,153), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mtcmpf",    XSPR(31,467,153), XSPR_MASK, PPC860,    0,              {RS}},
+ {"mtcmpg",    XSPR(31,467,154), XSPR_MASK, PPC860,    0,              {RS}},
+ {"mtcmph",    XSPR(31,467,155), XSPR_MASK, PPC860,    0,              {RS}},
+ {"mtlctrl1",  XSPR(31,467,156), XSPR_MASK, PPC860,    0,              {RS}},
++{"mtuamor",   XSPR(31,467,157), XSPR_MASK, POWER7,    0,              {RS}},
+ {"mtlctrl2",  XSPR(31,467,157), XSPR_MASK, PPC860,    0,              {RS}},
+ {"mtictrl",   XSPR(31,467,158), XSPR_MASK, PPC860,    0,              {RS}},
++{"mtpspb",    XSPR(31,467,159), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mtbar",     XSPR(31,467,159), XSPR_MASK, PPC860,    0,              {RS}},
++{"mtdpdes",   XSPR(31,467,176), XSPR_MASK, POWER10,   0,              {RS}},
++{"mtdawr0",   XSPR(31,467,180), XSPR_MASK, POWER10,   0,              {RS}},
++{"mtdawr1",   XSPR(31,467,181), XSPR_MASK, POWER10,   0,              {RS}},
++{"mtrpr",     XSPR(31,467,186), XSPR_MASK, POWER10,   0,              {RS}},
++{"mtciabr",   XSPR(31,467,187), XSPR_MASK, POWER10,   0,              {RS}},
++{"mtdawrx0",  XSPR(31,467,188), XSPR_MASK, POWER10,   0,              {RS}},
++{"mtdawrx1",  XSPR(31,467,189), XSPR_MASK, POWER10,   0,              {RS}},
++{"mthfscr",   XSPR(31,467,190), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mtvrsave",  XSPR(31,467,256), XSPR_MASK, PPCVEC,    0,              {RS}},
+ {"mtusprg0",  XSPR(31,467,256), XSPR_MASK, BOOKE,     0,              {RS}},
+ {"mtsprg",    XSPR(31,467,256), XSPRG_MASK, PPC,      0,              {SPRG, RS}},
+@@ -7177,20 +7274,38 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"mtear",     XSPR(31,467,282), XSPR_MASK, PPC,       TITAN,          {RS}},
+ {"mttbl",     XSPR(31,467,284), XSPR_MASK, PPC,       0,              {RS}},
+ {"mttbu",     XSPR(31,467,285), XSPR_MASK, PPC,       0,              {RS}},
++{"mttbu40",   XSPR(31,467,286), XSPR_MASK, POWER10,   0,              {RS}},
++{"mthsprg0",  XSPR(31,467,304), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mtdbsr",    XSPR(31,467,304), XSPR_MASK, BOOKE,     0,              {RS}},
++{"mthsprg1",  XSPR(31,467,305), XSPR_MASK, POWER10,   0,              {RS}},
++{"mthdisr",   XSPR(31,467,306), XSPR_MASK, POWER10,   0,              {RS}},
++{"mthdar",    XSPR(31,467,307), XSPR_MASK, POWER10,   0,              {RS}},
++{"mtspurr",   XSPR(31,467,308), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mtdbcr0",   XSPR(31,467,308), XSPR_MASK, BOOKE,     0,              {RS}},
++{"mtpurr",    XSPR(31,467,309), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mtdbcr1",   XSPR(31,467,309), XSPR_MASK, BOOKE,     0,              {RS}},
++{"mthdec",    XSPR(31,467,310), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mtdbcr2",   XSPR(31,467,310), XSPR_MASK, BOOKE,     0,              {RS}},
+ {"mtiac1",    XSPR(31,467,312), XSPR_MASK, BOOKE,     0,              {RS}},
++{"mthrmor",   XSPR(31,467,313), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mtiac2",    XSPR(31,467,313), XSPR_MASK, BOOKE,     0,              {RS}},
++{"mthsrr0",   XSPR(31,467,314), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mtiac3",    XSPR(31,467,314), XSPR_MASK, BOOKE,     0,              {RS}},
++{"mthsrr1",   XSPR(31,467,315), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mtiac4",    XSPR(31,467,315), XSPR_MASK, BOOKE,     0,              {RS}},
+ {"mtdac1",    XSPR(31,467,316), XSPR_MASK, BOOKE,     0,              {RS}},
+ {"mtdac2",    XSPR(31,467,317), XSPR_MASK, BOOKE,     0,              {RS}},
++{"mtlpcr",    XSPR(31,467,318), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mtdvc1",    XSPR(31,467,318), XSPR_MASK, BOOKE,     0,              {RS}},
++{"mtlpidr",   XSPR(31,467,319), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mtdvc2",    XSPR(31,467,319), XSPR_MASK, BOOKE,     0,              {RS}},
++{"mthmer",    XSPR(31,467,336), XSPR_MASK, POWER7,    0,              {RS}},
+ {"mttsr",     XSPR(31,467,336), XSPR_MASK, BOOKE,     0,              {RS}},
++{"mthmeer",   XSPR(31,467,337), XSPR_MASK, POWER7,    0,              {RS}},
++{"mtpcr",     XSPR(31,467,338), XSPR_MASK, POWER10,   0,              {RS}},
++{"mtheir",    XSPR(31,467,339), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mttcr",     XSPR(31,467,340), XSPR_MASK, BOOKE,     0,              {RS}},
++{"mtamor",    XSPR(31,467,349), XSPR_MASK, POWER7,    0,              {RS}},
+ {"mtivor0",   XSPR(31,467,400), XSPR_MASK, BOOKE,     0,              {RS}},
+ {"mtivor1",   XSPR(31,467,401), XSPR_MASK, BOOKE,     0,              {RS}},
+ {"mtivor2",   XSPR(31,467,402), XSPR_MASK, BOOKE,     0,              {RS}},
+@@ -7207,6 +7322,13 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"mtivor13",  XSPR(31,467,413), XSPR_MASK, BOOKE,     0,              {RS}},
+ {"mtivor14",  XSPR(31,467,414), XSPR_MASK, BOOKE,     0,              {RS}},
+ {"mtivor15",  XSPR(31,467,415), XSPR_MASK, BOOKE,     0,              {RS}},
++{"mtptcr",    XSPR(31,467,464), XSPR_MASK, POWER10,   0,              {RS}},
++{"mtuspgr0",  XSPR(31,467,496), XSPR_MASK, POWER10,   0,              {RS}},
++{"mtuspgr1",  XSPR(31,467,497), XSPR_MASK, POWER10,   0,              {RS}},
++{"mturmor",   XSPR(31,467,505), XSPR_MASK, POWER10,   0,              {RS}},
++{"mtusrr0",   XSPR(31,467,506), XSPR_MASK, POWER10,   0,              {RS}},
++{"mtusrr1",   XSPR(31,467,507), XSPR_MASK, POWER10,   0,              {RS}},
++{"mtsmfctrl", XSPR(31,467,511), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mtspefscr", XSPR(31,467,512), XSPR_MASK, PPCSPE,    0,              {RS}},
+ {"mtbbear",   XSPR(31,467,513), XSPR_MASK, PPCBRLK,   0,              {RS}},
+ {"mtbbtar",   XSPR(31,467,514), XSPR_MASK, PPCBRLK,   0,              {RS}},
+@@ -7221,12 +7343,44 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"mtmcsrr0",  XSPR(31,467,570), XSPR_MASK, PPCRFMCI,  0,              {RS}},
+ {"mtmcsrr1",  XSPR(31,467,571), XSPR_MASK, PPCRFMCI,  0,              {RS}},
+ {"mtmcsr",    XSPR(31,467,572), XSPR_MASK, PPCRFMCI,  0,              {RS}},
++{"mtsier2",   XSPR(31,467,752), XSPR_MASK, POWER10,   0,              {RS}},
++{"mtsier3",   XSPR(31,467,753), XSPR_MASK, POWER10,   0,              {RS}},
++{"mtmmcr3",   XSPR(31,467,754), XSPR_MASK, POWER10,   0,              {RS}},
++{"mtummcr2",  XSPR(31,467,769), XSPR_MASK, POWER9,    0,              {RS}},
++{"mtmmcr2",   XSPR(31,467,769), XSPR_MASK, POWER9,    0,              {RS}},
++{"mtummcra",  XSPR(31,467,770), XSPR_MASK, POWER9,    0,              {RS}},
+ {"mtupmc1",   XSPR(31,467,771), XSPR_MASK, POWER9,    0,              {RS}},
+ {"mtupmc2",   XSPR(31,467,772), XSPR_MASK, POWER9,    0,              {RS}},
+ {"mtupmc3",   XSPR(31,467,773), XSPR_MASK, POWER9,    0,              {RS}},
+ {"mtupmc4",   XSPR(31,467,774), XSPR_MASK, POWER9,    0,              {RS}},
+ {"mtupmc5",   XSPR(31,467,775), XSPR_MASK, POWER9,    0,              {RS}},
+ {"mtupmc6",   XSPR(31,467,776), XSPR_MASK, POWER9,    0,              {RS}},
++{"mtummcr0",  XSPR(31,467,779), XSPR_MASK, POWER9,    0,              {RS}},
++{"mtsier",    XSPR(31,467,784), XSPR_MASK, POWER10,   0,              {RS}},
++{"mtmmcra",   XSPR(31,467,786), XSPR_MASK, POWER7,    0,              {RS}},
++{"mtpmc1",    XSPR(31,467,787), XSPR_MASK, POWER7,    0,              {RS}},
++{"mtpmc2",    XSPR(31,467,788), XSPR_MASK, POWER7,    0,              {RS}},
++{"mtpmc3",    XSPR(31,467,789), XSPR_MASK, POWER7,    0,              {RS}},
++{"mtpmc4",    XSPR(31,467,790), XSPR_MASK, POWER7,    0,              {RS}},
++{"mtpmc5",    XSPR(31,467,791), XSPR_MASK, POWER7,    0,              {RS}},
++{"mtpmc6",    XSPR(31,467,792), XSPR_MASK, POWER7,    0,              {RS}},
++{"mtmmcr0",   XSPR(31,467,795), XSPR_MASK, POWER7,    0,              {RS}},
++{"mtsiar",    XSPR(31,467,796), XSPR_MASK, POWER10,   0,              {RS}},
++{"mtsdar",    XSPR(31,467,797), XSPR_MASK, POWER10,   0,              {RS}},
++{"mtmmcr1",   XSPR(31,467,798), XSPR_MASK, POWER7,    0,              {RS}},
++{"mtbescrs",  XSPR(31,467,800), XSPR_MASK, POWER9,    0,              {RS}},
++{"mtbescrsu", XSPR(31,467,801), XSPR_MASK, POWER9,    0,              {RS}},
++{"mtbescrr",  XSPR(31,467,802), XSPR_MASK, POWER9,    0,              {RS}},
++{"mtbescrru", XSPR(31,467,803), XSPR_MASK, POWER9,    0,              {RS}},
++{"mtebbhr",   XSPR(31,467,804), XSPR_MASK, POWER9,    0,              {RS}},
++{"mtebbrr",   XSPR(31,467,805), XSPR_MASK, POWER9,    0,              {RS}},
++{"mtbescr",   XSPR(31,467,806), XSPR_MASK, POWER9,    0,              {RS}},
++{"mttar",     XSPR(31,467,815), XSPR_MASK, POWER9,    0,              {RS}},
++{"mtasdr",    XSPR(31,467,816), XSPR_MASK, POWER10,   0,              {RS}},
++{"mtpsscr",   XSPR(31,467,823), XSPR_MASK, POWER10,   0,              {RS}},
++{"mtic",      XSPR(31,467,848), XSPR_MASK, POWER8,    0,              {RS}},
++{"mtvtb",     XSPR(31,467,849), XSPR_MASK, POWER8,    0,              {RS}},
++{"mthpsscr",  XSPR(31,467,855), XSPR_MASK, POWER10,   0,              {RS}},
+ {"mtivndx",   XSPR(31,467,880), XSPR_MASK, TITAN,     0,              {RS}},
+ {"mtdvndx",   XSPR(31,467,881), XSPR_MASK, TITAN,     0,              {RS}},
+ {"mtivlim",   XSPR(31,467,882), XSPR_MASK, TITAN,     0,              {RS}},
+@@ -8301,7 +8455,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"xxgenpcvdm",        X(60,949),      XX1_MASK,    POWER10,   PPCVLE,         {XT6, VB, UIMM}},
+ {"xvxexpdp",  XX2VA(60,475,0),XX2_MASK,    PPCVSX3,   PPCVLE,         {XT6, XB6}},
+ {"xvxsigdp",  XX2VA(60,475,1),XX2_MASK,    PPCVSX3,   PPCVLE,         {XT6, XB6}},
+-{"xvtlsbb",   XX2VA(60,475,2),XX2BF_MASK,  POWER10,   PPCVLE,         {OBF, XB6}},
++{"xvtlsbb",   XX2VA(60,475,2),XX2BF_MASK,  POWER10,   PPCVLE,         {BF, XB6}},
+ {"xxbrh",     XX2VA(60,475,7),XX2_MASK,    PPCVSX3,   PPCVLE,         {XT6, XB6}},
+ {"xvxexpsp",  XX2VA(60,475,8),XX2_MASK,    PPCVSX3,   PPCVLE,         {XT6, XB6}},
+ {"xvxsigsp",  XX2VA(60,475,9),XX2_MASK,    PPCVSX3,   PPCVLE,         {XT6, XB6}},
diff --git a/patches/branch-version.diff b/patches/branch-version.diff
new file mode 100644 (file)
index 0000000..c2da3a3
--- /dev/null
@@ -0,0 +1,603 @@
+# DP: Don't bump the version when doing distro builds
+
+git diff 279745e5668d95e68c93762baa7ba60b5c02dada 2cb5c79dad39dd438fb0f7372ac04cf5aa2a7db7
+
+--- a/bfd/ChangeLog
++++ b/bfd/ChangeLog
+@@ -24,12 +24,6 @@
+ 2020-07-24  Nick Clifton  <nickc@redhat.com>
+-      * version.m4: Set to 2.35.0
+-      * development.sh (development): Set to true.
+-      * configure: Regenerate.
+-
+-2020-07-24  Nick Clifton  <nickc@redhat.com>
+-
+       2.35 Release:
+       * version.m4: Set to 2.35
+       * development.sh (development): Set to false.
+--- a/bfd/configure
++++ b/bfd/configure
+@@ -1,6 +1,6 @@
+ #! /bin/sh
+ # Guess values for system-dependent variables and create Makefiles.
+-# Generated by GNU Autoconf 2.69 for bfd 2.35.0.
++# Generated by GNU Autoconf 2.69 for bfd 2.35.
+ #
+ #
+ # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+@@ -587,8 +587,8 @@ MAKEFLAGS=
+ # Identity of this package.
+ PACKAGE_NAME='bfd'
+ PACKAGE_TARNAME='bfd'
+-PACKAGE_VERSION='2.35.0'
+-PACKAGE_STRING='bfd 2.35.0'
++PACKAGE_VERSION='2.35'
++PACKAGE_STRING='bfd 2.35'
+ PACKAGE_BUGREPORT=''
+ PACKAGE_URL=''
+@@ -1391,7 +1391,7 @@ if test "$ac_init_help" = "long"; then
+   # Omit some internal or obsolete options to make the list less imposing.
+   # This message is too long to be a string in the A/UX 3.1 sh.
+   cat <<_ACEOF
+-\`configure' configures bfd 2.35.0 to adapt to many kinds of systems.
++\`configure' configures bfd 2.35 to adapt to many kinds of systems.
+ Usage: $0 [OPTION]... [VAR=VALUE]...
+@@ -1462,7 +1462,7 @@ fi
+ if test -n "$ac_init_help"; then
+   case $ac_init_help in
+-     short | recursive ) echo "Configuration of bfd 2.35.0:";;
++     short | recursive ) echo "Configuration of bfd 2.35:";;
+    esac
+   cat <<\_ACEOF
+@@ -1589,7 +1589,7 @@ fi
+ test -n "$ac_init_help" && exit $ac_status
+ if $ac_init_version; then
+   cat <<\_ACEOF
+-bfd configure 2.35.0
++bfd configure 2.35
+ generated by GNU Autoconf 2.69
+ Copyright (C) 2012 Free Software Foundation, Inc.
+@@ -2237,7 +2237,7 @@ cat >config.log <<_ACEOF
+ This file contains any messages produced by compilers while
+ running configure, to aid debugging if configure makes a mistake.
+-It was created by bfd $as_me 2.35.0, which was
++It was created by bfd $as_me 2.35, which was
+ generated by GNU Autoconf 2.69.  Invocation command line was
+   $ $0 $@
+@@ -4187,7 +4187,7 @@ fi
+ # Define the identity of the package.
+  PACKAGE='bfd'
+- VERSION='2.35.0'
++ VERSION='2.35'
+ cat >>confdefs.h <<_ACEOF
+@@ -16974,7 +16974,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
+ # report actual input values of CONFIG_FILES etc. instead of their
+ # values after options handling.
+ ac_log="
+-This file was extended by bfd $as_me 2.35.0, which was
++This file was extended by bfd $as_me 2.35, which was
+ generated by GNU Autoconf 2.69.  Invocation command line was
+   CONFIG_FILES    = $CONFIG_FILES
+@@ -17040,7 +17040,7 @@ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ ac_cs_version="\\
+-bfd config.status 2.35.0
++bfd config.status 2.35
+ configured by $0, generated by GNU Autoconf 2.69,
+   with options \\"\$ac_cs_config\\"
+--- a/bfd/development.sh
++++ b/bfd/development.sh
+@@ -16,7 +16,7 @@
+ # along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ # Controls whether to enable development-mode features by default.
+-development=true
++development=false
+ # Indicate whether this is a release branch.
+ experimental=false
+--- a/bfd/version.m4
++++ b/bfd/version.m4
+@@ -1 +1 @@
+-m4_define([BFD_VERSION], [2.35.0])
++m4_define([BFD_VERSION], [2.35])
+--- a/binutils/ChangeLog
++++ b/binutils/ChangeLog
+@@ -4,10 +4,6 @@
+ 2020-07-24  Nick Clifton  <nickc@redhat.com>
+-      * configure: Regenerate.
+-
+-2020-07-24  Nick Clifton  <nickc@redhat.com>
+-
+       2.35 Release:
+       * configure: Regenerate.
+       * po/binutils.pot: Regenerate.
+--- a/binutils/configure
++++ b/binutils/configure
+@@ -1,6 +1,6 @@
+ #! /bin/sh
+ # Guess values for system-dependent variables and create Makefiles.
+-# Generated by GNU Autoconf 2.69 for binutils 2.35.0.
++# Generated by GNU Autoconf 2.69 for binutils 2.35.
+ #
+ #
+ # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+@@ -587,8 +587,8 @@ MAKEFLAGS=
+ # Identity of this package.
+ PACKAGE_NAME='binutils'
+ PACKAGE_TARNAME='binutils'
+-PACKAGE_VERSION='2.35.0'
+-PACKAGE_STRING='binutils 2.35.0'
++PACKAGE_VERSION='2.35'
++PACKAGE_STRING='binutils 2.35'
+ PACKAGE_BUGREPORT=''
+ PACKAGE_URL=''
+@@ -1378,7 +1378,7 @@ if test "$ac_init_help" = "long"; then
+   # Omit some internal or obsolete options to make the list less imposing.
+   # This message is too long to be a string in the A/UX 3.1 sh.
+   cat <<_ACEOF
+-\`configure' configures binutils 2.35.0 to adapt to many kinds of systems.
++\`configure' configures binutils 2.35 to adapt to many kinds of systems.
+ Usage: $0 [OPTION]... [VAR=VALUE]...
+@@ -1449,7 +1449,7 @@ fi
+ if test -n "$ac_init_help"; then
+   case $ac_init_help in
+-     short | recursive ) echo "Configuration of binutils 2.35.0:";;
++     short | recursive ) echo "Configuration of binutils 2.35:";;
+    esac
+   cat <<\_ACEOF
+@@ -1580,7 +1580,7 @@ fi
+ test -n "$ac_init_help" && exit $ac_status
+ if $ac_init_version; then
+   cat <<\_ACEOF
+-binutils configure 2.35.0
++binutils configure 2.35
+ generated by GNU Autoconf 2.69
+ Copyright (C) 2012 Free Software Foundation, Inc.
+@@ -2228,7 +2228,7 @@ cat >config.log <<_ACEOF
+ This file contains any messages produced by compilers while
+ running configure, to aid debugging if configure makes a mistake.
+-It was created by binutils $as_me 2.35.0, which was
++It was created by binutils $as_me 2.35, which was
+ generated by GNU Autoconf 2.69.  Invocation command line was
+   $ $0 $@
+@@ -4178,7 +4178,7 @@ fi
+ # Define the identity of the package.
+  PACKAGE='binutils'
+- VERSION='2.35.0'
++ VERSION='2.35'
+ cat >>confdefs.h <<_ACEOF
+@@ -15853,7 +15853,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
+ # report actual input values of CONFIG_FILES etc. instead of their
+ # values after options handling.
+ ac_log="
+-This file was extended by binutils $as_me 2.35.0, which was
++This file was extended by binutils $as_me 2.35, which was
+ generated by GNU Autoconf 2.69.  Invocation command line was
+   CONFIG_FILES    = $CONFIG_FILES
+@@ -15919,7 +15919,7 @@ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ ac_cs_version="\\
+-binutils config.status 2.35.0
++binutils config.status 2.35
+ configured by $0, generated by GNU Autoconf 2.69,
+   with options \\"\$ac_cs_config\\"
+--- a/gas/ChangeLog
++++ b/gas/ChangeLog
+@@ -49,10 +49,6 @@
+ 2020-07-24  Nick Clifton  <nickc@redhat.com>
+-      * configure: Regenerate.
+-
+-2020-07-24  Nick Clifton  <nickc@redhat.com>
+-
+       2.35 Release:
+       * configure: Regenerate.
+       * po/gas.pot: Regenerate.
+--- a/gas/configure
++++ b/gas/configure
+@@ -1,6 +1,6 @@
+ #! /bin/sh
+ # Guess values for system-dependent variables and create Makefiles.
+-# Generated by GNU Autoconf 2.69 for gas 2.35.0.
++# Generated by GNU Autoconf 2.69 for gas 2.35.
+ #
+ #
+ # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+@@ -587,8 +587,8 @@ MAKEFLAGS=
+ # Identity of this package.
+ PACKAGE_NAME='gas'
+ PACKAGE_TARNAME='gas'
+-PACKAGE_VERSION='2.35.0'
+-PACKAGE_STRING='gas 2.35.0'
++PACKAGE_VERSION='2.35'
++PACKAGE_STRING='gas 2.35'
+ PACKAGE_BUGREPORT=''
+ PACKAGE_URL=''
+@@ -1369,7 +1369,7 @@ if test "$ac_init_help" = "long"; then
+   # Omit some internal or obsolete options to make the list less imposing.
+   # This message is too long to be a string in the A/UX 3.1 sh.
+   cat <<_ACEOF
+-\`configure' configures gas 2.35.0 to adapt to many kinds of systems.
++\`configure' configures gas 2.35 to adapt to many kinds of systems.
+ Usage: $0 [OPTION]... [VAR=VALUE]...
+@@ -1440,7 +1440,7 @@ fi
+ if test -n "$ac_init_help"; then
+   case $ac_init_help in
+-     short | recursive ) echo "Configuration of gas 2.35.0:";;
++     short | recursive ) echo "Configuration of gas 2.35:";;
+    esac
+   cat <<\_ACEOF
+@@ -1576,7 +1576,7 @@ fi
+ test -n "$ac_init_help" && exit $ac_status
+ if $ac_init_version; then
+   cat <<\_ACEOF
+-gas configure 2.35.0
++gas configure 2.35
+ generated by GNU Autoconf 2.69
+ Copyright (C) 2012 Free Software Foundation, Inc.
+@@ -2041,7 +2041,7 @@ cat >config.log <<_ACEOF
+ This file contains any messages produced by compilers while
+ running configure, to aid debugging if configure makes a mistake.
+-It was created by gas $as_me 2.35.0, which was
++It was created by gas $as_me 2.35, which was
+ generated by GNU Autoconf 2.69.  Invocation command line was
+   $ $0 $@
+@@ -3988,7 +3988,7 @@ fi
+ # Define the identity of the package.
+  PACKAGE='gas'
+- VERSION='2.35.0'
++ VERSION='2.35'
+ cat >>confdefs.h <<_ACEOF
+@@ -15755,7 +15755,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
+ # report actual input values of CONFIG_FILES etc. instead of their
+ # values after options handling.
+ ac_log="
+-This file was extended by gas $as_me 2.35.0, which was
++This file was extended by gas $as_me 2.35, which was
+ generated by GNU Autoconf 2.69.  Invocation command line was
+   CONFIG_FILES    = $CONFIG_FILES
+@@ -15821,7 +15821,7 @@ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ ac_cs_version="\\
+-gas config.status 2.35.0
++gas config.status 2.35
+ configured by $0, generated by GNU Autoconf 2.69,
+   with options \\"\$ac_cs_config\\"
+--- a/gprof/ChangeLog
++++ b/gprof/ChangeLog
+@@ -1,9 +1,5 @@
+ 2020-07-24  Nick Clifton  <nickc@redhat.com>
+-      * configure: Regenerate.
+-
+-2020-07-24  Nick Clifton  <nickc@redhat.com>
+-
+       2.35 Release:
+       * configure: Regenerate.
+       * po/gprof.pot: Regenerate.
+--- a/gprof/configure
++++ b/gprof/configure
+@@ -1,6 +1,6 @@
+ #! /bin/sh
+ # Guess values for system-dependent variables and create Makefiles.
+-# Generated by GNU Autoconf 2.69 for gprof 2.35.0.
++# Generated by GNU Autoconf 2.69 for gprof 2.35.
+ #
+ #
+ # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+@@ -587,8 +587,8 @@ MAKEFLAGS=
+ # Identity of this package.
+ PACKAGE_NAME='gprof'
+ PACKAGE_TARNAME='gprof'
+-PACKAGE_VERSION='2.35.0'
+-PACKAGE_STRING='gprof 2.35.0'
++PACKAGE_VERSION='2.35'
++PACKAGE_STRING='gprof 2.35'
+ PACKAGE_BUGREPORT=''
+ PACKAGE_URL=''
+@@ -1337,7 +1337,7 @@ if test "$ac_init_help" = "long"; then
+   # Omit some internal or obsolete options to make the list less imposing.
+   # This message is too long to be a string in the A/UX 3.1 sh.
+   cat <<_ACEOF
+-\`configure' configures gprof 2.35.0 to adapt to many kinds of systems.
++\`configure' configures gprof 2.35 to adapt to many kinds of systems.
+ Usage: $0 [OPTION]... [VAR=VALUE]...
+@@ -1408,7 +1408,7 @@ fi
+ if test -n "$ac_init_help"; then
+   case $ac_init_help in
+-     short | recursive ) echo "Configuration of gprof 2.35.0:";;
++     short | recursive ) echo "Configuration of gprof 2.35:";;
+    esac
+   cat <<\_ACEOF
+@@ -1519,7 +1519,7 @@ fi
+ test -n "$ac_init_help" && exit $ac_status
+ if $ac_init_version; then
+   cat <<\_ACEOF
+-gprof configure 2.35.0
++gprof configure 2.35
+ generated by GNU Autoconf 2.69
+ Copyright (C) 2012 Free Software Foundation, Inc.
+@@ -1884,7 +1884,7 @@ cat >config.log <<_ACEOF
+ This file contains any messages produced by compilers while
+ running configure, to aid debugging if configure makes a mistake.
+-It was created by gprof $as_me 2.35.0, which was
++It was created by gprof $as_me 2.35, which was
+ generated by GNU Autoconf 2.69.  Invocation command line was
+   $ $0 $@
+@@ -3831,7 +3831,7 @@ fi
+ # Define the identity of the package.
+  PACKAGE='gprof'
+- VERSION='2.35.0'
++ VERSION='2.35'
+ cat >>confdefs.h <<_ACEOF
+@@ -13086,7 +13086,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
+ # report actual input values of CONFIG_FILES etc. instead of their
+ # values after options handling.
+ ac_log="
+-This file was extended by gprof $as_me 2.35.0, which was
++This file was extended by gprof $as_me 2.35, which was
+ generated by GNU Autoconf 2.69.  Invocation command line was
+   CONFIG_FILES    = $CONFIG_FILES
+@@ -13152,7 +13152,7 @@ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ ac_cs_version="\\
+-gprof config.status 2.35.0
++gprof config.status 2.35
+ configured by $0, generated by GNU Autoconf 2.69,
+   with options \\"\$ac_cs_config\\"
+--- a/ld/ChangeLog
++++ b/ld/ChangeLog
+@@ -34,10 +34,6 @@
+ 2020-07-24  Nick Clifton  <nickc@redhat.com>
+-      * configure: Regenerate.
+-
+-2020-07-24  Nick Clifton  <nickc@redhat.com>
+-
+       2.35 Release:
+       * configure: Regenerate.
+       * po/ld.pot: Regenerate.
+--- a/ld/configure
++++ b/ld/configure
+@@ -1,6 +1,6 @@
+ #! /bin/sh
+ # Guess values for system-dependent variables and create Makefiles.
+-# Generated by GNU Autoconf 2.69 for ld 2.35.0.
++# Generated by GNU Autoconf 2.69 for ld 2.35.
+ #
+ #
+ # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+@@ -587,8 +587,8 @@ MAKEFLAGS=
+ # Identity of this package.
+ PACKAGE_NAME='ld'
+ PACKAGE_TARNAME='ld'
+-PACKAGE_VERSION='2.35.0'
+-PACKAGE_STRING='ld 2.35.0'
++PACKAGE_VERSION='2.35'
++PACKAGE_STRING='ld 2.35'
+ PACKAGE_BUGREPORT=''
+ PACKAGE_URL=''
+@@ -1396,7 +1396,7 @@ if test "$ac_init_help" = "long"; then
+   # Omit some internal or obsolete options to make the list less imposing.
+   # This message is too long to be a string in the A/UX 3.1 sh.
+   cat <<_ACEOF
+-\`configure' configures ld 2.35.0 to adapt to many kinds of systems.
++\`configure' configures ld 2.35 to adapt to many kinds of systems.
+ Usage: $0 [OPTION]... [VAR=VALUE]...
+@@ -1467,7 +1467,7 @@ fi
+ if test -n "$ac_init_help"; then
+   case $ac_init_help in
+-     short | recursive ) echo "Configuration of ld 2.35.0:";;
++     short | recursive ) echo "Configuration of ld 2.35:";;
+    esac
+   cat <<\_ACEOF
+@@ -1606,7 +1606,7 @@ fi
+ test -n "$ac_init_help" && exit $ac_status
+ if $ac_init_version; then
+   cat <<\_ACEOF
+-ld configure 2.35.0
++ld configure 2.35
+ generated by GNU Autoconf 2.69
+ Copyright (C) 2012 Free Software Foundation, Inc.
+@@ -2321,7 +2321,7 @@ cat >config.log <<_ACEOF
+ This file contains any messages produced by compilers while
+ running configure, to aid debugging if configure makes a mistake.
+-It was created by ld $as_me 2.35.0, which was
++It was created by ld $as_me 2.35, which was
+ generated by GNU Autoconf 2.69.  Invocation command line was
+   $ $0 $@
+@@ -4272,7 +4272,7 @@ fi
+ # Define the identity of the package.
+  PACKAGE='ld'
+- VERSION='2.35.0'
++ VERSION='2.35'
+ cat >>confdefs.h <<_ACEOF
+@@ -18325,7 +18325,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
+ # report actual input values of CONFIG_FILES etc. instead of their
+ # values after options handling.
+ ac_log="
+-This file was extended by ld $as_me 2.35.0, which was
++This file was extended by ld $as_me 2.35, which was
+ generated by GNU Autoconf 2.69.  Invocation command line was
+   CONFIG_FILES    = $CONFIG_FILES
+@@ -18391,7 +18391,7 @@ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ ac_cs_version="\\
+-ld config.status 2.35.0
++ld config.status 2.35
+ configured by $0, generated by GNU Autoconf 2.69,
+   with options \\"\$ac_cs_config\\"
+--- a/opcodes/ChangeLog
++++ b/opcodes/ChangeLog
+@@ -20,10 +20,6 @@
+ 2020-07-24  Nick Clifton  <nickc@redhat.com>
+-      * configure: Regenerate.
+-
+-2020-07-24  Nick Clifton  <nickc@redhat.com>
+-
+       2.35 Release:
+       * configure: Regenerate.
+       * po/opcodes.pot: Regenerate.
+--- a/opcodes/configure
++++ b/opcodes/configure
+@@ -1,6 +1,6 @@
+ #! /bin/sh
+ # Guess values for system-dependent variables and create Makefiles.
+-# Generated by GNU Autoconf 2.69 for opcodes 2.35.0.
++# Generated by GNU Autoconf 2.69 for opcodes 2.35.
+ #
+ #
+ # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+@@ -587,8 +587,8 @@ MAKEFLAGS=
+ # Identity of this package.
+ PACKAGE_NAME='opcodes'
+ PACKAGE_TARNAME='opcodes'
+-PACKAGE_VERSION='2.35.0'
+-PACKAGE_STRING='opcodes 2.35.0'
++PACKAGE_VERSION='2.35'
++PACKAGE_STRING='opcodes 2.35'
+ PACKAGE_BUGREPORT=''
+ PACKAGE_URL=''
+@@ -1356,7 +1356,7 @@ if test "$ac_init_help" = "long"; then
+   # Omit some internal or obsolete options to make the list less imposing.
+   # This message is too long to be a string in the A/UX 3.1 sh.
+   cat <<_ACEOF
+-\`configure' configures opcodes 2.35.0 to adapt to many kinds of systems.
++\`configure' configures opcodes 2.35 to adapt to many kinds of systems.
+ Usage: $0 [OPTION]... [VAR=VALUE]...
+@@ -1427,7 +1427,7 @@ fi
+ if test -n "$ac_init_help"; then
+   case $ac_init_help in
+-     short | recursive ) echo "Configuration of opcodes 2.35.0:";;
++     short | recursive ) echo "Configuration of opcodes 2.35:";;
+    esac
+   cat <<\_ACEOF
+@@ -1539,7 +1539,7 @@ fi
+ test -n "$ac_init_help" && exit $ac_status
+ if $ac_init_version; then
+   cat <<\_ACEOF
+-opcodes configure 2.35.0
++opcodes configure 2.35
+ generated by GNU Autoconf 2.69
+ Copyright (C) 2012 Free Software Foundation, Inc.
+@@ -1950,7 +1950,7 @@ cat >config.log <<_ACEOF
+ This file contains any messages produced by compilers while
+ running configure, to aid debugging if configure makes a mistake.
+-It was created by opcodes $as_me 2.35.0, which was
++It was created by opcodes $as_me 2.35, which was
+ generated by GNU Autoconf 2.69.  Invocation command line was
+   $ $0 $@
+@@ -3897,7 +3897,7 @@ fi
+ # Define the identity of the package.
+  PACKAGE='opcodes'
+- VERSION='2.35.0'
++ VERSION='2.35'
+ cat >>confdefs.h <<_ACEOF
+@@ -13533,7 +13533,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
+ # report actual input values of CONFIG_FILES etc. instead of their
+ # values after options handling.
+ ac_log="
+-This file was extended by opcodes $as_me 2.35.0, which was
++This file was extended by opcodes $as_me 2.35, which was
+ generated by GNU Autoconf 2.69.  Invocation command line was
+   CONFIG_FILES    = $CONFIG_FILES
+@@ -13599,7 +13599,7 @@ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ ac_cs_version="\\
+-opcodes config.status 2.35.0
++opcodes config.status 2.35
+ configured by $0, generated by GNU Autoconf 2.69,
+   with options \\"\$ac_cs_config\\"
diff --git a/patches/gold-mips.diff b/patches/gold-mips.diff
new file mode 100644 (file)
index 0000000..291a2aa
--- /dev/null
@@ -0,0 +1,39 @@
+# DP: Fix gold on mips64 targets.
+
+gold/
+
+2016-08-09  Aurelien Jarno  <aurelien@aurel32.net>
+
+       * configure.tgt: Add mips64el*-*-*|mips64le*-*-* and mips64*-*-*.
+
+--- a/gold/configure.tgt
++++ b/gold/configure.tgt
+@@ -153,6 +153,13 @@ aarch64*-*)
+  targ_big_endian=false
+  targ_extra_big_endian=true
+  ;;
++mips*64*el*-*-*|mips*64*le*-*-*)
++ targ_obj=mips
++ targ_machine=EM_MIPS_RS3_LE
++ targ_size=64
++ targ_big_endian=false
++ targ_extra_big_endian=true
++ ;;
+ mips*el*-*-*|mips*le*-*-*)
+  targ_obj=mips
+  targ_machine=EM_MIPS_RS3_LE
+@@ -160,6 +167,13 @@ mips*el*-*-*|mips*le*-*-*)
+  targ_big_endian=false
+  targ_extra_big_endian=true
+  ;;
++mips*64*-*-*)
++ targ_obj=mips
++ targ_machine=EM_MIPS
++ targ_size=64
++ targ_big_endian=true
++ targ_extra_big_endian=false
++ ;;
+ mips*-*-*)
+  targ_obj=mips
+  targ_machine=EM_MIPS
diff --git a/patches/gold-no-keep-files-mapped.diff b/patches/gold-no-keep-files-mapped.diff
new file mode 100644 (file)
index 0000000..8d6fab8
--- /dev/null
@@ -0,0 +1,14 @@
+# DP: gold on 32bit archs: Release mapped files after each pass.
+
+--- a/gold/options.h
++++ b/gold/options.h
+@@ -1003,7 +1003,8 @@ class General_options
+   // k
+-  DEFINE_bool(keep_files_mapped, options::TWO_DASHES, '\0', true,
++  DEFINE_bool(keep_files_mapped, options::TWO_DASHES, '\0',
++            sizeof(void*) >= 8,
+             N_("Keep files mapped across passes"),
+             N_("Release mapped files after each pass"));
diff --git a/patches/gprof-build.diff b/patches/gprof-build.diff
new file mode 100644 (file)
index 0000000..82377ee
--- /dev/null
@@ -0,0 +1,16 @@
+# DP: Fix gprof build error.
+
+Index: b/gprof/gconfig.in
+===================================================================
+--- a/gprof/gconfig.in
++++ b/gprof/gconfig.in
+@@ -96,9 +96,6 @@
+ #endif
+-/* Version number of package */
+-#undef VERSION
+-
+ /* Enable large inode numbers on Mac OS X 10.5.  */
+ #ifndef _DARWIN_USE_64_BIT_INODE
+ # define _DARWIN_USE_64_BIT_INODE 1
diff --git a/patches/infinity-notes.diff b/patches/infinity-notes.diff
new file mode 100644 (file)
index 0000000..9854201
--- /dev/null
@@ -0,0 +1,183 @@
+# git clone https://gitlab.com/gbenson/binutils-gdb.git gdb/src
+# git diff 1f1c02597cc199227226251a2ea51fe5f44b4d6d ec7642f5d7ba9bdbc35f08f3ffa3c360bd4618d0
+
+--- a/include/elf/common.h
++++ b/include/elf/common.h
+@@ -717,6 +717,7 @@
+ #define NT_GNU_BUILD_ID               3       /* Generated by ld --build-id.  */
+ #define NT_GNU_GOLD_VERSION   4       /* Generated by gold.  */
+ #define NT_GNU_PROPERTY_TYPE_0  5     /* Generated by gcc.  */
++#define NT_GNU_INFINITY               8995    /* Generated by i8c.  */
+ #define NT_GNU_BUILD_ATTRIBUTE_OPEN   0x100
+ #define NT_GNU_BUILD_ATTRIBUTE_FUNC   0x101
+--- a/binutils/readelf.c
++++ b/binutils/readelf.c
+@@ -17500,6 +17500,8 @@ get_gnu_elf_note_type (unsigned e_type)
+       return _("NT_GNU_BUILD_ATTRIBUTE_OPEN");
+     case NT_GNU_BUILD_ATTRIBUTE_FUNC:
+       return _("NT_GNU_BUILD_ATTRIBUTE_FUNC");
++    case NT_GNU_INFINITY:
++      return _("NT_GNU_INFINITY (Infinity function)");
+     default:
+       {
+       static char buff[64];
+@@ -17990,6 +17992,133 @@ next:
+   printf ("\n");
+ }
++#define I8_CHUNK_SIGNATURE    1
++#define I8_CHUNK_STRINGS      4
++
++typedef enum
++{
++  I8_NOTE_OK,
++  I8_NOTE_CORRUPT,
++  I8_NOTE_UNHANDLED,
++}
++i8_err_e;
++
++static i8_err_e
++infinity_get_string (const char **result,
++                   unsigned char **ptr, unsigned char *limit,
++                   unsigned char *table_start,
++                   unsigned char *table_limit)
++{
++  dwarf_vma offset;
++  unsigned int length;
++  const char *c;
++
++  /* Read the offset.  */
++  if (*ptr > limit)
++    return I8_NOTE_CORRUPT;
++
++  offset = read_uleb128 (*ptr, &length, limit);
++  *ptr += length;
++  if (*ptr > limit)
++    return I8_NOTE_CORRUPT;
++
++  /* Get the string.  */
++  *result = (const char *) (table_start + offset);
++
++  /* Check the result.  */
++  for (c = *result; c < (const char *) table_limit; c++)
++    {
++      if (*c == '\0')
++      return I8_NOTE_OK;
++
++      if (*c < ' ' || *c > '~')
++      return I8_NOTE_UNHANDLED;
++    }
++
++  return I8_NOTE_CORRUPT;
++}
++
++static i8_err_e
++print_infinity_note (Elf_Internal_Note *pnote)
++{
++  unsigned char *ptr = (unsigned char *) pnote->descdata;
++  unsigned char *limit = ptr + pnote->descsz;
++  unsigned char *sig_start = NULL;
++  unsigned char *str_start = NULL;
++  unsigned char *sig_limit, *str_limit;
++  const char *provider, *name, *ptypes, *rtypes;
++  i8_err_e status;
++
++  /* Locate the info and string table chunks.  */
++  while (ptr < limit)
++    {
++      dwarf_vma type_id, version, size;
++      unsigned int length;
++
++      type_id = read_uleb128 (ptr, &length, limit);
++      ptr += length;
++      if (ptr >= limit)
++      return I8_NOTE_CORRUPT;
++
++      version = read_uleb128 (ptr, &length, limit);
++      ptr += length;
++      if (ptr >= limit)
++      return I8_NOTE_CORRUPT;
++
++      size = read_uleb128 (ptr, &length, limit);
++      ptr += length;
++      if (ptr + size > limit)
++      return I8_NOTE_CORRUPT;
++
++      switch (type_id)
++      {
++      case I8_CHUNK_SIGNATURE:
++        if (sig_start != NULL || (version != 1 && version != 2))
++          return I8_NOTE_UNHANDLED;
++
++        sig_start = ptr;
++        sig_limit = ptr + size;
++        break;
++
++      case I8_CHUNK_STRINGS:
++        if (str_start != NULL || version != 1)
++          return I8_NOTE_UNHANDLED;
++
++        str_start = ptr;
++        str_limit = ptr + size;
++        break;
++      }
++
++      ptr += size;
++    }
++  if (sig_start == NULL || str_start == NULL)
++    return I8_NOTE_UNHANDLED;
++
++  ptr = sig_start;
++  status = infinity_get_string (&provider,
++                              &ptr, sig_limit,
++                              str_start, str_limit);
++  if (status != I8_NOTE_OK)
++    return status;
++  status = infinity_get_string (&name, &ptr, sig_limit,
++                              str_start, str_limit);
++  if (status != I8_NOTE_OK)
++    return status;
++  status = infinity_get_string (&ptypes, &ptr, sig_limit,
++                              str_start, str_limit);
++  if (status != I8_NOTE_OK)
++    return status;
++  status = infinity_get_string (&rtypes, &ptr, sig_limit,
++                              str_start, str_limit);
++  if (status != I8_NOTE_OK)
++    return status;
++
++  printf (_("    Signature: %s::%s(%s)%s\n"),
++        provider, name, ptypes, rtypes);
++
++  return I8_NOTE_OK;
++}
++
+ static bfd_boolean
+ print_gnu_note (Filedata * filedata, Elf_Internal_Note *pnote)
+ {
+@@ -18107,6 +18236,24 @@ print_gnu_note (Filedata * filedata, Elf
+       printf ("\n");
+       }
+       break;
++
++    case NT_GNU_INFINITY:
++      {
++      switch (print_infinity_note (pnote))
++        {
++        case I8_NOTE_OK:
++          break;
++
++        case I8_NOTE_CORRUPT:
++          printf (_("    <corrupt note>\n"));
++          break;
++
++        case I8_NOTE_UNHANDLED:
++          printf (_("    <unhandled note>\n"));
++          break;
++        }
++      break;
++      }
+     }
+   return TRUE;
diff --git a/patches/libctf-soname.diff b/patches/libctf-soname.diff
new file mode 100644 (file)
index 0000000..a4b2a78
--- /dev/null
@@ -0,0 +1,446 @@
+--- a/libctf/Makefile.am
++++ b/libctf/Makefile.am
+@@ -32,23 +32,24 @@ AM_CPPFLAGS = -D_GNU_SOURCE -I$(srcdir)
+ AM_CFLAGS = -std=gnu99 @ac_libctf_warn_cflags@ @warn@ @c_warn@ @WARN_PEDANTIC@ @WERROR@ $(ZLIBINC)
+ if INSTALL_LIBBFD
+-lib_LTLIBRARIES = libctf.la libctf-nobfd.la
++lib_LTLIBRARIES = libctf@CTF_SOVER_EXT@.la libctf-nobfd@CTF_SOVER_EXT@.la
+ include_HEADERS = $(INCDIR)/ctf.h $(INCDIR)/ctf-api.h
+ else
+ include_HEADERS =
+-noinst_LTLIBRARIES = libctf.la libctf-nobfd.la
++noinst_LTLIBRARIES = libctf@CTF_SOVER_EXT@.la libctf-nobfd@CTF_SOVER_EXT@.la
+ endif
+-libctf_nobfd_la_LIBADD = @SHARED_LIBADD@ $(ZLIB)
+-libctf_nobfd_la_LDFLAGS = -version-info 0:0:0 @SHARED_LDFLAGS@ @VERSION_FLAGS@
+-libctf_nobfd_la_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c ctf-decl.c ctf-error.c \
++COMMON_LIB_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c ctf-decl.c ctf-error.c \
+                         ctf-hash.c ctf-labels.c ctf-link.c ctf-lookup.c ctf-open.c \
+                         ctf-string.c ctf-subr.c ctf-types.c ctf-util.c
+ if NEED_CTF_QSORT_R
+-libctf_nobfd_la_SOURCES += ctf-qsort_r.c
++COMMON_LIB_SOURCES += ctf-qsort_r.c
+ endif
++libctf_nobfd@CTF_SOVER_EXT@_la_LIBADD = @SHARED_LIBADD@ $(ZLIB)
++libctf_nobfd@CTF_SOVER_EXT@_la_LDFLAGS = -version-info 0:0:0 @SHARED_LDFLAGS@ @VERSION_FLAGS@
++libctf_nobfd@CTF_SOVER_EXT@_la_SOURCES = $(COMMON_LIB_SOURCES)
+-libctf_la_LIBADD = @BFD_LIBADD@ $(libctf_nobfd_la_LIBADD)
+-libctf_la_DEPENDENCIES = @BFD_DEPENDENCIES@
+-libctf_la_LDFLAGS = $(libctf_nobfd_la_LDFLAGS)
+-libctf_la_SOURCES = $(libctf_nobfd_la_SOURCES) ctf-open-bfd.c
++libctf@CTF_SOVER_EXT@_la_LIBADD = @BFD_LIBADD@ $(libctf_nobfd@CTF_SOVER_EXT@_la_LIBADD)
++libctf@CTF_SOVER_EXT@_la_DEPENDENCIES = @BFD_DEPENDENCIES@
++libctf@CTF_SOVER_EXT@_la_LDFLAGS = $(libctf_nobfd@CTF_SOVER_EXT@_la_LDFLAGS)
++libctf@CTF_SOVER_EXT@_la_SOURCES = $(COMMON_LIB_SOURCES) ctf-open-bfd.c
+--- a/libctf/Makefile.in
++++ b/libctf/Makefile.in
+@@ -162,43 +162,44 @@ am__uninstall_files_from_dir = { \
+ am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
+ LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
+ am__DEPENDENCIES_1 =
+-libctf_nobfd_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+-am__libctf_nobfd_la_SOURCES_DIST = ctf-archive.c ctf-dump.c \
+-      ctf-create.c ctf-decl.c ctf-error.c ctf-hash.c ctf-labels.c \
+-      ctf-link.c ctf-lookup.c ctf-open.c ctf-string.c ctf-subr.c \
+-      ctf-types.c ctf-util.c ctf-qsort_r.c
++libctf_nobfd@CTF_SOVER_EXT@_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
++am__libctf_nobfd@CTF_SOVER_EXT@_la_SOURCES_DIST = ctf-archive.c \
++      ctf-dump.c ctf-create.c ctf-decl.c ctf-error.c ctf-hash.c \
++      ctf-labels.c ctf-link.c ctf-lookup.c ctf-open.c ctf-string.c \
++      ctf-subr.c ctf-types.c ctf-util.c ctf-qsort_r.c
+ @NEED_CTF_QSORT_R_TRUE@am__objects_1 = ctf-qsort_r.lo
+-am_libctf_nobfd_la_OBJECTS = ctf-archive.lo ctf-dump.lo ctf-create.lo \
+-      ctf-decl.lo ctf-error.lo ctf-hash.lo ctf-labels.lo ctf-link.lo \
++am__objects_2 = ctf-archive.lo ctf-dump.lo ctf-create.lo ctf-decl.lo \
++      ctf-error.lo ctf-hash.lo ctf-labels.lo ctf-link.lo \
+       ctf-lookup.lo ctf-open.lo ctf-string.lo ctf-subr.lo \
+       ctf-types.lo ctf-util.lo $(am__objects_1)
+-libctf_nobfd_la_OBJECTS = $(am_libctf_nobfd_la_OBJECTS)
++am_libctf_nobfd@CTF_SOVER_EXT@_la_OBJECTS = $(am__objects_2)
++libctf_nobfd@CTF_SOVER_EXT@_la_OBJECTS =  \
++      $(am_libctf_nobfd@CTF_SOVER_EXT@_la_OBJECTS)
+ AM_V_lt = $(am__v_lt_@AM_V@)
+ am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+ am__v_lt_0 = --silent
+ am__v_lt_1 = 
+-libctf_nobfd_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
++libctf_nobfd@CTF_SOVER_EXT@_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+       $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+-      $(AM_CFLAGS) $(CFLAGS) $(libctf_nobfd_la_LDFLAGS) $(LDFLAGS) \
+-      -o $@
+-@INSTALL_LIBBFD_FALSE@am_libctf_nobfd_la_rpath =
+-@INSTALL_LIBBFD_TRUE@am_libctf_nobfd_la_rpath = -rpath $(libdir)
+-am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
+-am__libctf_la_SOURCES_DIST = ctf-archive.c ctf-dump.c ctf-create.c \
+-      ctf-decl.c ctf-error.c ctf-hash.c ctf-labels.c ctf-link.c \
+-      ctf-lookup.c ctf-open.c ctf-string.c ctf-subr.c ctf-types.c \
+-      ctf-util.c ctf-qsort_r.c ctf-open-bfd.c
+-am__objects_2 = ctf-archive.lo ctf-dump.lo ctf-create.lo ctf-decl.lo \
+-      ctf-error.lo ctf-hash.lo ctf-labels.lo ctf-link.lo \
+-      ctf-lookup.lo ctf-open.lo ctf-string.lo ctf-subr.lo \
+-      ctf-types.lo ctf-util.lo $(am__objects_1)
+-am_libctf_la_OBJECTS = $(am__objects_2) ctf-open-bfd.lo
+-libctf_la_OBJECTS = $(am_libctf_la_OBJECTS)
+-libctf_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+-      $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+-      $(libctf_la_LDFLAGS) $(LDFLAGS) -o $@
+-@INSTALL_LIBBFD_FALSE@am_libctf_la_rpath =
+-@INSTALL_LIBBFD_TRUE@am_libctf_la_rpath = -rpath $(libdir)
++      $(AM_CFLAGS) $(CFLAGS) \
++      $(libctf_nobfd@CTF_SOVER_EXT@_la_LDFLAGS) $(LDFLAGS) -o $@
++@INSTALL_LIBBFD_FALSE@am_libctf_nobfd@CTF_SOVER_EXT@_la_rpath =
++@INSTALL_LIBBFD_TRUE@am_libctf_nobfd@CTF_SOVER_EXT@_la_rpath = -rpath \
++@INSTALL_LIBBFD_TRUE@ $(libdir)
++am__libctf@CTF_SOVER_EXT@_la_SOURCES_DIST = ctf-archive.c ctf-dump.c \
++      ctf-create.c ctf-decl.c ctf-error.c ctf-hash.c ctf-labels.c \
++      ctf-link.c ctf-lookup.c ctf-open.c ctf-string.c ctf-subr.c \
++      ctf-types.c ctf-util.c ctf-qsort_r.c ctf-open-bfd.c
++am_libctf@CTF_SOVER_EXT@_la_OBJECTS = $(am__objects_2) ctf-open-bfd.lo
++libctf@CTF_SOVER_EXT@_la_OBJECTS =  \
++      $(am_libctf@CTF_SOVER_EXT@_la_OBJECTS)
++libctf@CTF_SOVER_EXT@_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
++      $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
++      $(AM_CFLAGS) $(CFLAGS) $(libctf@CTF_SOVER_EXT@_la_LDFLAGS) \
++      $(LDFLAGS) -o $@
++@INSTALL_LIBBFD_FALSE@am_libctf@CTF_SOVER_EXT@_la_rpath =
++@INSTALL_LIBBFD_TRUE@am_libctf@CTF_SOVER_EXT@_la_rpath = -rpath \
++@INSTALL_LIBBFD_TRUE@ $(libdir)
+ AM_V_P = $(am__v_P_@AM_V@)
+ am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+ am__v_P_0 = false
+@@ -233,9 +234,10 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+ am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+ am__v_CCLD_0 = @echo "  CCLD    " $@;
+ am__v_CCLD_1 = 
+-SOURCES = $(libctf_nobfd_la_SOURCES) $(libctf_la_SOURCES)
+-DIST_SOURCES = $(am__libctf_nobfd_la_SOURCES_DIST) \
+-      $(am__libctf_la_SOURCES_DIST)
++SOURCES = $(libctf_nobfd@CTF_SOVER_EXT@_la_SOURCES) \
++      $(libctf@CTF_SOVER_EXT@_la_SOURCES)
++DIST_SOURCES = $(am__libctf_nobfd@CTF_SOVER_EXT@_la_SOURCES_DIST) \
++      $(am__libctf@CTF_SOVER_EXT@_la_SOURCES_DIST)
+ am__can_run_installinfo = \
+   case $$AM_UPDATE_INFO_DIR in \
+     n|no|NO) false;; \
+@@ -305,6 +307,7 @@ CCDEPMODE = @CCDEPMODE@
+ CFLAGS = @CFLAGS@
+ CPP = @CPP@
+ CPPFLAGS = @CPPFLAGS@
++CTF_SOVER_EXT = @CTF_SOVER_EXT@
+ CYGPATH_W = @CYGPATH_W@
+ DATADIRNAME = @DATADIRNAME@
+ DEFS = @DEFS@
+@@ -438,20 +441,21 @@ ZLIBINC = @zlibinc@
+ INCDIR = $(srcdir)/../include
+ AM_CPPFLAGS = -D_GNU_SOURCE -I$(srcdir) -I$(srcdir)/../include -I$(srcdir)/../bfd -I../bfd
+ AM_CFLAGS = -std=gnu99 @ac_libctf_warn_cflags@ @warn@ @c_warn@ @WARN_PEDANTIC@ @WERROR@ $(ZLIBINC)
+-@INSTALL_LIBBFD_TRUE@lib_LTLIBRARIES = libctf.la libctf-nobfd.la
++@INSTALL_LIBBFD_TRUE@lib_LTLIBRARIES = libctf@CTF_SOVER_EXT@.la libctf-nobfd@CTF_SOVER_EXT@.la
+ @INSTALL_LIBBFD_FALSE@include_HEADERS = 
+ @INSTALL_LIBBFD_TRUE@include_HEADERS = $(INCDIR)/ctf.h $(INCDIR)/ctf-api.h
+-@INSTALL_LIBBFD_FALSE@noinst_LTLIBRARIES = libctf.la libctf-nobfd.la
+-libctf_nobfd_la_LIBADD = @SHARED_LIBADD@ $(ZLIB)
+-libctf_nobfd_la_LDFLAGS = -version-info 0:0:0 @SHARED_LDFLAGS@ @VERSION_FLAGS@
+-libctf_nobfd_la_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c \
+-      ctf-decl.c ctf-error.c ctf-hash.c ctf-labels.c ctf-link.c \
+-      ctf-lookup.c ctf-open.c ctf-string.c ctf-subr.c ctf-types.c \
+-      ctf-util.c $(am__append_1)
+-libctf_la_LIBADD = @BFD_LIBADD@ $(libctf_nobfd_la_LIBADD)
+-libctf_la_DEPENDENCIES = @BFD_DEPENDENCIES@
+-libctf_la_LDFLAGS = $(libctf_nobfd_la_LDFLAGS)
+-libctf_la_SOURCES = $(libctf_nobfd_la_SOURCES) ctf-open-bfd.c
++@INSTALL_LIBBFD_FALSE@noinst_LTLIBRARIES = libctf@CTF_SOVER_EXT@.la libctf-nobfd@CTF_SOVER_EXT@.la
++COMMON_LIB_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c ctf-decl.c \
++      ctf-error.c ctf-hash.c ctf-labels.c ctf-link.c ctf-lookup.c \
++      ctf-open.c ctf-string.c ctf-subr.c ctf-types.c ctf-util.c \
++      $(am__append_1)
++libctf_nobfd@CTF_SOVER_EXT@_la_LIBADD = @SHARED_LIBADD@ $(ZLIB)
++libctf_nobfd@CTF_SOVER_EXT@_la_LDFLAGS = -version-info 0:0:0 @SHARED_LDFLAGS@ @VERSION_FLAGS@
++libctf_nobfd@CTF_SOVER_EXT@_la_SOURCES = $(COMMON_LIB_SOURCES)
++libctf@CTF_SOVER_EXT@_la_LIBADD = @BFD_LIBADD@ $(libctf_nobfd@CTF_SOVER_EXT@_la_LIBADD)
++libctf@CTF_SOVER_EXT@_la_DEPENDENCIES = @BFD_DEPENDENCIES@
++libctf@CTF_SOVER_EXT@_la_LDFLAGS = $(libctf_nobfd@CTF_SOVER_EXT@_la_LDFLAGS)
++libctf@CTF_SOVER_EXT@_la_SOURCES = $(COMMON_LIB_SOURCES) ctf-open-bfd.c
+ all: config.h
+       $(MAKE) $(AM_MAKEFLAGS) all-am
+@@ -552,11 +556,11 @@ clean-noinstLTLIBRARIES:
+         rm -f $${locs}; \
+       }
+-libctf-nobfd.la: $(libctf_nobfd_la_OBJECTS) $(libctf_nobfd_la_DEPENDENCIES) $(EXTRA_libctf_nobfd_la_DEPENDENCIES) 
+-      $(AM_V_CCLD)$(libctf_nobfd_la_LINK) $(am_libctf_nobfd_la_rpath) $(libctf_nobfd_la_OBJECTS) $(libctf_nobfd_la_LIBADD) $(LIBS)
++libctf-nobfd@CTF_SOVER_EXT@.la: $(libctf_nobfd@CTF_SOVER_EXT@_la_OBJECTS) $(libctf_nobfd@CTF_SOVER_EXT@_la_DEPENDENCIES) $(EXTRA_libctf_nobfd@CTF_SOVER_EXT@_la_DEPENDENCIES) 
++      $(AM_V_CCLD)$(libctf_nobfd@CTF_SOVER_EXT@_la_LINK) $(am_libctf_nobfd@CTF_SOVER_EXT@_la_rpath) $(libctf_nobfd@CTF_SOVER_EXT@_la_OBJECTS) $(libctf_nobfd@CTF_SOVER_EXT@_la_LIBADD) $(LIBS)
+-libctf.la: $(libctf_la_OBJECTS) $(libctf_la_DEPENDENCIES) $(EXTRA_libctf_la_DEPENDENCIES) 
+-      $(AM_V_CCLD)$(libctf_la_LINK) $(am_libctf_la_rpath) $(libctf_la_OBJECTS) $(libctf_la_LIBADD) $(LIBS)
++libctf@CTF_SOVER_EXT@.la: $(libctf@CTF_SOVER_EXT@_la_OBJECTS) $(libctf@CTF_SOVER_EXT@_la_DEPENDENCIES) $(EXTRA_libctf@CTF_SOVER_EXT@_la_DEPENDENCIES) 
++      $(AM_V_CCLD)$(libctf@CTF_SOVER_EXT@_la_LINK) $(am_libctf@CTF_SOVER_EXT@_la_rpath) $(libctf@CTF_SOVER_EXT@_la_OBJECTS) $(libctf@CTF_SOVER_EXT@_la_LIBADD) $(LIBS)
+ mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+--- a/libctf/configure
++++ b/libctf/configure
+@@ -635,6 +635,7 @@ ac_subst_vars='am__EXEEXT_FALSE
+ am__EXEEXT_TRUE
+ LTLIBOBJS
+ LIBOBJS
++CTF_SOVER_EXT
+ VERSION_FLAGS
+ BFD_DEPENDENCIES
+ BFD_LIBADD
+@@ -11548,7 +11549,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11551 "configure"
++#line 11552 "configure"
+ #include "confdefs.h"
+ #if HAVE_DLFCN_H
+@@ -11654,7 +11655,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11657 "configure"
++#line 11658 "configure"
+ #include "confdefs.h"
+ #if HAVE_DLFCN_H
+@@ -13377,6 +13378,9 @@ if $LD --help 2>&1 | grep -- --version-s
+ fi
++CTF_SOVER_EXT=$CTF_SOVER_EXT
++
++
+ ac_config_files="$ac_config_files Makefile"
+ ac_config_headers="$ac_config_headers config.h"
+--- a/libctf/configure.ac
++++ b/libctf/configure.ac
+@@ -220,6 +220,9 @@ if $LD --help 2>&1 | grep -- --version-s
+ fi
+ AC_SUBST(VERSION_FLAGS)
++CTF_SOVER_EXT=$CTF_SOVER_EXT
++AC_SUBST(CTF_SOVER_EXT)
++
+ AC_CONFIG_FILES(Makefile)
+ AC_CONFIG_HEADERS(config.h)
+ AC_OUTPUT
+--- a/binutils/Makefile.am
++++ b/binutils/Makefile.am
+@@ -165,8 +165,8 @@ BFDLIB = ../bfd/libbfd.la
+ OPCODES = ../opcodes/libopcodes.la
+ if ENABLE_LIBCTF
+-LIBCTF = ../libctf/libctf.la
+-LIBCTF_NOBFD = ../libctf/libctf-nobfd.la
++LIBCTF = ../libctf/libctf@CTF_SOVER_EXT@.la
++LIBCTF_NOBFD = ../libctf/libctf-nobfd@CTF_SOVER_EXT@.la
+ else
+ LIBCTF =
+ LIBCTF_NOBFD =
+--- a/binutils/Makefile.in
++++ b/binutils/Makefile.in
+@@ -223,7 +223,8 @@ objcopy_LDADD = $(LDADD)
+ am_objdump_OBJECTS = objdump.$(OBJEXT) dwarf.$(OBJEXT) prdbg.$(OBJEXT) \
+       $(am__objects_3) $(am__objects_1) $(am__objects_2)
+ objdump_OBJECTS = $(am_objdump_OBJECTS)
+-@ENABLE_LIBCTF_TRUE@am__DEPENDENCIES_2 = ../libctf/libctf.la
++@ENABLE_LIBCTF_TRUE@am__DEPENDENCIES_2 =  \
++@ENABLE_LIBCTF_TRUE@  ../libctf/libctf@CTF_SOVER_EXT@.la
+ am_ranlib_OBJECTS = ar.$(OBJEXT) is-ranlib.$(OBJEXT) arparse.$(OBJEXT) \
+       arlex.$(OBJEXT) arsup.$(OBJEXT) rename.$(OBJEXT) \
+       binemul.$(OBJEXT) emul_$(EMULATION).$(OBJEXT) $(am__objects_1)
+@@ -231,7 +232,8 @@ ranlib_OBJECTS = $(am_ranlib_OBJECTS)
+ am_readelf_OBJECTS = readelf.$(OBJEXT) version.$(OBJEXT) \
+       unwind-ia64.$(OBJEXT) dwarf.$(OBJEXT) $(am__objects_2)
+ readelf_OBJECTS = $(am_readelf_OBJECTS)
+-@ENABLE_LIBCTF_TRUE@am__DEPENDENCIES_3 = ../libctf/libctf-nobfd.la
++@ENABLE_LIBCTF_TRUE@am__DEPENDENCIES_3 =  \
++@ENABLE_LIBCTF_TRUE@  ../libctf/libctf-nobfd@CTF_SOVER_EXT@.la
+ am_size_OBJECTS = size.$(OBJEXT) $(am__objects_1)
+ size_OBJECTS = $(am_size_OBJECTS)
+ size_LDADD = $(LDADD)
+@@ -421,6 +423,7 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
+ CFLAGS = @CFLAGS@
+ CPP = @CPP@
+ CPPFLAGS = @CPPFLAGS@
++CTF_SOVER_EXT = @CTF_SOVER_EXT@
+ CYGPATH_W = @CYGPATH_W@
+ DATADIRNAME = @DATADIRNAME@
+ DEFS = @DEFS@
+@@ -547,6 +550,7 @@ pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+ psdir = @psdir@
++runstatedir = @runstatedir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ srcdir = @srcdir@
+@@ -662,9 +666,9 @@ ELFLIBS = elfcomm.c
+ BFDLIB = ../bfd/libbfd.la
+ OPCODES = ../opcodes/libopcodes.la
+ @ENABLE_LIBCTF_FALSE@LIBCTF = 
+-@ENABLE_LIBCTF_TRUE@LIBCTF = ../libctf/libctf.la
++@ENABLE_LIBCTF_TRUE@LIBCTF = ../libctf/libctf@CTF_SOVER_EXT@.la
+ @ENABLE_LIBCTF_FALSE@LIBCTF_NOBFD = 
+-@ENABLE_LIBCTF_TRUE@LIBCTF_NOBFD = ../libctf/libctf-nobfd.la
++@ENABLE_LIBCTF_TRUE@LIBCTF_NOBFD = ../libctf/libctf-nobfd@CTF_SOVER_EXT@.la
+ LIBIBERTY = ../libiberty/libiberty.a
+ POTFILES = $(CFILES) $(DEBUG_SRCS) $(HFILES)
+ EXPECT = expect
+--- a/binutils/configure
++++ b/binutils/configure
+@@ -634,6 +634,7 @@ ac_subst_vars='am__EXEEXT_FALSE
+ am__EXEEXT_TRUE
+ LTLIBOBJS
+ LIBOBJS
++CTF_SOVER_EXT
+ EMULATION_VECTOR
+ EMULATION
+ OBJDUMP_PRIVATE_OFILES
+@@ -11568,7 +11569,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11571 "configure"
++#line 11572 "configure"
+ #include "confdefs.h"
+ #if HAVE_DLFCN_H
+@@ -11674,7 +11675,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11677 "configure"
++#line 11678 "configure"
+ #include "confdefs.h"
+ #if HAVE_DLFCN_H
+@@ -15340,6 +15341,9 @@ EMULATION_VECTOR=$targ_emul_vector
++CTF_SOVER_EXT=$CTF_SOVER_EXT
++
++
+ # Required for html and install-html
+--- a/binutils/configure.ac
++++ b/binutils/configure.ac
+@@ -480,6 +480,9 @@ EMULATION_VECTOR=$targ_emul_vector
+ AC_SUBST(EMULATION)
+ AC_SUBST(EMULATION_VECTOR)
++CTF_SOVER_EXT=$CTF_SOVER_EXT
++AC_SUBST(CTF_SOVER_EXT)
++
+ # Required for html and install-html
+ AC_SUBST(datarootdir)
+ AC_SUBST(docdir)
+--- a/ld/Makefile.am
++++ b/ld/Makefile.am
+@@ -145,7 +145,7 @@ AM_CPPFLAGS = -I. -I$(srcdir) -I../bfd -
+ BFDLIB = ../bfd/libbfd.la
+ LIBIBERTY = ../libiberty/libiberty.a
+ if ENABLE_LIBCTF
+-LIBCTF = ../libctf/libctf.la
++LIBCTF = ../libctf/libctf@CTF_SOVER_EXT@.la
+ else
+ LIBCTF =
+ endif
+--- a/ld/Makefile.in
++++ b/ld/Makefile.in
+@@ -181,7 +181,8 @@ am_ld_new_OBJECTS = ldgram.$(OBJEXT) ldl
+       plugin.$(OBJEXT) ldbuildid.$(OBJEXT)
+ ld_new_OBJECTS = $(am_ld_new_OBJECTS)
+ am__DEPENDENCIES_1 =
+-@ENABLE_LIBCTF_TRUE@am__DEPENDENCIES_2 = ../libctf/libctf.la
++@ENABLE_LIBCTF_TRUE@am__DEPENDENCIES_2 =  \
++@ENABLE_LIBCTF_TRUE@  ../libctf/libctf@CTF_SOVER_EXT@.la
+ AM_V_P = $(am__v_P_@AM_V@)
+ am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+ am__v_P_0 = false
+@@ -368,6 +369,7 @@ CCDEPMODE = @CCDEPMODE@
+ CFLAGS = @CFLAGS@
+ CPP = @CPP@
+ CPPFLAGS = @CPPFLAGS@
++CTF_SOVER_EXT = @CTF_SOVER_EXT@
+ CXX = @CXX@
+ CXXCPP = @CXXCPP@
+ CXXDEPMODE = @CXXDEPMODE@
+@@ -515,6 +517,7 @@ pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+ psdir = @psdir@
++runstatedir = @runstatedir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ srcdir = @srcdir@
+@@ -631,7 +634,7 @@ AM_CPPFLAGS = -I. -I$(srcdir) -I../bfd -
+ BFDLIB = ../bfd/libbfd.la
+ LIBIBERTY = ../libiberty/libiberty.a
+ @ENABLE_LIBCTF_FALSE@LIBCTF = 
+-@ENABLE_LIBCTF_TRUE@LIBCTF = ../libctf/libctf.la
++@ENABLE_LIBCTF_TRUE@LIBCTF = ../libctf/libctf@CTF_SOVER_EXT@.la
+ # These all start with e so 'make clean' can find them.
+ ALL_EMULATION_SOURCES = \
+--- a/ld/configure
++++ b/ld/configure
+@@ -634,6 +634,7 @@ ac_subst_vars='am__EXEEXT_FALSE
+ am__EXEEXT_TRUE
+ LTLIBOBJS
+ LIBOBJS
++CTF_SOVER_EXT
+ TESTCTFLIB
+ TESTBFDLIB
+ EMULATION_LIBPATH
+@@ -12072,7 +12073,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 12075 "configure"
++#line 12076 "configure"
+ #include "confdefs.h"
+ #if HAVE_DLFCN_H
+@@ -12178,7 +12179,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 12181 "configure"
++#line 12182 "configure"
+ #include "confdefs.h"
+ #if HAVE_DLFCN_H
+@@ -17805,6 +17806,9 @@ fi
+ ac_config_commands="$ac_config_commands default"
++CTF_SOVER_EXT=$CTF_SOVER_EXT
++
++
+--- a/ld/configure.ac
++++ b/ld/configure.ac
+@@ -571,6 +571,9 @@ sed -e '/^SRC-POTFILES =/r po/SRC-POTFIL
+     -e "s,@GMOFILES@,$GMOFILES," \
+     po/Makefile.in > po/Makefile]],[[]])
++CTF_SOVER_EXT=$CTF_SOVER_EXT
++AC_SUBST(CTF_SOVER_EXT)
++
+ dnl Required by html, pdf, install-pdf and install-html
+ AC_SUBST(datarootdir)
+ AC_SUBST(docdir)
diff --git a/patches/mips64-default-n64.diff b/patches/mips64-default-n64.diff
new file mode 100644 (file)
index 0000000..b46c48b
--- /dev/null
@@ -0,0 +1,74 @@
+--- a/bfd/config.bfd
++++ b/bfd/config.bfd
+@@ -893,11 +893,21 @@ case "${targ}" in
+     targ_defvec=mips_elf32_be_vec
+     targ_selvecs="mips_elf32_le_vec mips_elf64_be_vec mips_elf64_le_vec mips_ecoff_be_vec mips_ecoff_le_vec"
+     ;;
+-  mips64*el-*-linux*)
++  mips*64*el-*-linux*-gnuabi64)
++    targ_defvec=mips_elf64_trad_le_vec
++    targ_selvecs="mips_elf32_ntrad_be_vec mips_elf32_ntrad_le_vec mips_elf32_trad_be_vec mips_elf32_trad_le_vec mips_elf64_trad_be_vec"
++    want64=true
++    ;;
++  mips*64*-*-linux*-gnuabi64)
++    targ_defvec=mips_elf64_trad_be_vec
++    targ_selvecs="mips_elf32_ntrad_be_vec mips_elf32_ntrad_le_vec mips_elf32_trad_be_vec mips_elf32_trad_le_vec mips_elf64_trad_le_vec"
++    want64=true
++    ;;
++  mips*64*el-*-linux*)
+     targ_defvec=mips_elf32_ntrad_le_vec
+     targ_selvecs="mips_elf32_ntrad_be_vec mips_elf32_trad_le_vec mips_elf32_trad_be_vec mips_elf64_trad_le_vec mips_elf64_trad_be_vec"
+     ;;
+-  mips64*-*-linux*)
++  mips*64*-*-linux*)
+     targ_defvec=mips_elf32_ntrad_be_vec
+     targ_selvecs="mips_elf32_ntrad_le_vec mips_elf32_trad_be_vec mips_elf32_trad_le_vec mips_elf64_trad_be_vec mips_elf64_trad_le_vec"
+     ;;
+--- a/gas/configure.ac
++++ b/gas/configure.ac
+@@ -377,6 +377,9 @@ changequote([,])dnl
+       esac
+       # Decide which ABI to target by default.
+       case ${target} in
++        mips*64*-linux-gnuabi64)
++          mips_default_abi=N64_ABI
++          ;;
+         mips64*-linux* | mips-sgi-irix6* | mips64*-freebsd* \
+         | mips64*-kfreebsd*-gnu | mips64*-ps2-elf*)
+           mips_default_abi=N32_ABI
+--- a/ld/configure.tgt
++++ b/ld/configure.tgt
+@@ -531,11 +531,19 @@ mips*-*-vxworks*)        targ_emul=elf32ebmipvx
+                       ;;
+ mips*-*-windiss)      targ_emul=elf32mipswindiss
+                       ;;
+-mips64*el-*-linux-*)  targ_emul=elf32ltsmipn32
++mips*64*el-*-linux-gnuabi64)  targ_emul=elf64ltsmip
++                      targ_extra_emuls="elf32btsmipn32 elf32ltsmipn32 elf32ltsmip elf32btsmip elf64btsmip"
++                      targ_extra_libpath=$targ_extra_emuls
++                      ;;
++mips*64*el-*-linux-*) targ_emul=elf32ltsmipn32
+                       targ_extra_emuls="elf32btsmipn32 elf32ltsmip elf32btsmip elf64ltsmip elf64btsmip"
+                       targ_extra_libpath=$targ_extra_emuls
+                       ;;
+-mips64*-*-linux-*)    targ_emul=elf32btsmipn32
++mips*64*-*-linux-gnuabi64)    targ_emul=elf64btsmip
++                      targ_extra_emuls="elf32btsmipn32 elf32ltsmipn32 elf32btsmip elf32ltsmip elf64ltsmip"
++                      targ_extra_libpath=$targ_extra_emuls
++                      ;;
++mips*64*-*-linux-*)   targ_emul=elf32btsmipn32
+                       targ_extra_emuls="elf32ltsmipn32 elf32btsmip elf32ltsmip elf64btsmip elf64ltsmip"
+                       targ_extra_libpath=$targ_extra_emuls
+                       ;;
+--- a/gas/configure
++++ b/gas/configure
+@@ -12766,6 +12766,9 @@ _ACEOF
+       esac
+       # Decide which ABI to target by default.
+       case ${target} in
++        mips*64*-linux-gnuabi64)
++          mips_default_abi=N64_ABI
++          ;;
+         mips64*-linux* | mips-sgi-irix6* | mips64*-freebsd* \
+         | mips64*-kfreebsd*-gnu | mips64*-ps2-elf*)
+           mips_default_abi=N32_ABI
diff --git a/patches/pgo+lto-1.diff b/patches/pgo+lto-1.diff
new file mode 100644 (file)
index 0000000..7e726a0
--- /dev/null
@@ -0,0 +1,616 @@
+Subject: [PATCH 1/3] GCC: Pass --plugin to AR and RANLIB
+
+Detect GCC LTO plugin.  Pass --plugin to AR and RANLIB to support LTO
+build.
+
+       * Makefile.tpl (AR): Add @AR_PLUGIN_OPTION@
+       (RANLIB): Add @RANLIB_PLUGIN_OPTION@.
+       * configure.ac: Include config/gcc-plugin.m4.
+       AC_SUBST AR_PLUGIN_OPTION and RANLIB_PLUGIN_OPTION.
+       * libtool.m4 (_LT_CMD_OLD_ARCHIVE): Pass --plugin to AR and
+       RANLIB if possible.
+       * Makefile.in: Regenerated.
+       * configure: Likewise.
+
+config/
+
+       * gcc-plugin.m4 (GCC_PLUGIN_OPTION): New.
+
+libiberty/
+
+       * Makefile.in (AR): Add @AR_PLUGIN_OPTION@
+       (RANLIB): Add @RANLIB_PLUGIN_OPTION@.
+       (configure_deps): Depend on ../config/gcc-plugin.m4.
+       * aclocal.m4: Include ../config/gcc-plugin.m4.
+       * configure.ac: AC_SUBST AR_PLUGIN_OPTION and
+       RANLIB_PLUGIN_OPTION.
+       * configure: Regenerated.
+
+zlib/
+
+       * configure: Regenerated.
+---
+ Makefile.in            |   5 +-
+ Makefile.tpl           |   5 +-
+ config/gcc-plugin.m4   |  28 ++++++
+ configure              |  39 ++++++++
+ configure.ac           |  15 +++
+ libiberty/Makefile.in  |   5 +-
+ libiberty/aclocal.m4   |   1 +
+ libiberty/configure    |  37 ++++++++
+ libiberty/configure.ac |  12 +++
+ libtool.m4             |  25 ++++-
+ zlib/configure         | 206 ++++++++++++++++++++++++++++++++++++++++-
+ 11 files changed, 368 insertions(+), 10 deletions(-)
+
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -387,7 +387,7 @@ MAKEINFOFLAGS = --split-size=5000000
+ # ---------------------------------------------
+ AS = @AS@
+-AR = @AR@
++AR = @AR@ @AR_PLUGIN_OPTION@
+ AR_FLAGS = rc
+ CC = @CC@
+ CXX = @CXX@
+@@ -396,7 +396,7 @@ LD = @LD@
+ LIPO = @LIPO@
+ NM = @NM@
+ OBJDUMP = @OBJDUMP@
+-RANLIB = @RANLIB@
++RANLIB = @RANLIB@ @RANLIB_PLUGIN_OPTION@
+ READELF = @READELF@
+ STRIP = @STRIP@
+ WINDRES = @WINDRES@
+@@ -52631,6 +52631,7 @@ AUTOCONF = autoconf
+ $(srcdir)/configure: @MAINT@ $(srcdir)/configure.ac $(srcdir)/config/acx.m4 \
+       $(srcdir)/config/override.m4 $(srcdir)/config/proginstall.m4 \
+       $(srcdir)/config/elf.m4 $(srcdir)/config/isl.m4 \
++      $(srcdir)/config/gcc-plugin.m4 \
+       $(srcdir)/libtool.m4 $(srcdir)/ltoptions.m4 $(srcdir)/ltsugar.m4 \
+       $(srcdir)/ltversion.m4 $(srcdir)/lt~obsolete.m4
+       cd $(srcdir) && $(AUTOCONF)
+--- a/Makefile.tpl
++++ b/Makefile.tpl
+@@ -390,7 +390,7 @@ MAKEINFOFLAGS = --split-size=5000000
+ # ---------------------------------------------
+ AS = @AS@
+-AR = @AR@
++AR = @AR@ @AR_PLUGIN_OPTION@
+ AR_FLAGS = rc
+ CC = @CC@
+ CXX = @CXX@
+@@ -399,7 +399,7 @@ LD = @LD@
+ LIPO = @LIPO@
+ NM = @NM@
+ OBJDUMP = @OBJDUMP@
+-RANLIB = @RANLIB@
++RANLIB = @RANLIB@ @RANLIB_PLUGIN_OPTION@
+ READELF = @READELF@
+ STRIP = @STRIP@
+ WINDRES = @WINDRES@
+@@ -1967,6 +1967,7 @@ AUTOCONF = autoconf
+ $(srcdir)/configure: @MAINT@ $(srcdir)/configure.ac $(srcdir)/config/acx.m4 \
+       $(srcdir)/config/override.m4 $(srcdir)/config/proginstall.m4 \
+       $(srcdir)/config/elf.m4 $(srcdir)/config/isl.m4 \
++      $(srcdir)/config/gcc-plugin.m4 \
+       $(srcdir)/libtool.m4 $(srcdir)/ltoptions.m4 $(srcdir)/ltsugar.m4 \
+       $(srcdir)/ltversion.m4 $(srcdir)/lt~obsolete.m4
+       cd $(srcdir) && $(AUTOCONF)
+--- a/config/gcc-plugin.m4
++++ b/config/gcc-plugin.m4
+@@ -124,3 +124,31 @@ AC_DEFUN([GCC_ENABLE_PLUGINS],
+      fi
+    fi
+ ])
++
++dnl
++dnl
++dnl GCC_PLUGIN_OPTION
++dnl    (SHELL-CODE_HANDLER)
++dnl
++AC_DEFUN([GCC_PLUGIN_OPTION],[dnl
++AC_MSG_CHECKING([for -plugin option])
++
++plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
++plugin_option=
++for plugin in $plugin_names; do
++  plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin`
++  if test x$plugin_so = x$plugin; then
++    plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin`
++  fi
++  if test x$plugin_so != x$plugin; then
++    plugin_option="--plugin $plugin_so"
++    break
++  fi
++done
++if test -n "$plugin_option"; then
++  $1="$plugin_option"
++  AC_MSG_RESULT($plugin_option)
++else
++  AC_MSG_RESULT([no])
++fi
++])
+--- a/configure
++++ b/configure
+@@ -616,6 +616,8 @@ GFORTRAN_FOR_TARGET
+ GCC_FOR_TARGET
+ CXX_FOR_TARGET
+ CC_FOR_TARGET
++RANLIB_PLUGIN_OPTION
++AR_PLUGIN_OPTION
+ READELF
+ OBJDUMP
+ OBJCOPY
+@@ -10142,6 +10144,43 @@ fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -plugin option" >&5
++$as_echo_n "checking for -plugin option... " >&6; }
++
++plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
++plugin_option=
++for plugin in $plugin_names; do
++  plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin`
++  if test x$plugin_so = x$plugin; then
++    plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin`
++  fi
++  if test x$plugin_so != x$plugin; then
++    plugin_option="--plugin $plugin_so"
++    break
++  fi
++done
++if test -n "$plugin_option"; then
++  PLUGIN_OPTION="$plugin_option"
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $plugin_option" >&5
++$as_echo "$plugin_option" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++AR_PLUGIN_OPTION=
++RANLIB_PLUGIN_OPTION=
++if test -n "$PLUGIN_OPTION"; then
++  if $AR --help 2>&1 | grep -q "\--plugin"; then
++    AR_PLUGIN_OPTION="$PLUGIN_OPTION"
++  fi
++  if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
++    RANLIB_PLUGIN_OPTION="$PLUGIN_OPTION"
++  fi
++fi
++
++
++
+ # Target tools.
+ # Check whether --with-build-time-tools was given.
+--- a/configure.ac
++++ b/configure.ac
+@@ -23,6 +23,7 @@ m4_include(config/acx.m4)
+ m4_include(config/override.m4)
+ m4_include(config/proginstall.m4)
+ m4_include(config/elf.m4)
++m4_include(config/gcc-plugin.m4)
+ m4_include(config/debuginfod.m4)
+ m4_include([libtool.m4])
+ m4_include([ltoptions.m4])
+@@ -3380,6 +3381,20 @@ AC_SUBST(CXX)
+ AC_SUBST(CFLAGS)
+ AC_SUBST(CXXFLAGS)
++GCC_PLUGIN_OPTION(PLUGIN_OPTION)
++AR_PLUGIN_OPTION=
++RANLIB_PLUGIN_OPTION=
++if test -n "$PLUGIN_OPTION"; then
++  if $AR --help 2>&1 | grep -q "\--plugin"; then
++    AR_PLUGIN_OPTION="$PLUGIN_OPTION"
++  fi
++  if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
++    RANLIB_PLUGIN_OPTION="$PLUGIN_OPTION"
++  fi
++fi
++AC_SUBST(AR_PLUGIN_OPTION)
++AC_SUBST(RANLIB_PLUGIN_OPTION)
++
+ # Target tools.
+ AC_ARG_WITH([build-time-tools], 
+   [AS_HELP_STRING([--with-build-time-tools=PATH],
+--- a/libiberty/Makefile.in
++++ b/libiberty/Makefile.in
+@@ -49,13 +49,13 @@ mkinstalldirs = $(SHELL) $(libiberty_top
+ # Some compilers can't handle cc -c blah.c -o foo/blah.o.
+ OUTPUT_OPTION = @OUTPUT_OPTION@
+-AR = @AR@
++AR = @AR@ @AR_PLUGIN_OPTION@
+ AR_FLAGS = rc
+ CC = @CC@
+ CFLAGS = @CFLAGS@
+ CPPFLAGS = @CPPFLAGS@
+-RANLIB = @RANLIB@
++RANLIB = @RANLIB@ @RANLIB_PLUGIN_OPTION@
+ MAKEINFO = @MAKEINFO@
+ PERL = @PERL@
+@@ -485,6 +485,7 @@ configure_deps = $(srcdir)/aclocal.m4 \
+       $(srcdir)/../config/acx.m4 \
+       $(srcdir)/../config/cet.m4 \
+       $(srcdir)/../config/enable.m4 \
++      $(srcdir)/../config/gcc-plugin.m4 \
+       $(srcdir)/../config/no-executables.m4 \
+       $(srcdir)/../config/override.m4 \
+       $(srcdir)/../config/picflag.m4 \
+--- a/libiberty/aclocal.m4
++++ b/libiberty/aclocal.m4
+@@ -1,6 +1,7 @@
+ sinclude(../config/acx.m4)
+ sinclude(../config/cet.m4)
+ sinclude(../config/enable.m4)
++sinclude(../config/gcc-plugin.m4)
+ sinclude(../config/no-executables.m4)
+ sinclude(../config/override.m4)
+ sinclude(../config/picflag.m4)
+--- a/libiberty/configure
++++ b/libiberty/configure
+@@ -645,6 +645,8 @@ CPPFLAGS
+ LDFLAGS
+ CFLAGS
+ CC
++RANLIB_PLUGIN_OPTION
++AR_PLUGIN_OPTION
+ RANLIB
+ AR
+ host_os
+@@ -2932,6 +2934,41 @@ else
+ fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -plugin option" >&5
++$as_echo_n "checking for -plugin option... " >&6; }
++
++plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
++plugin_option=
++for plugin in $plugin_names; do
++  plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin`
++  if test x$plugin_so = x$plugin; then
++    plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin`
++  fi
++  if test x$plugin_so != x$plugin; then
++    plugin_option="--plugin $plugin_so"
++    break
++  fi
++done
++if test -n "$plugin_option"; then
++  PLUGIN_OPTION="$plugin_option"
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $plugin_option" >&5
++$as_echo "$plugin_option" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++if test -n "$PLUGIN_OPTION"; then
++  if $AR --help 2>&1 | grep -q "\--plugin"; then
++    AR_PLUGIN_OPTION="$PLUGIN_OPTION"
++
++  fi
++  if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
++    RANLIB_PLUGIN_OPTION="$PLUGIN_OPTION"
++
++  fi
++fi
++
+ # Add --enable-multilib to configure.
+ # Default to --enable-multilib
+ # Check whether --enable-multilib was given.
+--- a/libiberty/configure.ac
++++ b/libiberty/configure.ac
+@@ -108,6 +108,18 @@ dnl to call AC_CHECK_PROG.
+ AC_CHECK_TOOL(AR, ar)
+ AC_CHECK_TOOL(RANLIB, ranlib, :)
++GCC_PLUGIN_OPTION(PLUGIN_OPTION)
++if test -n "$PLUGIN_OPTION"; then
++  if $AR --help 2>&1 | grep -q "\--plugin"; then
++    AR_PLUGIN_OPTION="$PLUGIN_OPTION"
++    AC_SUBST(AR_PLUGIN_OPTION)
++  fi
++  if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
++    RANLIB_PLUGIN_OPTION="$PLUGIN_OPTION"
++    AC_SUBST(RANLIB_PLUGIN_OPTION)
++  fi
++fi
++
+ dnl When switching to automake, replace the following with AM_ENABLE_MULTILIB.
+ # Add --enable-multilib to configure.
+ # Default to --enable-multilib
+--- a/libtool.m4
++++ b/libtool.m4
+@@ -1323,8 +1323,26 @@ need_locks="$enable_libtool_lock"
+ # _LT_CMD_OLD_ARCHIVE
+ # -------------------
+ m4_defun([_LT_CMD_OLD_ARCHIVE],
+-[AC_CHECK_TOOL(AR, ar, false)
++[plugin_option=
++plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
++for plugin in $plugin_names; do
++  plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin`
++  if test x$plugin_so = x$plugin; then
++    plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin`
++  fi
++  if test x$plugin_so != x$plugin; then
++    plugin_option="--plugin $plugin_so"
++    break
++  fi
++done
++
++AC_CHECK_TOOL(AR, ar, false)
+ test -z "$AR" && AR=ar
++if test -n "$plugin_option"; then
++  if $AR --help 2>&1 | grep -q "\--plugin"; then
++    AR="$AR $plugin_option"
++  fi
++fi
+ test -z "$AR_FLAGS" && AR_FLAGS=cru
+ _LT_DECL([], [AR], [1], [The archiver])
+ _LT_DECL([], [AR_FLAGS], [1])
+@@ -1335,6 +1353,11 @@ _LT_DECL([], [STRIP], [1], [A symbol str
+ AC_CHECK_TOOL(RANLIB, ranlib, :)
+ test -z "$RANLIB" && RANLIB=:
++if test -n "$plugin_option" && test "$RANLIB" != ":"; then
++  if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
++    RANLIB="$RANLIB $plugin_option"
++  fi
++fi
+ _LT_DECL([], [RANLIB], [1],
+     [Commands used to install an old-style archive])
+--- a/zlib/configure
++++ b/zlib/configure
+@@ -5407,6 +5407,19 @@ test -z "$deplibs_check_method" && depli
++plugin_option=
++plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
++for plugin in $plugin_names; do
++  plugin_so=`${CC} ${CFLAGS} --print-prog-name plugin`
++  if  x$plugin_so = x$plugin ; then
++    plugin_so=`${CC} ${CFLAGS} --print-file-name plugin`
++  fi
++  if  x$plugin_so != x$plugin ; then
++    plugin_option="--plugin $plugin_so"
++    break
++  fi
++done
++
+ if test -n "$ac_tool_prefix"; then
+   # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ar; ac_word=$2
+@@ -5500,6 +5513,98 @@ else
+ fi
+ test -z "$AR" && AR=ar
++if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}"$AR $plugin_option"", so it can be a program name with args.
++set dummy ${ac_tool_prefix}"$AR $plugin_option"; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_AR+:} false; then :
++  $as_echo_n "(cached) " >&6
++else
++  if test -n "$AR"; then
++  ac_cv_prog_AR="$AR" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++    ac_cv_prog_AR="${ac_tool_prefix}"$AR $plugin_option""
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++fi
++fi
++AR=$ac_cv_prog_AR
++if test -n "$AR"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
++$as_echo "$AR" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_AR"; then
++  ac_ct_AR=$AR
++  # Extract the first word of ""$AR $plugin_option"", so it can be a program name with args.
++set dummy "$AR $plugin_option"; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_ac_ct_AR+:} false; then :
++  $as_echo_n "(cached) " >&6
++else
++  if test -n "$ac_ct_AR"; then
++  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++    ac_cv_prog_ac_ct_AR=""$AR $plugin_option""
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_AR=$ac_cv_prog_ac_ct_AR
++if test -n "$ac_ct_AR"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
++$as_echo "$ac_ct_AR" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_ct_AR" = x; then
++    AR="$AR"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    AR=$ac_ct_AR
++  fi
++else
++  AR="$ac_cv_prog_AR"
++fi
++
+ test -z "$AR_FLAGS" && AR_FLAGS=cru
+@@ -5703,7 +5808,102 @@ else
+   RANLIB="$ac_cv_prog_RANLIB"
+ fi
+-test -z "$RANLIB" && RANLIB=:
++if test -z "$RANLIB"; then
++  RANLIB=:
++else
++  if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}"$RANLIB $plugin_option"", so it can be a program name with args.
++set dummy ${ac_tool_prefix}"$RANLIB $plugin_option"; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_RANLIB+:} false; then :
++  $as_echo_n "(cached) " >&6
++else
++  if test -n "$RANLIB"; then
++  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++    ac_cv_prog_RANLIB="${ac_tool_prefix}"$RANLIB $plugin_option""
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++fi
++fi
++RANLIB=$ac_cv_prog_RANLIB
++if test -n "$RANLIB"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
++$as_echo "$RANLIB" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_RANLIB"; then
++  ac_ct_RANLIB=$RANLIB
++  # Extract the first word of ""$RANLIB $plugin_option"", so it can be a program name with args.
++set dummy "$RANLIB $plugin_option"; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
++  $as_echo_n "(cached) " >&6
++else
++  if test -n "$ac_ct_RANLIB"; then
++  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++    ac_cv_prog_ac_ct_RANLIB=""$RANLIB $plugin_option""
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
++if test -n "$ac_ct_RANLIB"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
++$as_echo "$ac_ct_RANLIB" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_ct_RANLIB" = x; then
++    RANLIB="$RANLIB"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    RANLIB=$ac_ct_RANLIB
++  fi
++else
++  RANLIB="$ac_cv_prog_RANLIB"
++fi
++
++fi
+@@ -10644,7 +10844,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 10647 "configure"
++#line 10847 "configure"
+ #include "confdefs.h"
+ #if HAVE_DLFCN_H
+@@ -10750,7 +10950,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 10753 "configure"
++#line 10953 "configure"
+ #include "confdefs.h"
+ #if HAVE_DLFCN_H
diff --git a/patches/pgo+lto-2.diff b/patches/pgo+lto-2.diff
new file mode 100644 (file)
index 0000000..8300558
--- /dev/null
@@ -0,0 +1,1090 @@
+Subject: [PATCH 2/3] Binutils: Pass --plugin to AR and RANLIB
+
+Detect GCC LTO plugin.  Pass --plugin to AR and RANLIB to support LTO
+build.
+
+bfd/
+
+       * configure: Regenerated.
+
+binutils/
+
+       * configure: Regenerated.
+
+gas/
+
+       * configure: Regenerated.
+
+gprof/
+
+       * configure: Regenerated.
+
+ld/
+
+       * configure: Regenerated.
+
+libctf/
+
+       * configure: Regenerated.
+
+opcodes/
+
+       * configure: Regenerated.
+---
+ bfd/configure      | 27 +++++++++++++++++++++++++--
+ binutils/configure | 27 +++++++++++++++++++++++++--
+ gas/configure      | 27 +++++++++++++++++++++++++--
+ gprof/configure    | 27 +++++++++++++++++++++++++--
+ ld/configure       | 27 +++++++++++++++++++++++++--
+ libctf/configure   | 27 +++++++++++++++++++++++++--
+ opcodes/configure  | 27 +++++++++++++++++++++++++--
+ 7 files changed, 175 insertions(+), 14 deletions(-)
+
+--- a/bfd/configure
++++ b/bfd/configure
+@@ -793,6 +793,7 @@ infodir
+ docdir
+ oldincludedir
+ includedir
++runstatedir
+ localstatedir
+ sharedstatedir
+ sysconfdir
+@@ -889,6 +890,7 @@ datadir='${datarootdir}'
+ sysconfdir='${prefix}/etc'
+ sharedstatedir='${prefix}/com'
+ localstatedir='${prefix}/var'
++runstatedir='${localstatedir}/run'
+ includedir='${prefix}/include'
+ oldincludedir='/usr/include'
+ docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+@@ -1141,6 +1143,15 @@ do
+   | -silent | --silent | --silen | --sile | --sil)
+     silent=yes ;;
++  -runstatedir | --runstatedir | --runstatedi | --runstated \
++  | --runstate | --runstat | --runsta | --runst | --runs \
++  | --run | --ru | --r)
++    ac_prev=runstatedir ;;
++  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
++  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
++  | --run=* | --ru=* | --r=*)
++    runstatedir=$ac_optarg ;;
++
+   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+     ac_prev=sbindir ;;
+   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+@@ -1278,7 +1289,7 @@ fi
+ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+               datadir sysconfdir sharedstatedir localstatedir includedir \
+               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+-              libdir localedir mandir
++              libdir localedir mandir runstatedir
+ do
+   eval ac_val=\$$ac_var
+   # Remove trailing slashes.
+@@ -1431,6 +1442,7 @@ Fine tuning of the installation director
+   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
++  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
+   --libdir=DIR            object code libraries [EPREFIX/lib]
+   --includedir=DIR        C header files [PREFIX/include]
+   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+@@ -6823,6 +6835,19 @@ test -z "$deplibs_check_method" && depli
++plugin_option=
++plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
++for plugin in $plugin_names; do
++  plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin`
++  if test x$plugin_so = x$plugin; then
++    plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin`
++  fi
++  if test x$plugin_so != x$plugin; then
++    plugin_option="--plugin $plugin_so"
++    break
++  fi
++done
++
+ if test -n "$ac_tool_prefix"; then
+   # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ar; ac_word=$2
+@@ -6916,6 +6941,11 @@ else
+ fi
+ test -z "$AR" && AR=ar
++if test -n "$plugin_option"; then
++  if $AR --help 2>&1 | grep -q "\--plugin"; then
++    AR="$AR $plugin_option"
++  fi
++fi
+ test -z "$AR_FLAGS" && AR_FLAGS=cru
+@@ -7120,6 +7150,11 @@ else
+ fi
+ test -z "$RANLIB" && RANLIB=:
++if test -n "$plugin_option" && test "$RANLIB" != ":"; then
++  if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
++    RANLIB="$RANLIB $plugin_option"
++  fi
++fi
+@@ -11728,7 +11763,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11731 "configure"
++#line 11766 "configure"
+ #include "confdefs.h"
+ #if HAVE_DLFCN_H
+@@ -11834,7 +11869,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11837 "configure"
++#line 11872 "configure"
+ #include "confdefs.h"
+ #if HAVE_DLFCN_H
+@@ -12223,7 +12258,7 @@ else
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -12269,7 +12304,7 @@ else
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -12293,7 +12328,7 @@ rm -f core conftest.err conftest.$ac_obj
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -12338,7 +12373,7 @@ else
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -12362,7 +12397,7 @@ rm -f core conftest.err conftest.$ac_obj
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -16376,6 +16411,8 @@ main ()
+     if (*(data + i) != *(data3 + i))
+       return 14;
+   close (fd);
++  free (data);
++  free (data3);
+   return 0;
+ }
+ _ACEOF
+--- a/binutils/configure
++++ b/binutils/configure
+@@ -781,6 +781,7 @@ infodir
+ docdir
+ oldincludedir
+ includedir
++runstatedir
+ localstatedir
+ sharedstatedir
+ sysconfdir
+@@ -876,6 +877,7 @@ datadir='${datarootdir}'
+ sysconfdir='${prefix}/etc'
+ sharedstatedir='${prefix}/com'
+ localstatedir='${prefix}/var'
++runstatedir='${localstatedir}/run'
+ includedir='${prefix}/include'
+ oldincludedir='/usr/include'
+ docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+@@ -1128,6 +1130,15 @@ do
+   | -silent | --silent | --silen | --sile | --sil)
+     silent=yes ;;
++  -runstatedir | --runstatedir | --runstatedi | --runstated \
++  | --runstate | --runstat | --runsta | --runst | --runs \
++  | --run | --ru | --r)
++    ac_prev=runstatedir ;;
++  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
++  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
++  | --run=* | --ru=* | --r=*)
++    runstatedir=$ac_optarg ;;
++
+   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+     ac_prev=sbindir ;;
+   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+@@ -1265,7 +1276,7 @@ fi
+ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+               datadir sysconfdir sharedstatedir localstatedir includedir \
+               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+-              libdir localedir mandir
++              libdir localedir mandir runstatedir
+ do
+   eval ac_val=\$$ac_var
+   # Remove trailing slashes.
+@@ -1418,6 +1429,7 @@ Fine tuning of the installation director
+   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
++  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
+   --libdir=DIR            object code libraries [EPREFIX/lib]
+   --includedir=DIR        C header files [PREFIX/include]
+   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+@@ -6597,6 +6609,19 @@ test -z "$deplibs_check_method" && depli
++plugin_option=
++plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
++for plugin in $plugin_names; do
++  plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin`
++  if test x$plugin_so = x$plugin; then
++    plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin`
++  fi
++  if test x$plugin_so != x$plugin; then
++    plugin_option="--plugin $plugin_so"
++    break
++  fi
++done
++
+ if test -n "$ac_tool_prefix"; then
+   # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ar; ac_word=$2
+@@ -6690,6 +6715,11 @@ else
+ fi
+ test -z "$AR" && AR=ar
++if test -n "$plugin_option"; then
++  if $AR --help 2>&1 | grep -q "\--plugin"; then
++    AR="$AR $plugin_option"
++  fi
++fi
+ test -z "$AR_FLAGS" && AR_FLAGS=cru
+@@ -6894,6 +6924,11 @@ else
+ fi
+ test -z "$RANLIB" && RANLIB=:
++if test -n "$plugin_option" && test "$RANLIB" != ":"; then
++  if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
++    RANLIB="$RANLIB $plugin_option"
++  fi
++fi
+@@ -11533,7 +11568,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11536 "configure"
++#line 11571 "configure"
+ #include "confdefs.h"
+ #if HAVE_DLFCN_H
+@@ -11639,7 +11674,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11642 "configure"
++#line 11677 "configure"
+ #include "confdefs.h"
+ #if HAVE_DLFCN_H
+@@ -12026,7 +12061,7 @@ else
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -12072,7 +12107,7 @@ else
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -12096,7 +12131,7 @@ rm -f core conftest.err conftest.$ac_obj
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -12141,7 +12176,7 @@ else
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -12165,7 +12200,7 @@ rm -f core conftest.err conftest.$ac_obj
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -13843,6 +13878,8 @@ main ()
+     if (*(data + i) != *(data3 + i))
+       return 14;
+   close (fd);
++  free (data);
++  free (data3);
+   return 0;
+ }
+ _ACEOF
+--- a/gas/configure
++++ b/gas/configure
+@@ -770,6 +770,7 @@ infodir
+ docdir
+ oldincludedir
+ includedir
++runstatedir
+ localstatedir
+ sharedstatedir
+ sysconfdir
+@@ -867,6 +868,7 @@ datadir='${datarootdir}'
+ sysconfdir='${prefix}/etc'
+ sharedstatedir='${prefix}/com'
+ localstatedir='${prefix}/var'
++runstatedir='${localstatedir}/run'
+ includedir='${prefix}/include'
+ oldincludedir='/usr/include'
+ docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+@@ -1119,6 +1121,15 @@ do
+   | -silent | --silent | --silen | --sile | --sil)
+     silent=yes ;;
++  -runstatedir | --runstatedir | --runstatedi | --runstated \
++  | --runstate | --runstat | --runsta | --runst | --runs \
++  | --run | --ru | --r)
++    ac_prev=runstatedir ;;
++  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
++  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
++  | --run=* | --ru=* | --r=*)
++    runstatedir=$ac_optarg ;;
++
+   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+     ac_prev=sbindir ;;
+   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+@@ -1256,7 +1267,7 @@ fi
+ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+               datadir sysconfdir sharedstatedir localstatedir includedir \
+               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+-              libdir localedir mandir
++              libdir localedir mandir runstatedir
+ do
+   eval ac_val=\$$ac_var
+   # Remove trailing slashes.
+@@ -1409,6 +1420,7 @@ Fine tuning of the installation director
+   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
++  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
+   --libdir=DIR            object code libraries [EPREFIX/lib]
+   --includedir=DIR        C header files [PREFIX/include]
+   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+@@ -6407,6 +6419,19 @@ test -z "$deplibs_check_method" && depli
++plugin_option=
++plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
++for plugin in $plugin_names; do
++  plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin`
++  if test x$plugin_so = x$plugin; then
++    plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin`
++  fi
++  if test x$plugin_so != x$plugin; then
++    plugin_option="--plugin $plugin_so"
++    break
++  fi
++done
++
+ if test -n "$ac_tool_prefix"; then
+   # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ar; ac_word=$2
+@@ -6500,6 +6525,11 @@ else
+ fi
+ test -z "$AR" && AR=ar
++if test -n "$plugin_option"; then
++  if $AR --help 2>&1 | grep -q "\--plugin"; then
++    AR="$AR $plugin_option"
++  fi
++fi
+ test -z "$AR_FLAGS" && AR_FLAGS=cru
+@@ -6704,6 +6734,11 @@ else
+ fi
+ test -z "$RANLIB" && RANLIB=:
++if test -n "$plugin_option" && test "$RANLIB" != ":"; then
++  if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
++    RANLIB="$RANLIB $plugin_option"
++  fi
++fi
+@@ -11343,7 +11378,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11346 "configure"
++#line 11381 "configure"
+ #include "confdefs.h"
+ #if HAVE_DLFCN_H
+@@ -11449,7 +11484,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11452 "configure"
++#line 11487 "configure"
+ #include "confdefs.h"
+ #if HAVE_DLFCN_H
+@@ -11836,7 +11871,7 @@ else
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -11882,7 +11917,7 @@ else
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -11906,7 +11941,7 @@ rm -f core conftest.err conftest.$ac_obj
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -11951,7 +11986,7 @@ else
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -11975,7 +12010,7 @@ rm -f core conftest.err conftest.$ac_obj
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+--- a/gprof/configure
++++ b/gprof/configure
+@@ -751,6 +751,7 @@ infodir
+ docdir
+ oldincludedir
+ includedir
++runstatedir
+ localstatedir
+ sharedstatedir
+ sysconfdir
+@@ -835,6 +836,7 @@ datadir='${datarootdir}'
+ sysconfdir='${prefix}/etc'
+ sharedstatedir='${prefix}/com'
+ localstatedir='${prefix}/var'
++runstatedir='${localstatedir}/run'
+ includedir='${prefix}/include'
+ oldincludedir='/usr/include'
+ docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+@@ -1087,6 +1089,15 @@ do
+   | -silent | --silent | --silen | --sile | --sil)
+     silent=yes ;;
++  -runstatedir | --runstatedir | --runstatedi | --runstated \
++  | --runstate | --runstat | --runsta | --runst | --runs \
++  | --run | --ru | --r)
++    ac_prev=runstatedir ;;
++  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
++  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
++  | --run=* | --ru=* | --r=*)
++    runstatedir=$ac_optarg ;;
++
+   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+     ac_prev=sbindir ;;
+   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+@@ -1224,7 +1235,7 @@ fi
+ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+               datadir sysconfdir sharedstatedir localstatedir includedir \
+               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+-              libdir localedir mandir
++              libdir localedir mandir runstatedir
+ do
+   eval ac_val=\$$ac_var
+   # Remove trailing slashes.
+@@ -1377,6 +1388,7 @@ Fine tuning of the installation director
+   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
++  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
+   --libdir=DIR            object code libraries [EPREFIX/lib]
+   --includedir=DIR        C header files [PREFIX/include]
+   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+@@ -6254,6 +6266,19 @@ test -z "$deplibs_check_method" && depli
++plugin_option=
++plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
++for plugin in $plugin_names; do
++  plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin`
++  if test x$plugin_so = x$plugin; then
++    plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin`
++  fi
++  if test x$plugin_so != x$plugin; then
++    plugin_option="--plugin $plugin_so"
++    break
++  fi
++done
++
+ if test -n "$ac_tool_prefix"; then
+   # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ar; ac_word=$2
+@@ -6347,6 +6372,11 @@ else
+ fi
+ test -z "$AR" && AR=ar
++if test -n "$plugin_option"; then
++  if $AR --help 2>&1 | grep -q "\--plugin"; then
++    AR="$AR $plugin_option"
++  fi
++fi
+ test -z "$AR_FLAGS" && AR_FLAGS=cru
+@@ -6551,6 +6581,11 @@ else
+ fi
+ test -z "$RANLIB" && RANLIB=:
++if test -n "$plugin_option" && test "$RANLIB" != ":"; then
++  if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
++    RANLIB="$RANLIB $plugin_option"
++  fi
++fi
+@@ -11190,7 +11225,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11193 "configure"
++#line 11228 "configure"
+ #include "confdefs.h"
+ #if HAVE_DLFCN_H
+@@ -11296,7 +11331,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11299 "configure"
++#line 11334 "configure"
+ #include "confdefs.h"
+ #if HAVE_DLFCN_H
+@@ -11683,7 +11718,7 @@ else
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -11729,7 +11764,7 @@ else
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -11753,7 +11788,7 @@ rm -f core conftest.err conftest.$ac_obj
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -11798,7 +11833,7 @@ else
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -11822,7 +11857,7 @@ rm -f core conftest.err conftest.$ac_obj
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+--- a/ld/configure
++++ b/ld/configure
+@@ -789,6 +789,7 @@ infodir
+ docdir
+ oldincludedir
+ includedir
++runstatedir
+ localstatedir
+ sharedstatedir
+ sysconfdir
+@@ -894,6 +895,7 @@ datadir='${datarootdir}'
+ sysconfdir='${prefix}/etc'
+ sharedstatedir='${prefix}/com'
+ localstatedir='${prefix}/var'
++runstatedir='${localstatedir}/run'
+ includedir='${prefix}/include'
+ oldincludedir='/usr/include'
+ docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+@@ -1146,6 +1148,15 @@ do
+   | -silent | --silent | --silen | --sile | --sil)
+     silent=yes ;;
++  -runstatedir | --runstatedir | --runstatedi | --runstated \
++  | --runstate | --runstat | --runsta | --runst | --runs \
++  | --run | --ru | --r)
++    ac_prev=runstatedir ;;
++  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
++  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
++  | --run=* | --ru=* | --r=*)
++    runstatedir=$ac_optarg ;;
++
+   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+     ac_prev=sbindir ;;
+   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+@@ -1283,7 +1294,7 @@ fi
+ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+               datadir sysconfdir sharedstatedir localstatedir includedir \
+               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+-              libdir localedir mandir
++              libdir localedir mandir runstatedir
+ do
+   eval ac_val=\$$ac_var
+   # Remove trailing slashes.
+@@ -1436,6 +1447,7 @@ Fine tuning of the installation director
+   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
++  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
+   --libdir=DIR            object code libraries [EPREFIX/lib]
+   --includedir=DIR        C header files [PREFIX/include]
+   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+@@ -7100,6 +7112,19 @@ test -z "$deplibs_check_method" && depli
++plugin_option=
++plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
++for plugin in $plugin_names; do
++  plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin`
++  if test x$plugin_so = x$plugin; then
++    plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin`
++  fi
++  if test x$plugin_so != x$plugin; then
++    plugin_option="--plugin $plugin_so"
++    break
++  fi
++done
++
+ if test -n "$ac_tool_prefix"; then
+   # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ar; ac_word=$2
+@@ -7193,6 +7218,11 @@ else
+ fi
+ test -z "$AR" && AR=ar
++if test -n "$plugin_option"; then
++  if $AR --help 2>&1 | grep -q "\--plugin"; then
++    AR="$AR $plugin_option"
++  fi
++fi
+ test -z "$AR_FLAGS" && AR_FLAGS=cru
+@@ -7397,6 +7427,11 @@ else
+ fi
+ test -z "$RANLIB" && RANLIB=:
++if test -n "$plugin_option" && test "$RANLIB" != ":"; then
++  if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
++    RANLIB="$RANLIB $plugin_option"
++  fi
++fi
+@@ -12037,7 +12072,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 12040 "configure"
++#line 12075 "configure"
+ #include "confdefs.h"
+ #if HAVE_DLFCN_H
+@@ -12143,7 +12178,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 12146 "configure"
++#line 12181 "configure"
+ #include "confdefs.h"
+ #if HAVE_DLFCN_H
+@@ -15546,7 +15581,7 @@ else
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -15592,7 +15627,7 @@ else
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -15616,7 +15651,7 @@ rm -f core conftest.err conftest.$ac_obj
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -15661,7 +15696,7 @@ else
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -15685,7 +15720,7 @@ rm -f core conftest.err conftest.$ac_obj
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -17235,6 +17270,8 @@ main ()
+     if (*(data + i) != *(data3 + i))
+       return 14;
+   close (fd);
++  free (data);
++  free (data3);
+   return 0;
+ }
+ _ACEOF
+--- a/libctf/configure
++++ b/libctf/configure
+@@ -761,6 +761,7 @@ infodir
+ docdir
+ oldincludedir
+ includedir
++runstatedir
+ localstatedir
+ sharedstatedir
+ sysconfdir
+@@ -844,6 +845,7 @@ datadir='${datarootdir}'
+ sysconfdir='${prefix}/etc'
+ sharedstatedir='${prefix}/com'
+ localstatedir='${prefix}/var'
++runstatedir='${localstatedir}/run'
+ includedir='${prefix}/include'
+ oldincludedir='/usr/include'
+ docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+@@ -1096,6 +1098,15 @@ do
+   | -silent | --silent | --silen | --sile | --sil)
+     silent=yes ;;
++  -runstatedir | --runstatedir | --runstatedi | --runstated \
++  | --runstate | --runstat | --runsta | --runst | --runs \
++  | --run | --ru | --r)
++    ac_prev=runstatedir ;;
++  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
++  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
++  | --run=* | --ru=* | --r=*)
++    runstatedir=$ac_optarg ;;
++
+   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+     ac_prev=sbindir ;;
+   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+@@ -1233,7 +1244,7 @@ fi
+ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+               datadir sysconfdir sharedstatedir localstatedir includedir \
+               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+-              libdir localedir mandir
++              libdir localedir mandir runstatedir
+ do
+   eval ac_val=\$$ac_var
+   # Remove trailing slashes.
+@@ -1386,6 +1397,7 @@ Fine tuning of the installation director
+   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
++  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
+   --libdir=DIR            object code libraries [EPREFIX/lib]
+   --includedir=DIR        C header files [PREFIX/include]
+   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+@@ -6607,6 +6619,19 @@ test -z "$deplibs_check_method" && depli
++plugin_option=
++plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
++for plugin in $plugin_names; do
++  plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin`
++  if test x$plugin_so = x$plugin; then
++    plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin`
++  fi
++  if test x$plugin_so != x$plugin; then
++    plugin_option="--plugin $plugin_so"
++    break
++  fi
++done
++
+ if test -n "$ac_tool_prefix"; then
+   # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ar; ac_word=$2
+@@ -6700,6 +6725,11 @@ else
+ fi
+ test -z "$AR" && AR=ar
++if test -n "$plugin_option"; then
++  if $AR --help 2>&1 | grep -q "\--plugin"; then
++    AR="$AR $plugin_option"
++  fi
++fi
+ test -z "$AR_FLAGS" && AR_FLAGS=cru
+@@ -6904,6 +6934,11 @@ else
+ fi
+ test -z "$RANLIB" && RANLIB=:
++if test -n "$plugin_option" && test "$RANLIB" != ":"; then
++  if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
++    RANLIB="$RANLIB $plugin_option"
++  fi
++fi
+@@ -11513,7 +11548,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11516 "configure"
++#line 11551 "configure"
+ #include "confdefs.h"
+ #if HAVE_DLFCN_H
+@@ -11619,7 +11654,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11622 "configure"
++#line 11657 "configure"
+ #include "confdefs.h"
+ #if HAVE_DLFCN_H
+@@ -11881,7 +11916,7 @@ else
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -11927,7 +11962,7 @@ else
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -11951,7 +11986,7 @@ rm -f core conftest.err conftest.$ac_obj
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -11996,7 +12031,7 @@ else
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -12020,7 +12055,7 @@ rm -f core conftest.err conftest.$ac_obj
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+@@ -12702,6 +12737,8 @@ main ()
+     if (*(data + i) != *(data3 + i))
+       return 14;
+   close (fd);
++  free (data);
++  free (data3);
+   return 0;
+ }
+ _ACEOF
+--- a/opcodes/configure
++++ b/opcodes/configure
+@@ -6533,6 +6533,19 @@ test -z "$deplibs_check_method" && depli
++plugin_option=
++plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
++for plugin in $plugin_names; do
++  plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin`
++  if test x$plugin_so = x$plugin; then
++    plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin`
++  fi
++  if test x$plugin_so != x$plugin; then
++    plugin_option="--plugin $plugin_so"
++    break
++  fi
++done
++
+ if test -n "$ac_tool_prefix"; then
+   # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ar; ac_word=$2
+@@ -6626,6 +6639,11 @@ else
+ fi
+ test -z "$AR" && AR=ar
++if test -n "$plugin_option"; then
++  if $AR --help 2>&1 | grep -q "\--plugin"; then
++    AR="$AR $plugin_option"
++  fi
++fi
+ test -z "$AR_FLAGS" && AR_FLAGS=cru
+@@ -6830,6 +6848,11 @@ else
+ fi
+ test -z "$RANLIB" && RANLIB=:
++if test -n "$plugin_option" && test "$RANLIB" != ":"; then
++  if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
++    RANLIB="$RANLIB $plugin_option"
++  fi
++fi
+@@ -11439,7 +11462,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11442 "configure"
++#line 11465 "configure"
+ #include "confdefs.h"
+ #if HAVE_DLFCN_H
+@@ -11545,7 +11568,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 11548 "configure"
++#line 11571 "configure"
+ #include "confdefs.h"
+ #if HAVE_DLFCN_H
diff --git a/patches/pgo+lto-3.diff b/patches/pgo+lto-3.diff
new file mode 100644 (file)
index 0000000..e82302f
--- /dev/null
@@ -0,0 +1,499 @@
+Subject: [PATCH 3/3] Support the PGO build for binutils+gdb
+
+Add the --enable-pgo-build[=lto] configure option.  When binutils+gdb
+is not built together with GCC, --enable-pgo-build enables the PGO build:
+
+1. First build with -fprofile-generate.
+2. Use "make maybe-check-*" to generate profiling data.
+3. Use "make clean" to remove the previous build.
+4. Rebuild with -fprofile-use.
+
+With --enable-pgo-build=lto, -flto=jobserver is used together with
+-fprofile-generate and -fprofile-use.  Add '+' to the command line for
+recursive make to support -flto=jobserver.
+
+NB: --enable-pgo-build=lto enables the PGO build with LTO while
+--enable-lto enables LTO support in toolchain.
+
+       PR binutils/26766
+       * Makefile.tpl (BUILD_CFLAGS): New.
+       (CFLAGS): Append $(BUILD_CFLAGS).
+       (CXXFLAGS): Likewise.
+       (PGO_BUILD_GEN_FLAGS_TO_PASS): New.
+       (PGO_BUILD_TRAINING_CFLAGS): Likewise.
+       (PGO_BUILD_TRAINING_CXXFLAGS): Likewise.
+       (PGO_BUILD_TRAINING_FLAGS_TO_PASS): Likewise.
+       (PGO_BUILD_USE_FLAGS_TO_PASS): Likewise.
+       (PGO-TRAINING-TARGETS): Likewise.
+       (PGO_BUILD_TRAINING): Likewise.
+       (all): Add '+' to the command line for recursive make.  Support
+       the PGO build.
+       * configure.ac: Add --enable-pgo-build[=lto].
+       AC_SUBST PGO_BUILD_GEN_CFLAGS, PGO_BUILD_USE_CFLAGS and
+       PGO_BUILD_LTO_CFLAGS.  Enable the PGO build in Makefile.
+       * Makefile.in: Regenerated.
+       * configure: Likewise.
+---
+ Makefile.in  |  58 ++++++++++++++++++++++++++++--
+ Makefile.tpl |  58 ++++++++++++++++++++++++++++--
+ configure    | 100 +++++++++++++++++++++++++++++++++++++++++++++++++--
+ configure.ac |  65 +++++++++++++++++++++++++++++++++
+ 4 files changed, 275 insertions(+), 6 deletions(-)
+
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -412,6 +412,45 @@ CXXFLAGS = @CXXFLAGS@
+ LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
+ GOCFLAGS = $(CFLAGS)
++# Pass additional PGO and LTO compiler options to the PGO build.
++BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS)
++override CFLAGS += $(BUILD_CFLAGS)
++override CXXFLAGS += $(BUILD_CFLAGS)
++
++# Additional PGO and LTO compiler options to generate profiling data
++# for the PGO build.
++PGO_BUILD_GEN_FLAGS_TO_PASS = \
++      PGO_BUILD_CFLAGS="@PGO_BUILD_GEN_CFLAGS@" \
++      PGO_BUILD_LTO_CFLAGS="@PGO_BUILD_LTO_CFLAGS@"
++
++# NB: Filter out any compiler options which may fail PGO training runs.
++PGO_BUILD_TRAINING_CFLAGS:= \
++      $(filter-out -Werror=%,$(CFLAGS))
++PGO_BUILD_TRAINING_CXXFLAGS:=\
++      $(filter-out -Werror=%,$(CXXFLAGS))
++PGO_BUILD_TRAINING_CFLAGS:= \
++      $(filter-out -Wall,$(PGO_BUILD_TRAINING_CFLAGS))
++PGO_BUILD_TRAINING_CXXFLAGS:= \
++      $(filter-out -Wall,$(PGO_BUILD_TRAINING_CXXFLAGS))
++PGO_BUILD_TRAINING_CFLAGS:= \
++      $(filter-out -specs=%,$(PGO_BUILD_TRAINING_CFLAGS))
++PGO_BUILD_TRAINING_CXXFLAGS:= \
++      $(filter-out -specs=%,$(PGO_BUILD_TRAINING_CXXFLAGS))
++PGO_BUILD_TRAINING_FLAGS_TO_PASS = \
++      CFLAGS_FOR_TARGET="$(PGO_BUILD_TRAINING_CFLAGS)" \
++      CXXFLAGS_FOR_TARGET="$(PGO_BUILD_TRAINING_CXXFLAGS)"
++
++# Additional PGO and LTO compiler options to use profiling data for the
++# PGO build.
++PGO_BUILD_USE_FLAGS_TO_PASS = \
++      PGO_BUILD_CFLAGS="@PGO_BUILD_USE_CFLAGS@" \
++      PGO_BUILD_LTO_CFLAGS="@PGO_BUILD_LTO_CFLAGS@"
++
++# PGO training targets for the PGO build.  FIXME: Add gold tests to
++# training.
++PGO-TRAINING-TARGETS = binutils gas gdb ld sim
++PGO_BUILD_TRAINING = $(addprefix maybe-check-,$(PGO-TRAINING-TARGETS))
++
+ CREATE_GCOV = create_gcov
+ TFLAGS =
+@@ -985,6 +1024,12 @@ configure-target:  \
+ # The target built for a native non-bootstrap build.
+ .PHONY: all
++
++# --enable-pgo-build enables the PGO build.
++# 1. First build with -fprofile-generate.
++# 2. Use "make maybe-check-*" to generate profiling data.
++# 3. Use "make clean" to remove the previous build.
++# 4. Rebuild with -fprofile-use.
+ all:
+ @if gcc-bootstrap
+       [ -f stage_final ] || echo stage3 > stage_final
+@@ -993,7 +1038,7 @@ all:
+       $(MAKE) $(RECURSE_FLAGS_TO_PASS) `cat stage_final`-bubble
+ @endif gcc-bootstrap
+       @: $(MAKE); $(unstage)
+-      @r=`${PWD_COMMAND}`; export r; \
++      +@r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ @if gcc-bootstrap
+       if [ -f stage_last ]; then \
+@@ -1001,7 +1046,16 @@ all:
+         $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target; \
+       else \
+ @endif gcc-bootstrap
+-        $(MAKE) $(RECURSE_FLAGS_TO_PASS) all-host all-target \
++        $(MAKE) $(RECURSE_FLAGS_TO_PASS) \
++              $(PGO_BUILD_GEN_FLAGS_TO_PASS) all-host all-target \
++@if pgo-build
++      && $(MAKE) $(RECURSE_FLAGS_TO_PASS) \
++              $(PGO_BUILD_TRAINING_FLAGS_TO_PASS) \
++              $(PGO_BUILD_TRAINING) \
++      && $(MAKE) $(RECURSE_FLAGS_TO_PASS) clean \
++      && $(MAKE) $(RECURSE_FLAGS_TO_PASS) \
++              $(PGO_BUILD_USE_FLAGS_TO_PASS) all-host all-target \
++@endif pgo-build
+ @if gcc-bootstrap
+           ; \
+       fi \
+--- a/Makefile.tpl
++++ b/Makefile.tpl
+@@ -415,6 +415,45 @@ CXXFLAGS = @CXXFLAGS@
+ LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
+ GOCFLAGS = $(CFLAGS)
++# Pass additional PGO and LTO compiler options to the PGO build.
++BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS)
++override CFLAGS += $(BUILD_CFLAGS)
++override CXXFLAGS += $(BUILD_CFLAGS)
++
++# Additional PGO and LTO compiler options to generate profiling data
++# for the PGO build.
++PGO_BUILD_GEN_FLAGS_TO_PASS = \
++      PGO_BUILD_CFLAGS="@PGO_BUILD_GEN_CFLAGS@" \
++      PGO_BUILD_LTO_CFLAGS="@PGO_BUILD_LTO_CFLAGS@"
++
++# NB: Filter out any compiler options which may fail PGO training runs.
++PGO_BUILD_TRAINING_CFLAGS:= \
++      $(filter-out -Werror=%,$(CFLAGS))
++PGO_BUILD_TRAINING_CXXFLAGS:=\
++      $(filter-out -Werror=%,$(CXXFLAGS))
++PGO_BUILD_TRAINING_CFLAGS:= \
++      $(filter-out -Wall,$(PGO_BUILD_TRAINING_CFLAGS))
++PGO_BUILD_TRAINING_CXXFLAGS:= \
++      $(filter-out -Wall,$(PGO_BUILD_TRAINING_CXXFLAGS))
++PGO_BUILD_TRAINING_CFLAGS:= \
++      $(filter-out -specs=%,$(PGO_BUILD_TRAINING_CFLAGS))
++PGO_BUILD_TRAINING_CXXFLAGS:= \
++      $(filter-out -specs=%,$(PGO_BUILD_TRAINING_CXXFLAGS))
++PGO_BUILD_TRAINING_FLAGS_TO_PASS = \
++      CFLAGS_FOR_TARGET="$(PGO_BUILD_TRAINING_CFLAGS)" \
++      CXXFLAGS_FOR_TARGET="$(PGO_BUILD_TRAINING_CXXFLAGS)"
++
++# Additional PGO and LTO compiler options to use profiling data for the
++# PGO build.
++PGO_BUILD_USE_FLAGS_TO_PASS = \
++      PGO_BUILD_CFLAGS="@PGO_BUILD_USE_CFLAGS@" \
++      PGO_BUILD_LTO_CFLAGS="@PGO_BUILD_LTO_CFLAGS@"
++
++# PGO training targets for the PGO build.  FIXME: Add gold tests to
++# training.
++PGO-TRAINING-TARGETS = binutils gas gdb ld sim
++PGO_BUILD_TRAINING = $(addprefix maybe-check-,$(PGO-TRAINING-TARGETS))
++
+ CREATE_GCOV = create_gcov
+ TFLAGS =
+@@ -719,6 +758,12 @@ configure-target: [+
+ # The target built for a native non-bootstrap build.
+ .PHONY: all
++
++# --enable-pgo-build enables the PGO build.
++# 1. First build with -fprofile-generate.
++# 2. Use "make maybe-check-*" to generate profiling data.
++# 3. Use "make clean" to remove the previous build.
++# 4. Rebuild with -fprofile-use.
+ all:
+ @if gcc-bootstrap
+       [ -f stage_final ] || echo stage3 > stage_final
+@@ -727,7 +772,7 @@ all:
+       $(MAKE) $(RECURSE_FLAGS_TO_PASS) `cat stage_final`-bubble
+ @endif gcc-bootstrap
+       @: $(MAKE); $(unstage)
+-      @r=`${PWD_COMMAND}`; export r; \
++      +@r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ @if gcc-bootstrap
+       if [ -f stage_last ]; then \
+@@ -735,7 +780,16 @@ all:
+         $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target; \
+       else \
+ @endif gcc-bootstrap
+-        $(MAKE) $(RECURSE_FLAGS_TO_PASS) all-host all-target \
++        $(MAKE) $(RECURSE_FLAGS_TO_PASS) \
++              $(PGO_BUILD_GEN_FLAGS_TO_PASS) all-host all-target \
++@if pgo-build
++      && $(MAKE) $(RECURSE_FLAGS_TO_PASS) \
++              $(PGO_BUILD_TRAINING_FLAGS_TO_PASS) \
++              $(PGO_BUILD_TRAINING) \
++      && $(MAKE) $(RECURSE_FLAGS_TO_PASS) clean \
++      && $(MAKE) $(RECURSE_FLAGS_TO_PASS) \
++              $(PGO_BUILD_USE_FLAGS_TO_PASS) all-host all-target \
++@endif pgo-build
+ @if gcc-bootstrap
+           ; \
+       fi \
+--- a/configure
++++ b/configure
+@@ -693,6 +693,9 @@ extra_mpfr_configure_flags
+ gmpinc
+ gmplibs
+ LIBDEBUGINFOD
++PGO_BUILD_LTO_CFLAGS
++PGO_BUILD_USE_CFLAGS
++PGO_BUILD_GEN_CFLAGS
+ do_compare
+ GNATMAKE
+ GNATBIND
+@@ -753,6 +756,7 @@ infodir
+ docdir
+ oldincludedir
+ includedir
++runstatedir
+ localstatedir
+ sharedstatedir
+ sysconfdir
+@@ -793,6 +797,7 @@ enable_libssp
+ enable_libstdcxx
+ enable_liboffloadmic
+ enable_bootstrap
++enable_pgo_build
+ with_debuginfod
+ with_mpc
+ with_mpc_include
+@@ -917,6 +922,7 @@ datadir='${datarootdir}'
+ sysconfdir='${prefix}/etc'
+ sharedstatedir='${prefix}/com'
+ localstatedir='${prefix}/var'
++runstatedir='${localstatedir}/run'
+ includedir='${prefix}/include'
+ oldincludedir='/usr/include'
+ docdir='${datarootdir}/doc/${PACKAGE}'
+@@ -1169,6 +1175,15 @@ do
+   | -silent | --silent | --silen | --sile | --sil)
+     silent=yes ;;
++  -runstatedir | --runstatedir | --runstatedi | --runstated \
++  | --runstate | --runstat | --runsta | --runst | --runs \
++  | --run | --ru | --r)
++    ac_prev=runstatedir ;;
++  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
++  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
++  | --run=* | --ru=* | --r=*)
++    runstatedir=$ac_optarg ;;
++
+   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+     ac_prev=sbindir ;;
+   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+@@ -1306,7 +1321,7 @@ fi
+ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+               datadir sysconfdir sharedstatedir localstatedir includedir \
+               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+-              libdir localedir mandir
++              libdir localedir mandir runstatedir
+ do
+   eval ac_val=\$$ac_var
+   # Remove trailing slashes.
+@@ -1466,6 +1481,7 @@ Fine tuning of the installation director
+   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
++  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
+   --libdir=DIR            object code libraries [EPREFIX/lib]
+   --includedir=DIR        C header files [PREFIX/include]
+   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+@@ -1524,6 +1540,8 @@ Optional Features:
+   --enable-liboffloadmic=ARG
+                           build liboffloadmic [ARG={no,host,target}]
+   --enable-bootstrap      enable bootstrapping [yes if native build]
++  --enable-pgo-build[=lto]
++                          enable the PGO build
+   --disable-isl-version-check
+                           disable check for isl version
+   --enable-lto            enable link time optimization support
+@@ -2833,7 +2851,7 @@ host_libs="intl libiberty opcodes bfd re
+ # binutils, gas and ld appear in that order because it makes sense to run
+ # "make check" in that particular order.
+ # If --enable-gold is used, "gold" may replace "ld".
+-host_tools="texinfo flex bison binutils gas ld fixincludes gcc cgen sid sim gdb gdbserver gprof etc expect dejagnu m4 utils guile fastjar gnattools libcc1 gotools"
++host_tools="flex bison binutils gas ld fixincludes gcc cgen sid sim gdb gdbserver gprof etc expect dejagnu m4 utils guile fastjar gnattools libcc1 gotools"
+ # these libraries are built for the target environment, and are built after
+ # the host libraries and the host tools (which may be a cross compiler)
+@@ -5472,6 +5490,91 @@ if test "$enable_bootstrap:$GXX" = "yes:
+   CXX="$CXX -std=gnu++98"
+ fi
++# Check whether --enable-pgo-build was given.
++if test "${enable_pgo_build+set}" = set; then :
++  enableval=$enable_pgo_build; enable_pgo_build=$enableval
++else
++  enable_pgo_build=no
++fi
++
++
++# Issue errors and warnings for invalid/strange PGO build combinations.
++case "$have_compiler:$host:$target:$enable_pgo_build" in
++  *:*:*:no) ;;
++
++  # Allow the PGO build only if we aren't building a compiler and
++  # we are in a native configuration.
++  no:$build:$build:yes | no:$build:$build:lto) ;;
++
++  # Disallow the PGO bootstrap if we are building a compiler.
++  yes:*:*:yes | yes:*:*:lto)
++    as_fn_error $? "cannot perform the PGO bootstrap when building a compiler" "$LINENO" 5 ;;
++
++  *)
++    as_fn_error $? "invalid option for --enable-pgo-build" "$LINENO" 5
++    ;;
++esac
++
++if test "$enable_pgo_build" != "no"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -fprofile-generate" >&5
++$as_echo_n "checking whether the compiler supports -fprofile-generate... " >&6; }
++  old_CFLAGS="$CFLAGS"
++  PGO_BUILD_GEN_CFLAGS="-fprofile-generate"
++  CFLAGS="$CFLAGS $PGO_BUILD_CFLAGS"
++
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++int foo;
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++
++else
++  PGO_BUILD_GEN_CFLAGS=
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++  CFLAGS="$old_CFLAGS"
++  if test -n "$PGO_BUILD_GEN_CFLAGS"; then
++    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++$as_echo "yes" >&6; }
++    PGO_BUILD_USE_CFLAGS="-fprofile-use"
++  else
++    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++    as_fn_error $? "cannot perform the PGO build without -fprofile-generate" "$LINENO" 5
++  fi
++
++  if test "$enable_pgo_build" = "lto"; then
++    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -flto=jobserver" >&5
++$as_echo_n "checking whether the compiler supports -flto=jobserver... " >&6; }
++    old_CFLAGS="$CFLAGS"
++    PGO_BUILD_LTO_CFLAGS="-flto=jobserver"
++    CFLAGS="$CFLAGS $PGO_BUILD_LTO_CFLAGS"
++    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++int foo;
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++
++else
++  PGO_BUILD_LTO_CFLAGS=
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++    CFLAGS="$old_CFLAGS"
++    if test -n "$PGO_BUILD_LTO_CFLAGS"; then
++      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++$as_echo "yes" >&6; }
++    else
++      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: LTO is disabled for the PGO build" >&5
++$as_echo "$as_me: WARNING: LTO is disabled for the PGO build" >&2;}
++    fi
++  fi
++fi
++
++
++
++
+ # Used for setting $lt_cv_objdir
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+ $as_echo_n "checking for objdir... " >&6; }
+@@ -5509,7 +5612,6 @@ have_gmp=no
+ # Check for debuginfod
+-
+ # Enable debuginfod
+ # Check whether --with-debuginfod was given.
+@@ -7466,6 +7568,12 @@ extrasub_target="$extrasub_target
+ /^@unless /d
+ /^@endunless /d"
++if test "$enable_pgo_build" != "no"; then
++  extrasub_build="$extrasub_build
++/^@if pgo-build\$/d
++/^@endif pgo-build\$/d"
++fi
++
+ # Create the serialization dependencies.  This uses a temporary file.
+ # Check whether --enable-serial-configure was given.
+--- a/configure.ac
++++ b/configure.ac
+@@ -1376,6 +1376,65 @@ if test "$enable_bootstrap:$GXX" = "yes:
+   CXX="$CXX -std=gnu++98"
+ fi
++AC_ARG_ENABLE([pgo-build],
++[AS_HELP_STRING([--enable-pgo-build[[=lto]]],
++              [enable the PGO build])],
++[enable_pgo_build=$enableval],
++[enable_pgo_build=no])
++
++# Issue errors and warnings for invalid/strange PGO build combinations.
++case "$have_compiler:$host:$target:$enable_pgo_build" in
++  *:*:*:no) ;;
++
++  # Allow the PGO build only if we aren't building a compiler and
++  # we are in a native configuration.
++  no:$build:$build:yes | no:$build:$build:lto) ;;
++
++  # Disallow the PGO bootstrap if we are building a compiler.
++  yes:*:*:yes | yes:*:*:lto)
++    AC_MSG_ERROR([cannot perform the PGO bootstrap when building a compiler]) ;;
++
++  *)
++    AC_MSG_ERROR([invalid option for --enable-pgo-build])
++    ;;
++esac
++
++if test "$enable_pgo_build" != "no"; then
++  AC_MSG_CHECKING([whether the compiler supports -fprofile-generate])
++  old_CFLAGS="$CFLAGS"
++  PGO_BUILD_GEN_CFLAGS="-fprofile-generate"
++  CFLAGS="$CFLAGS $PGO_BUILD_CFLAGS"
++  AC_COMPILE_IFELSE([AC_LANG_SOURCE([int foo;])],,
++                  [PGO_BUILD_GEN_CFLAGS=])
++  CFLAGS="$old_CFLAGS"
++  if test -n "$PGO_BUILD_GEN_CFLAGS"; then
++    AC_MSG_RESULT([yes])
++    PGO_BUILD_USE_CFLAGS="-fprofile-use"
++  else
++    AC_MSG_RESULT([no])
++    AC_MSG_ERROR([cannot perform the PGO build without -fprofile-generate])
++  fi
++
++  if test "$enable_pgo_build" = "lto"; then
++    AC_MSG_CHECKING([whether the compiler supports -flto=jobserver])
++    old_CFLAGS="$CFLAGS"
++    PGO_BUILD_LTO_CFLAGS="-flto=jobserver"
++    CFLAGS="$CFLAGS $PGO_BUILD_LTO_CFLAGS"
++    AC_COMPILE_IFELSE([AC_LANG_SOURCE([int foo;])],,
++                    [PGO_BUILD_LTO_CFLAGS=])
++    CFLAGS="$old_CFLAGS"
++    if test -n "$PGO_BUILD_LTO_CFLAGS"; then
++      AC_MSG_RESULT([yes])
++    else
++      AC_MSG_RESULT([no])
++      AC_MSG_WARN([LTO is disabled for the PGO build])
++    fi
++  fi
++fi
++AC_SUBST(PGO_BUILD_GEN_CFLAGS)
++AC_SUBST(PGO_BUILD_USE_CFLAGS)
++AC_SUBST(PGO_BUILD_LTO_CFLAGS)
++
+ # Used for setting $lt_cv_objdir
+ _LT_CHECK_OBJDIR
+@@ -2851,6 +2910,12 @@ extrasub_target="$extrasub_target
+ /^@unless /d
+ /^@endunless /d"
++if test "$enable_pgo_build" != "no"; then
++  extrasub_build="$extrasub_build
++/^@if pgo-build\$/d
++/^@endif pgo-build\$/d"
++fi
++
+ # Create the serialization dependencies.  This uses a temporary file.
+ AC_ARG_ENABLE([serial-configure],
diff --git a/patches/pgo+lto-check-ignore.diff b/patches/pgo+lto-check-ignore.diff
new file mode 100644 (file)
index 0000000..8082506
--- /dev/null
@@ -0,0 +1,44 @@
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -1049,7 +1049,7 @@ all:
+         $(MAKE) $(RECURSE_FLAGS_TO_PASS) \
+               $(PGO_BUILD_GEN_FLAGS_TO_PASS) all-host all-target \
+ @if pgo-build
+-      && $(MAKE) $(RECURSE_FLAGS_TO_PASS) \
++      && $(MAKE) -i $(RECURSE_FLAGS_TO_PASS) \
+               $(PGO_BUILD_TRAINING_FLAGS_TO_PASS) \
+               $(PGO_BUILD_TRAINING) \
+       && $(MAKE) $(RECURSE_FLAGS_TO_PASS) clean \
+--- a/Makefile.tpl
++++ b/Makefile.tpl
+@@ -783,7 +783,7 @@ all:
+         $(MAKE) $(RECURSE_FLAGS_TO_PASS) \
+               $(PGO_BUILD_GEN_FLAGS_TO_PASS) all-host all-target \
+ @if pgo-build
+-      && $(MAKE) $(RECURSE_FLAGS_TO_PASS) \
++      && $(MAKE) -i $(RECURSE_FLAGS_TO_PASS) \
+               $(PGO_BUILD_TRAINING_FLAGS_TO_PASS) \
+               $(PGO_BUILD_TRAINING) \
+       && $(MAKE) $(RECURSE_FLAGS_TO_PASS) clean \
+--- a/configure
++++ b/configure
+@@ -5547,7 +5547,7 @@ $as_echo "no" >&6; }
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -flto=jobserver" >&5
+ $as_echo_n "checking whether the compiler supports -flto=jobserver... " >&6; }
+     old_CFLAGS="$CFLAGS"
+-    PGO_BUILD_LTO_CFLAGS="-flto=jobserver"
++    PGO_BUILD_LTO_CFLAGS="-flto=jobserver -ffat-lto-objects"
+     CFLAGS="$CFLAGS $PGO_BUILD_LTO_CFLAGS"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+--- a/configure.ac
++++ b/configure.ac
+@@ -1418,7 +1418,7 @@ if test "$enable_pgo_build" != "no"; the
+   if test "$enable_pgo_build" = "lto"; then
+     AC_MSG_CHECKING([whether the compiler supports -flto=jobserver])
+     old_CFLAGS="$CFLAGS"
+-    PGO_BUILD_LTO_CFLAGS="-flto=jobserver"
++    PGO_BUILD_LTO_CFLAGS="-flto=jobserver -ffat-lto-objects"
+     CFLAGS="$CFLAGS $PGO_BUILD_LTO_CFLAGS"
+     AC_COMPILE_IFELSE([AC_LANG_SOURCE([int foo;])],,
+                     [PGO_BUILD_LTO_CFLAGS=])
diff --git a/patches/pr-ld-16428.diff b/patches/pr-ld-16428.diff
new file mode 100644 (file)
index 0000000..85f21dd
--- /dev/null
@@ -0,0 +1,158 @@
+# DP: Proposed patch for PR ld/16428, disallow -shared/-pie, -shared/-static, -pie/-static.
+
+2014-01-10  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/16428
+       * ld.texinfo: Updated for -static/-non_shared change.
+       * ldlex.h (option_values): Add OPTION_STATIC.
+       * lexsup.c (ld_options): Use OPTION_STATIC for -static/-non_shared.
+       (parse_args): Handle OPTION_STATIC.  Disallow -shared and -pie,
+       -shared and -static, -pie and -static.
+
+2014-01-10  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/16428
+       * ld-elf/pr16428a.d: New file.
+       * ld-elf/pr16428b.d: Likewise.
+       * ld-elf/pr16428c.d: Likewise.
+       * ld-elf/pr16428d.d: Likewise.
+
+diff --git a/ld/ld.texinfo b/ld/ld.texinfo
+index ae3d568..bddfdfe 100644
+--- a/ld/ld.texinfo
++++ b/ld/ld.texinfo
+@@ -1204,11 +1204,11 @@ platforms for which shared libraries are supported.  The different
+ variants of this option are for compatibility with various systems.  You
+ may use this option multiple times on the command line: it affects
+ library searching for @option{-l} options which follow it.  This
+-option also implies @option{--unresolved-symbols=report-all}.  This
+-option can be used with @option{-shared}.  Doing so means that a
+-shared library is being created but that all of the library's external
+-references must be resolved by pulling in entries from static
+-libraries.
++option also implies @option{--unresolved-symbols=report-all}.
++@option{-Bstatic} and @option{-dn} can be used with @option{-shared}.
++Doing so means that a shared library is being created but that all of
++the library's external references must be resolved by pulling in entries
++from static libraries.
+ @kindex -Bsymbolic
+ @item -Bsymbolic
+diff --git a/ld/ldlex.h b/ld/ldlex.h
+index 99f4282..6f237dc 100644
+--- a/ld/ldlex.h
++++ b/ld/ldlex.h
+@@ -49,6 +49,7 @@ enum option_values
+   OPTION_NO_WARN_SEARCH_MISMATCH,
+   OPTION_NOINHIBIT_EXEC,
+   OPTION_NON_SHARED,
++  OPTION_STATIC,
+   OPTION_NO_WHOLE_ARCHIVE,
+   OPTION_OFORMAT,
+   OPTION_RELAX,
+diff --git a/ld/lexsup.c b/ld/lexsup.c
+index 2f71750..a366613 100644
+--- a/ld/lexsup.c
++++ b/ld/lexsup.c
+@@ -269,9 +269,9 @@ static const struct ld_option ld_options[] =
+     '\0', NULL, N_("Do not link against shared libraries"), ONE_DASH },
+   { {"dn", no_argument, NULL, OPTION_NON_SHARED},
+     '\0', NULL, NULL, ONE_DASH },
+-  { {"non_shared", no_argument, NULL, OPTION_NON_SHARED},
++  { {"non_shared", no_argument, NULL, OPTION_STATIC},
+     '\0', NULL, NULL, ONE_DASH },
+-  { {"static", no_argument, NULL, OPTION_NON_SHARED},
++  { {"static", no_argument, NULL, OPTION_STATIC},
+     '\0', NULL, NULL, ONE_DASH },
+   { {"Bsymbolic", no_argument, NULL, OPTION_SYMBOLIC},
+     '\0', NULL, N_("Bind global references locally"), ONE_DASH },
+@@ -523,6 +523,7 @@ parse_args (unsigned argc, char **argv)
+   struct option *really_longopts;
+   int last_optind;
+   enum report_method how_to_report_unresolved_symbols = RM_GENERATE_ERROR;
++  bfd_boolean seen_pie = FALSE, seen_shared = FALSE, seen_static = FALSE;
+   shortopts = (char *) xmalloc (OPTION_COUNT * 3 + 2);
+   longopts = (struct option *)
+@@ -707,6 +708,8 @@ parse_args (unsigned argc, char **argv)
+       case OPTION_CALL_SHARED:
+         input_flags.dynamic = TRUE;
+         break;
++      case OPTION_STATIC:
++        seen_static = TRUE;
+       case OPTION_NON_SHARED:
+         input_flags.dynamic = FALSE;
+         break;
+@@ -1087,6 +1090,7 @@ parse_args (unsigned argc, char **argv)
+       case OPTION_SHARED:
+         if (config.has_shared)
+           {
++            seen_shared = TRUE;
+             link_info.shared = TRUE;
+             /* When creating a shared library, the default
+                behaviour is to ignore any unresolved references.  */
+@@ -1101,6 +1105,7 @@ parse_args (unsigned argc, char **argv)
+       case OPTION_PIE:
+         if (config.has_shared)
+           {
++            seen_pie = TRUE;
+             link_info.shared = TRUE;
+             link_info.pie = TRUE;
+           }
+@@ -1445,6 +1450,16 @@ parse_args (unsigned argc, char **argv)
+       }
+     }
++  if (seen_shared)
++    {
++      if (seen_pie)
++      einfo (_("%P%F: -shared and -pie are incompatible\n"));
++      if (seen_static)
++      einfo (_("%P%F: -shared and -static are incompatible\n"));
++    }
++  if (seen_pie && seen_static)
++    einfo (_("%P%F: -pie and -static are incompatible\n"));
++
+   while (ingroup)
+     {
+       lang_leave_group ();
+diff --git a/ld/testsuite/ld-elf/pr16428a.d b/ld/testsuite/ld-elf/pr16428a.d
+new file mode 100644
+index 0000000..8f5e833
+--- /dev/null
++++ b/ld/testsuite/ld-elf/pr16428a.d
+@@ -0,0 +1,4 @@
++#source: start.s
++#ld: -shared -static
++#target: *-*-linux* *-*-gnu* *-*-nacl*
++#error: -shared and -static are incompatible
+diff --git a/ld/testsuite/ld-elf/pr16428b.d b/ld/testsuite/ld-elf/pr16428b.d
+new file mode 100644
+index 0000000..f4ccba0
+--- /dev/null
++++ b/ld/testsuite/ld-elf/pr16428b.d
+@@ -0,0 +1,4 @@
++#source: start.s
++#ld: -shared -non_shared
++#target: *-*-linux* *-*-gnu* *-*-nacl*
++#error: -shared and -static are incompatible
+diff --git a/ld/testsuite/ld-elf/pr16428c.d b/ld/testsuite/ld-elf/pr16428c.d
+new file mode 100644
+index 0000000..747e8da
+--- /dev/null
++++ b/ld/testsuite/ld-elf/pr16428c.d
+@@ -0,0 +1,4 @@
++#source: start.s
++#ld: -shared -pie
++#target: *-*-linux* *-*-gnu* *-*-nacl*
++#error: -shared and -pie are incompatible
+diff --git a/ld/testsuite/ld-elf/pr16428d.d b/ld/testsuite/ld-elf/pr16428d.d
+new file mode 100644
+index 0000000..6e7a915
+--- /dev/null
++++ b/ld/testsuite/ld-elf/pr16428d.d
+@@ -0,0 +1,4 @@
++#source: start.s
++#ld: -pie -static
++#target: *-*-linux* *-*-gnu* *-*-nacl*
++#error: -pie and -static are incompatible
diff --git a/patches/series b/patches/series
new file mode 100644 (file)
index 0000000..a3b2874
--- /dev/null
@@ -0,0 +1,39 @@
+branch-updates.diff
+#branch-version.diff
+branch-no-development.diff
+001_ld_makefile_patch.patch
+002_gprof_profile_arcs.patch
+003_gprof_see_also_monitor.patch
+006_better_file_error.patch
+013_bash_in_ld_testsuite.patch
+#014_hash_style-both.patch
+128_ppc64_powerpc_biarch.patch
+129_multiarch_libpath.patch
+130_gold_disable_testsuite_build.patch
+131_ld_bootstrap_testsuite.patch
+135_bfd_soversion.patch
+136_bfd_pic.patch
+157_ar_scripts_with_tilde.patch
+#158_ld_system_root.patch
+161_gold_dummy_zoption.diff
+
+# only applied for GFDL builds
+164_ld_doc_remove_xref.diff
+
+gprof-build.diff
+aarch64-libpath.diff
+#pr-ld-16428.diff
+mips64-default-n64.diff
+gold-mips.diff
+gold-no-keep-files-mapped.diff
+
+# trunk backports
+pgo+lto-1.diff
+pgo+lto-2.diff
+pgo+lto-3.diff
+
+# experimental ...
+#infinity-notes.diff
+#binutils-no-development.diff
+libctf-soname.diff
+pgo+lto-check-ignore.diff
diff --git a/rules b/rules
new file mode 100755 (executable)
index 0000000..53ec8a9
--- /dev/null
+++ b/rules
@@ -0,0 +1,1966 @@
+#!/usr/bin/make -f
+# debian/rules file - for binutils (2.29)
+# Based on sample debian/rules file - for GNU Hello (1.3).
+# Copyright 1994,1995 by Ian Jackson.
+# Copyright 1998-2007 James Troup.
+# Portions Copyright 2008-2019 Canonical Ltd.
+# Portions Copyright 2008-2019 Matthias Klose.
+# I hereby give you perpetual unlimited permission to copy,
+# modify and relicense this file, provided that you do not remove
+# my name from the file itself.  (I assert my moral right of
+# paternity under the Copyright, Designs and Patents Act 1988.)
+# This file may have to be extensively modified
+
+###############################################################################
+
+vafilt = $(subst $(2)=,,$(filter $(2)=%,$(1)))
+DPKG_VARS := $(shell dpkg-architecture)
+DEB_BUILD_GNU_TYPE     ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_GNU_TYPE)
+DEB_HOST_ARCH          ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH)
+DEB_HOST_GNU_CPU       ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_CPU)
+DEB_HOST_GNU_TYPE      ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_TYPE)
+DEB_HOST_MULTIARCH     ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_MULTIARCH)
+
+ifeq (,$(filter $(distrelease),lenny etch squeeze wheezy jessie))
+  ifeq ($(DEB_HOST_GNU_TYPE),i586-linux-gnu)
+    DEB_BUILD_GNU_TYPE = i686-linux-gnu
+    DEB_HOST_GNU_CPU   = i686
+    DEB_HOST_GNU_TYPE  = i686-linux-gnu
+    TRIPLET_SYMLINK    = i586-linux-gnu
+  else ifeq ($(DEB_HOST_GNU_TYPE),i586-kfreebsd-gnu)
+    DEB_BUILD_GNU_TYPE = i686-kfreebsd-gnu
+    DEB_HOST_GNU_CPU   = i686
+    DEB_HOST_GNU_TYPE  = i686-kfreebsd-gnu
+    TRIPLET_SYMLINK    = i586-kfreebsd-gnu
+  else ifeq ($(DEB_HOST_GNU_TYPE),i586-gnu)
+    DEB_BUILD_GNU_TYPE = i686-gnu
+    DEB_HOST_GNU_CPU   = i686
+    DEB_HOST_GNU_TYPE  = i686-gnu
+    TRIPLET_SYMLINK    = i586-gnu
+  endif
+endif
+
+p_bin = binutils
+p_com = $(p_bin)-common
+p_lib = lib$(p_bin)
+p_nat = $(p_bin)-$(subst _,-,$(DEB_HOST_GNU_TYPE))
+p_dev = $(p_bin)-dev
+p_mul = $(p_bin)-multiarch
+p_mdev = $(p_mul)-dev
+p_doc = $(p_bin)-doc
+p_hppa64 = $(p_bin)-hppa64-linux-gnu
+p_src = $(p_bin)-source
+
+p_ctf = libctf0
+p_ctfn = libctf-nobfd0
+
+p_hst = $(p_bin)-for-host
+p_bld = $(p_bin)-for-build
+
+p_cross = $(p_bin)-$(subst _,-,$(TARGET))
+
+# version used for p_bld/p_hst dependencies
+min_ver = 2.30-2
+
+distribution := $(shell lsb_release -is)
+distrelease  := $(shell lsb_release -cs)
+ifeq ($(distrelease),n/a)
+  distrelease     := sid
+endif
+
+# BACKPORT is used for cross builds for a -source package not conflicting
+# with the source package of the native package.
+ifeq ($(BACKPORT),true)
+  p_src = $(p_bin)-$(VERSION)-source
+else
+  p_src = $(p_bin)-source
+endif
+
+pwd   := $(shell pwd)
+d     = debian/tmp
+d_bin = $(d)
+d_com = debian/$(p_com)
+d_lib = debian/$(p_lib)
+d_nat = debian/$(p_nat)
+d_dev = debian/$(p_dev)
+d_mul = debian/$(p_mul)
+d_mdev = debian/$(p_mdev)
+d_doc = debian/$(p_doc)
+d_hppa64 = debian/$(p_hppa64)
+d_src = debian/$(p_src)
+
+d_ctf = debian/$(p_ctf)
+d_ctfn = debian/$(p_ctfn)
+
+d_hst = debian/$(p_hst)
+d_bld = debian/$(p_bld)
+
+d_cross = debian/$(p_cross)
+
+install_dir    = install -d -m 755
+install_file   = install -m 644
+install_script = install -m 755
+install_binary = install -m 755 -s --strip-program="$(STRIP)"
+
+NATIVE_ARCHS ?= amd64 i386 arm64 armhf armel ppc64el s390x
+NATIVE_ARCHS += alpha hppa ia64 m68k powerpc ppc64 \
+       riscv64 sh4 sparc64 x32
+NATIVE_ARCHS += hurd-i386 kfreebsd-amd64 kfreebsd-i386
+#NATIVE_ARCHS += nios2 or1k s390 sparc
+
+# don't generate the control file entries for native packages which are never
+# built. Only valid for Ubuntu. The autopkg testers get confused otherwise
+ifneq ($(distribution),Ubuntu)
+  NATIVE_ARCHS += mips mipsel mips64 mips64el
+  NATIVE_ARCHS += mipsn32 mipsn32el
+  NATIVE_ARCHS += mipsn32r6 mipsn32r6el mipsr6 mipsr6el mips64r6 mips64r6el
+endif
+
+src_name := $(shell dpkg-parsechangelog -S Source)
+ifeq ($(src_name),binutils)
+  with_native  = yes
+  with_cross   = yes
+  same_source  = yes
+  ifeq (,$(CROSS_ARCHS))
+    ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386 x32))
+      CROSS_ARCHS =  s390x ppc64el arm64 armhf armel
+      CROSS_ARCHS += alpha hppa m68k
+      CROSS_ARCHS += powerpc ppc64 sh4 sparc64
+      CROSS_ARCHS += ia64 riscv64
+      CROSS_ARCHS += kfreebsd-amd64 kfreebsd-i386 hurd-i386
+      ifneq (,$(filter $(DEB_HOST_ARCH), i386 x32))
+        CROSS_ARCHS += amd64
+      endif
+      ifneq (,$(filter $(DEB_HOST_ARCH), amd64 x32))
+        CROSS_ARCHS += i386
+      endif
+      ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386))
+        CROSS_ARCHS += x32
+      endif
+    else ifeq ($(DEB_HOST_ARCH),arm64)
+      CROSS_ARCHS = armel armhf amd64 i386 ppc64el riscv64 s390x x32
+    else ifeq ($(DEB_HOST_ARCH),ppc64)
+      CROSS_ARCHS = ppc64el
+    else ifeq ($(DEB_HOST_ARCH),ppc64el)
+      CROSS_ARCHS = powerpc ppc64 amd64 i386 x32 arm64 armel armhf riscv64 s390x
+    else
+      CROSS_ARCHS =
+    endif
+  else
+    # c-t-b passes this one ...
+    CROSS_ARCHS := $(filter-out $(DEB_HOST_ARCH),$(CROSS_ARCHS))
+  endif
+else ifeq ($(src_name),binutils-mipsen)
+  with_native  =
+  with_cross   = yes
+  same_source  =
+  ifeq (,$(CROSS_ARCHS))
+    ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386 x32 arm64 ppc64el))
+      CROSS_ARCHS = mips mipsel mips64el mips64 mipsn32 mipsn32el
+      CROSS_ARCHS += mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el
+    else ifneq (,$(filter $(DEB_HOST_ARCH), arm64 ppc64el))
+      CROSS_ARCHS = mipsel mips64el
+    else
+      CROSS_ARCHS =
+    endif
+  else
+    # c-t-b passes this one ...
+    CROSS_ARCHS := $(filter-out $(DEB_HOST_ARCH),$(CROSS_ARCHS))
+  endif
+else
+  # binutils-ports ...
+  with_cross   = yes
+  ifeq (,$(CROSS_ARCHS))
+    CROSS_ARCHS ?= m68k sh4 mips64 mips64el
+  endif
+endif
+
+ifneq (,$(filter $(DEB_HOST_ARCH),amd64 i386 x32 hppa))
+  with_hppa64 = yes
+endif
+
+with_multiarch := yes
+
+# disabled: no build-needed restriction used in the autopkg test
+ifeq (0,1)
+# only build the basic package when running the autopkg tests
+ifneq (,$(ADT_TEST_TRIGGERS))
+  # c-t-b sets CROSS_ARCHS which has to be respected, can't unset it here
+  #CROSS_ARCHS :=
+  with_hppa64 :=
+  with_multiarch :=
+endif
+endif
+
+HOST_ARCHS_armhf = amd64 i386 x32 arm64 ppc64el
+HOST_ARCHS_armel = amd64 i386 x32 arm64 ppc64el
+HOST_ARCHS_arm64 = amd64 i386 x32 ppc64el
+HOST_ARCHS_powerpc = amd64 i386 x32 ppc64el
+HOST_ARCHS_ppc64el = amd64 i386 x32 ppc64 arm64
+HOST_ARCHS_s390x = amd64 i386 x32 arm64 ppc64el
+HOST_ARCHS_amd64 = arm64 i386 ppc64el x32
+HOST_ARCHS_i386 = amd64 arm64 ppc64el x32
+HOST_ARCHS_ia64 = amd64 i386 x32
+HOST_ARCHS_riscv64 = amd64 i386 x32 arm64 ppc64el
+
+HOST_ARCHS_alpha = amd64 i386 x32
+HOST_ARCHS_hppa = amd64 i386 x32
+HOST_ARCHS_m68k = amd64 i386 x32
+HOST_ARCHS_ppc64 = amd64 i386 x32 ppc64el
+HOST_ARCHS_sh4 = amd64 i386 x32
+HOST_ARCHS_sparc64 = amd64 i386 x32
+HOST_ARCHS_x32 = amd64 arm64 i386 ppc64el
+
+HOST_ARCHS_mips = amd64 i386 x32
+HOST_ARCHS_mipsel = amd64 i386 x32 arm64 ppc64el
+HOST_ARCHS_mipsn32 = amd64 i386 x32
+HOST_ARCHS_mipsn32el = amd64 i386 x32
+HOST_ARCHS_mips64 = amd64 i386 x32
+HOST_ARCHS_mips64el = amd64 i386 x32 arm64 ppc64el
+
+HOST_ARCHS_mipsr6 = amd64 i386 x32
+HOST_ARCHS_mipsr6el = amd64 i386 x32
+HOST_ARCHS_mipsn32r6 = amd64 i386 x32
+HOST_ARCHS_mipsn32r6el = amd64 i386 x32
+HOST_ARCHS_mips64r6 = amd64 i386 x32
+HOST_ARCHS_mips64r6el = amd64 i386 x32
+
+HOST_ARCHS_kfreebsd-amd64 = amd64 i386 x32
+HOST_ARCHS_kfreebsd-i386 = amd64 i386 x32
+HOST_ARCHS_hurd-i386 = amd64 i386 x32
+
+CROSS_ARCH     = $(subst .,,$(suffix $@))
+_gnu_type      = $(shell dpkg-architecture -a$(1) -qDEB_HOST_GNU_TYPE -f 2>/dev/null)
+_multiarch     = $(shell dpkg-architecture -a$(1) -qDEB_HOST_MULTIARCH -f 2>/dev/null)
+CROSS_GNU_TYPE = $(subst i586,i686,$(call _gnu_type,$(CROSS_ARCH)))
+P_CROSS                = binutils-$(subst _,-,$(CROSS_GNU_TYPE))
+D_CROSS                = debian/binutils-$(subst _,-,$(CROSS_GNU_TYPE))
+
+# If $(TARGET) is not set, try reading debian/target
+ifeq (,$(TARGET))
+  ifneq (,$(wildcard debian/target))
+    TARGET := $(shell cat debian/target 2>/dev/null)
+  endif
+endif
+
+ifneq (,$(TARGET))
+  with_native  =
+  with_cross   =
+  same_source  =
+  # Support TARGET both as Debian architecture specification (e.g. arm),
+  # and as the target name (e.g. arm-linux-gnu).
+  try_convert := $(shell dpkg-architecture -f -a$(TARGET) -qDEB_HOST_GNU_TYPE 2>/dev/null)
+  ifneq ($(try_convert),)
+    override TARGET := $(try_convert)
+  endif
+  DPKG_TARGET_VARS := $(shell dpkg-architecture -f -t$(TARGET))
+  DEB_TARGET_MULTIARCH = $(call vafilt,$(DPKG_TARGET_VARS),DEB_HOST_MULTIARCH)
+  DEB_TARGET_ARCH      = $(call vafilt,$(DPKG_TARGET_VARS),DEB_HOST_ARCH)
+  for_target           = dpkg-architecture -f -t$(TARGET) -c
+else
+  DEB_TARGET_MULTIARCH = $(DEB_HOST_MULTIARCH)
+  DEB_TARGET_ARCH      = $(DEB_HOST_ARCH)
+  for_target           =
+endif
+
+ifneq (,$(TARGET))
+  APPEND_TOOLLIBDIR=yes
+  export APPEND_TOOLLIBDIR
+endif
+
+ifeq (,$(DEB_HOST_MULTIARCH))
+  ifeq ($(DEB_HOST_ARCH),i386)
+    DEB_HOST_MULTIARCH = i386-linux-gnu
+  else
+    DEB_HOST_MULTIARCH = $(DEB_HOST_GNU_TYPE)
+  endif
+endif
+
+SHELL  = /bin/bash
+
+gold_targets = \
+       amd64 arm64 armel armhf i386 \
+       mips mipsel mipsn32 mipsn32el mips64 mips64el \
+       mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el \
+       powerpc ppc64 ppc64el sparc sparc64 s390x \
+       x32 kfreebsd-amd64 kfreebsd-i386 hurd-i386
+
+ifneq (,$(filter $(DEB_HOST_ARCH), $(gold_targets)))
+  with_gold = yes
+  gold_provides = -Vgold:Provides=binutils-gold
+endif
+
+CFLAGS = -g -O2
+CXXFLAGS = -g -O2
+LDFLAGS =
+CROSS := $(DEB_HOST_GNU_TYPE)-
+CC     = $(CROSS)gcc
+CXX    = $(CROSS)g++
+STRIP  = $(CROSS)strip -R .comment -R .note
+STRIP_LTO = $(CROSS)strip -R .gnu.lto_* -R .gnu.debuglto_* -N __gnu_lto_slim -N __gnu_lto_v1
+
+ifeq (,$(findstring nopgo,$(DEB_BUILD_OPTIONS)))
+  ifeq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH))
+    #ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386 x32))
+      CONF_PGO = --enable-pgo-build=lto
+    #endif
+  endif
+endif
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+  CFLAGS = -g -O0
+  CONF_PGO =
+endif
+
+# this outputs 0 or 1 depending on whether a macro appears in the *default* cpp
+# -dM -P output; this is used to test the toolchain *default* configuration
+check_cpp = $(shell $(CROSS)cpp -dM -P /dev/null | grep -q '^\#define $(1)' && echo 1 || echo 0)
+
+# testsuite doesn't expect to be built with -mthumb
+# TODO if the testsuite is only broken with Thumb-2 (and not with "Thumb-1"),
+# we should test for __thumb2__ instead
+ifneq (,$(filter $(DEB_HOST_ARCH), armel armhf))
+  ifeq ($(call check_cpp,__thumb__),1)
+    CFLAGS += -marm
+  endif
+endif
+
+SPACE = $(EMPTY) $(EMPTY)
+COMMA = ,
+CHANGELOG_VARS := $(shell dpkg-parsechangelog | \
+        sed -n 's/ /_/g;/^[^_]/s/^\([^:]*\):_\(.*\)/\1=\2/p')
+
+DEB_VERSION    := $(call vafilt,$(CHANGELOG_VARS),Version)
+DEB_SVERSION   := $(shell echo $(DEB_VERSION) | sed 's/+b[0-9][0-9]*$$//')
+DEB_UPSTREAM   := $(firstword $(subst -,$(SPACE),$(DEB_VERSION)))
+
+VERSION                := $(shell sed -n 's/^ *VERSION=\(.*\)/\1/p' bfd/configure | head -1 | tr -d \')
+DATE           := $(shell sed -n 's/.* \([0-9]*\)$$/\1/p' bfd/version.h)
+ifneq (,$(DATE))
+#  DATE_EXT    := .$(DATE)
+endif
+BUILD_DATE := $(shell dpkg-parsechangelog | sed -n -e 's/^Date: //p')
+BUILD_DAY  := $(shell date -Idate -u -d "$(BUILD_DATE)")
+
+is_rc = yes
+is_rc =
+
+ifneq ($(DEB_UPSTREAM),$(VERSION)$(DATE_EXT))
+  $(error upstream ($(VERSION)$(DATE_EXT)) and debian ($(DEB_UPSTREAM)) version mismatch)
+endif
+
+SINGLE_VERSION= -system
+MULTI_VERSION = -multiarch
+HPPA64_VERSION= -hppa64
+
+ifeq (,$(filter $(distrelease),squeeze wheezy precise trusty))
+  DPKG_DEV = dpkg-dev (>= 1.17.11),
+endif
+ifeq (,$(filter $(distrelease),squeeze wheezy stretch precise trusty xenial zesty artful))
+  DPKG_DEV = dpkg-dev (>= 1.19.0.5),
+endif
+
+NJOBS =
+# Support parallel=<n> in DEB_BUILD_OPTIONS (see #209008)
+ifneq (,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS))))
+  NJOBS := -j $(subst parallel=,,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS))))
+endif
+ifneq (,$(findstring nogold,$(DEB_BUILD_OPTIONS)))
+  with_gold = disabled in DEB_BUILD_OPTIONS
+endif
+ifneq (,$(findstring nomult,$(DEB_BUILD_OPTIONS)))
+  with_multiarch = disabled in DEB_BUILD_OPTIONS
+endif
+ifneq (,$(findstring nocross,$(DEB_BUILD_OPTIONS)))
+  with_cross = disabled in DEB_BUILD_OPTIONS
+endif
+ifneq (,$(findstring nohppa,$(DEB_BUILD_OPTIONS)))
+  with_hppa64 = disabled in DEB_BUILD_OPTIONS
+endif
+
+# PF is the installation prefix for the package without the leading slash.
+# It's "usr" for gcc releases, so use this if not explicitly set
+ifeq ($(PF),)
+  PF = usr
+endif
+
+# Don't include docs with GFDL invariant sections
+GFDL_INVARIANT_FREE := yes
+ifeq ($(distribution),Ubuntu)
+  GFDL_INVARIANT_FREE := no
+endif
+
+gfdl_toplevel_texinfo_files = \
+       bfd/doc/bfd.texinfo \
+       bfd/doc/bfdint.texi \
+       ld/ldint.texinfo
+
+gfdl_generated_files = \
+       bfd/doc/bfd.info
+
+programs = addr2line ar as c++filt elfedit gprof ld ld.bfd
+programs += nm objcopy objdump ranlib readelf size strings strip
+ifeq ($(with_gold),yes)
+programs += gold ld.gold dwp
+endif
+
+########################################
+
+CONFARGS = \
+       --enable-shared \
+       --enable-plugins \
+       --enable-threads \
+       --with-system-zlib \
+       --prefix=/$(PF) \
+       --enable-deterministic-archives \
+       --disable-compressed-debug-sections \
+       --enable-new-dtags \
+       --disable-x86-used-note \
+       --build=$(DEB_BUILD_GNU_TYPE) \
+       --host=$(DEB_HOST_GNU_TYPE) \
+       --with-pkgversion="GNU Binutils for $(distribution)"
+
+# not yet ready for GCC 4.9
+CONFARGS += --disable-werror
+
+DEB_TARGET_MULTIARCH32_amd64           = i386-linux-gnu
+DEB_TARGET_MULTIARCHX32_amd64          = x86_64-linux-gnux32
+
+DEB_TARGET_MULTIARCH32_x32             = i386-linux-gnu
+DEB_TARGET_MULTIARCH64_x32             = x86_64-linux-gnu
+
+DEB_TARGET_MULTIARCH32_powerpc         = powerpc-linux-gnu
+
+DEB_TARGET_MULTIARCH32_s390x           = s390-linux-gnu
+
+DEB_TARGET_MULTIARCH32_sparc64         = sparc-linux-gnu
+
+DEB_TARGET_MULTIARCH32_kfreebsd-amd64  = i386-kfreebsd-gnu
+
+DEB_TARGET_MULTIARCH64_i386            = x86_64-linux-gnu
+DEB_TARGET_MULTIARCHX32_i386           = x86_64-linux-gnux32
+
+DEB_TARGET_MULTIARCH64_powerpc         = powerpc64-linux-gnu
+
+DEB_TARGET_MULTIARCH64_sparc           = sparc64-linux-gnu
+
+DEB_TARGET_MULTIARCH64_s390            = s390x-linux-gnu
+
+DEB_TARGET_MULTIARCH64_kfreebsd-i386   = x86_64-kfreebsd-gnu
+
+DEB_TARGET_MULTIARCH64_mips            = mips64-linux-gnuabi64
+DEB_TARGET_MULTIARCHN32_mips           = mips64-linux-gnuabin32
+
+DEB_TARGET_MULTIARCH64_mipsel          = mips64el-linux-gnuabi64
+DEB_TARGET_MULTIARCHN32_mipsel         = mips64el-linux-gnuabin32
+
+DEB_TARGET_MULTIARCH64_mipsn32         = mips64-linux-gnuabi64
+DEB_TARGET_MULTIARCH32_mipsn32         = mips-linux-gnu
+
+DEB_TARGET_MULTIARCH64_mipsn32el       = mips64el-linux-gnuabi64
+DEB_TARGET_MULTIARCH32_mipsn32el       = mipsel-linux-gnu
+
+DEB_TARGET_MULTIARCH32_mips64          = mips-linux-gnu
+DEB_TARGET_MULTIARCHN32_mips64         = mips64-linux-gnuabin32
+
+DEB_TARGET_MULTIARCH32_mips64el                = mipsel-linux-gnu
+DEB_TARGET_MULTIARCHN32_mips64el       = mips64el-linux-gnuabin32
+
+DEB_TARGET_MULTIARCH64_mipsr6          = mipsisa64r6-linux-gnuabi64
+DEB_TARGET_MULTIARCHN32_mipsr6 = mipsisa64r6-linux-gnuabin32
+
+DEB_TARGET_MULTIARCH64_mipsr6el        = mipsisa64r6el-linux-gnuabi64
+DEB_TARGET_MULTIARCHN32_mipsr6el       = mipsisa64r6el-linux-gnuabin32
+
+DEB_TARGET_MULTIARCH64_mipsn32r6       = mipsisa64r6-linux-gnuabi64
+DEB_TARGET_MULTIARCH32_mipsn32r6       = mipsisa32r6-linux-gnu
+
+DEB_TARGET_MULTIARCH64_mipsn32r6el     = mipsisa64r6el-linux-gnuabi64
+DEB_TARGET_MULTIARCH32_mipsn32r6el     = mipsisa32r6el-linux-gnu
+
+DEB_TARGET_MULTIARCH32_mips64r6                = mipsisa32r6-linux-gnu
+DEB_TARGET_MULTIARCHN32_mips64r6       = mipsisa64r6-linux-gnuabin32
+
+DEB_TARGET_MULTIARCH32_mips64r6el      = mipsisa32r6el-linux-gnu
+DEB_TARGET_MULTIARCHN32_mips64r6el     = mipsisa64r6el-linux-gnuabin32
+
+DEB_TARGET_MULTIARCH32_arm64           = aarch64_ilp32-linux-gnu
+
+SET_MULTIARCH_ENV = \
+       DEB_TARGET_MULTIARCH=$(call _multiarch,$1) \
+       $(if $(DEB_TARGET_MULTIARCH32_$1) ,DEB_TARGET_MULTIARCH32=$(DEB_TARGET_MULTIARCH32_$1)) \
+       $(if $(DEB_TARGET_MULTIARCH64_$1) ,DEB_TARGET_MULTIARCH64=$(DEB_TARGET_MULTIARCH64_$1)) \
+       $(if $(DEB_TARGET_MULTIARCHX32_$1),DEB_TARGET_MULTIARCHX32=$(DEB_TARGET_MULTIARCHX32_$1)) \
+       $(if $(DEB_TARGET_MULTIARCHN32_$1),DEB_TARGET_MULTIARCHN32=$(DEB_TARGET_MULTIARCHN32_$1))
+
+CONFARGS_TARGET_sparc          = --enable-targets=sparc64-linux-gnu
+CONFLICTS_TARGET_sparc         = -VextraConflicts="libc6-dev-sparc64 (<< 2.2.5-7)"
+
+CONFARGS_TARGET_sparc64                = --enable-targets=sparc-linux-gnu
+CONFLICTS_TARGET_sparc64       = -VextraConflicts="libc6-dev-sparc64 (<< 2.2.5-7)"
+
+CONFARGS_TARGET_powerpc                = --enable-targets=powerpc64-linux-gnu
+
+CONFARGS_TARGET_ppc64          = --enable-targets=powerpc-linux-gnu
+
+CONFARGS_TARGET_ppc64el                = --enable-targets=powerpc-linux-gnu
+
+CONFARGS_TARGET_s390           = --enable-targets=s390x-linux-gnu
+
+CONFARGS_TARGET_s390x          = --enable-targets=s390-linux-gnu
+
+CONFARGS_TARGET_amd64          = --enable-targets=x86_64-linux-gnux32,x86_64-pep
+
+CONFARGS_TARGET_i386           = --enable-targets=x86_64-linux-gnu,x86_64-linux-gnux32,x86_64-pep
+
+CONFARGS_TARGET_x32            = --enable-targets=x86_64-linux-gnu,x86_64-pep
+
+CONFLICTS_TARGET_amd64         = -VextraConflicts="binutils-mingw-w64-i686 (<< 2.23.52.20130612-1+3), binutils-mingw-w64-x86-64 (<< 2.23.52.20130612-1+3)"
+CONFLICTS_TARGET_i386 = $(CONFLICTS_TARGET_amd64)
+CONFLICTS_TARGET_x32  = $(CONFLICTS_TARGET_amd64)
+
+CONFARGS_TARGET_kfreebsd-i386  = --enable-targets=x86_64-kfreebsd-gnu
+
+CONFARGS_TARGET_mips           = --enable-targets=mips64-linux-gnuabi64,mips64-linux-gnuabin32
+
+CONFARGS_TARGET_mipsel         = --enable-targets=mips64el-linux-gnuabi64,mips64el-linux-gnuabin32 --enable-mips-fix-loongson3-llsc=yes
+
+CONFARGS_TARGET_mipsn32                = --enable-targets=mips64-linux-gnuabi64,mips-linux-gnu
+
+CONFARGS_TARGET_mipsn32el      = --enable-targets=mips64el-linux-gnuabi64,mipsel-linux-gnu --enable-mips-fix-loongson3-llsc=yes
+
+CONFARGS_TARGET_mips64         = --enable-targets=mips64-linux-gnuabin32,mips-linux-gnu
+
+CONFARGS_TARGET_mips64el       = --enable-targets=mips64el-linux-gnuabin32,mipsel-linux-gnu --enable-mips-fix-loongson3-llsc=yes
+
+CONFARGS_TARGET_mipsr6 = --enable-targets=mipsisa64r6-linux-gnuabi64,mipsisa64r6-linux-gnuabin32
+
+CONFARGS_TARGET_mipsr6el       = --enable-targets=mipsisa64r6el-linux-gnuabi64,mipsisa64r6el-linux-gnuabin32
+
+CONFARGS_TARGET_mipsn32r6      = --enable-targets=mipsisa64r6-linux-gnuabi64,mipsisa32r6-linux-gnu
+
+CONFARGS_TARGET_mipsn32r6el    = --enable-targets=mipsisa64r6el-linux-gnuabi64,mipsisa32r6el-linux-gnu
+
+CONFARGS_TARGET_mips64r6       = --enable-targets=mipsisa64r6-linux-gnuabin32,mipsisa32r6-linux-gnu
+
+CONFARGS_TARGET_mips64r6el     = --enable-targets=mipsisa64r6el-linux-gnuabin32,mipsisa32r6el-linux-gnu
+
+CONFARGS_TARGET_aarch64                = --enable-targets=aarch64_be-linux-gnu
+
+with_check := yes
+ifneq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
+  # override buildd admins to run the testsuite anyway ...
+  ifeq (,$(filter $(DEB_HOST_ARCH), m68k sh4))
+    with_check := disabled through DEB_BUILD_OPTIONS
+  endif
+endif
+#with_check := disabled for this upload
+ifneq (,$(filter $(DEB_HOST_ARCH), armel armhf mips mipsel sparc))
+  ignore_regressions := regressions ignored on architecture $(DEB_HOST_ARCH)
+endif
+ignore_regressions := regressions ignored on architecture $(DEB_HOST_ARCH)
+
+with_strip := yes
+ifneq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
+       with_strip := disabled through DEB_BUILD_OPTIONS
+endif
+
+source_files = $(addprefix $(shell basename $(pwd))/, \
+                $(filter-out stamps .pc CVS debian builddir-% test-summary%, $(wildcard *)))
+
+###############################################################################
+
+update-patches:
+       export QUILT_PATCHES=$(CURDIR)/debian/patches; \
+       export QUILT_REFRESH_ARGS="--no-timestamps --no-index -pab"; \
+       export QUILT_DIFF_ARGS="--no-timestamps --no-index -pab"; \
+       while quilt push; do quilt refresh; done
+
+###############################################################################
+
+################
+# clean target #
+################
+
+clean:
+       $(checkdir)
+       rm -rf stamps
+       rm -rf builddir-*
+       rm -rf stamps
+       find . -name \*.gmo -o -name \*~ -o -name \*.info ! -name sysroff.info | xargs -r rm -f
+       rm -f test-summary*
+       rm -rf $(d_bin) $(d_com) $(d_lib) $(d_lib)-dbg $(d_nat) $(d_nat)-dbg \
+         $(d_hst) $(d_dev) $(d_mul) $(d_mul)-dbg $(d_mdev) $(d_doc) \
+         $(d_hppa64) $(d_hppa64)-dbg $(d_src) $(d_bld) \
+         $(d_ctf) $(d_ctf)-dbg $(d_ctfn) $(d_ctfn)-dbg
+       $(foreach ca,$(CROSS_ARCHS), rm -rf debian/binutils-$(shell echo $(call _gnu_type,$(ca)) | sed 's/_/-/g;s/i586/i686/'){,-dbg}; )
+       rm -rf debian/tmp debian/files* debian/substvars
+       rm -f debian/*.orig debian/*.rej
+       rm -rf $(d_cross) debian/files debian/substvars
+ifneq (,$(TARGET))
+       rm -rf builddir-$(TARGET)
+endif
+       for i in debian/*.in; do \
+           case "$$i" in debian/control*.in) continue; esac; \
+           rm -f $${i%*.in}; \
+       done
+
+       rm -f *-stamp
+
+###############################################################################
+
+stamps/control: debian/control.in $(if $(TARGET),debian/control.cross.in) $(if $(filter yes, $(with_cross)),debian/control.cross.in)
+ifneq (,$(TARGET))
+       sed -n -e 's/@dpkg_dev@/$(DPKG_DEV)/;/^Package: binutils-for-build$$/q;p' \
+               < debian/control.in > debian/control
+       sed -e "s/@target@/$$(echo -n $(TARGET) | sed s/_/-/g)/" \
+               -e "s/@host_archs@/any/" \
+               -e 's/@binutils_alt_triplet@//' \
+               < debian/control.cross.in >> debian/control
+else
+       sed -e 's/@dpkg_dev@/$(DPKG_DEV)/' \
+               debian/control.in > debian/control
+       $(foreach ca,$(NATIVE_ARCHS), \
+         sed \
+           -e 's/@host_archs@/$(ca)$(if $(and $(filter yes,$(with_cross)),$(filter $(ca),$(DEB_HOST_ARCH) $(CROSS_ARCHS))), $(HOST_ARCHS_$(ca)))/g' \
+           -e 's/@target@/$(shell dpkg-architecture -a$(ca) -qDEB_HOST_GNU_TYPE 2>/dev/null | sed 's/_/-/g;s/i586/i686/')/g' \
+           -e 's/@binutils_alt_triplet@/$(if $(findstring i386,$(ca)),binutils-$(shell dpkg-architecture -a$(ca) -qDEB_HOST_GNU_TYPE 2>/dev/null | sed 's/i686/i586/g'))/g' \
+           debian/control.cross.in \
+           | $(if $(filter yes,$(same_source)), grep -v '^Built-Using', cat) \
+           >> debian/control; \
+       )
+endif
+       @mkdir -p stamps
+       touch $@
+
+#######################
+# single-arch targets #
+#######################
+
+SINGLE_CONFARGS = $(CONFARGS) $(CONFARGS_TARGET_$(DEB_HOST_ARCH))
+ifeq ($(with_gold),yes)
+       SINGLE_CONFARGS += --enable-ld=default --enable-gold
+endif
+SINGLE_CONFARGS += $(CONF_PGO)
+
+stamps/configure-single:
+       $(checkdir)
+       env
+       @echo BEGIN $@
+ifeq ($(with_check),yes)
+       @if echo "spawn true" | /usr/bin/expect -f - >/dev/null; then \
+         : ; \
+       else \
+         echo "expect is failing on your system with the above error, which means the"; \
+         echo "testsuite will fail.  Please resolve the above issues and retry the build."; \
+         echo "-----------------------------------------------------------------------------"; \
+         exit 1; \
+       fi
+endif
+
+       rm -rf stamps/configure-single builddir-single
+       mkdir builddir-single
+       cd builddir-single && env CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" \
+               $(call SET_MULTIARCH_ENV,$(DEB_HOST_ARCH)) \
+               ../configure --with-sysroot=/ \
+                       --libdir=/$(PF)/lib/$(DEB_HOST_MULTIARCH) \
+                       $(SINGLE_CONFARGS)
+       @mkdir -p stamps
+       touch $@
+
+stamps/build-single: stamps/configure-single
+       $(checkdir)
+       @echo BEGIN $@
+       env BFD_SOVER_EXT="$(SINGLE_VERSION)" CTF_SOVER_EXT="" \
+         $(call SET_MULTIARCH_ENV,$(DEB_HOST_ARCH)) \
+           $(MAKE) $(NJOBS) -C builddir-single \
+               LDFLAGS="-Wl,-z,relro"
+ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
+ifeq ($(with_check),yes)
+       -env MAKE="$(MAKE) VERSION=$(SINGLE_VERSION)" \
+         $(call SET_MULTIARCH_ENV,$(DEB_HOST_ARCH)) \
+           $(MAKE) -C builddir-single -k check
+       cat builddir-single/binutils/binutils.sum \
+           builddir-single/gas/testsuite/gas.sum \
+           builddir-single/ld/ld.sum >> $(pwd)/test-summary
+       set -e; \
+       tsi=test-summary-installed; \
+       rm -f $$tsi; \
+       if [ -f /usr/share/doc/binutils/test-summary-$(DEB_HOST_ARCH).gz ]; then \
+         zcat /usr/share/doc/binutils/test-summary-$(DEB_HOST_ARCH).gz > $$tsi; \
+       elif [ -f /usr/share/doc/binutils/test-summary.gz ]; then \
+         zcat /usr/share/doc/binutils/test-summary.gz > $$tsi; \
+       elif [ -f /usr/share/doc/binutils/test-summary ]; then \
+         cat /usr/share/doc/binutils/test-summary > $$tsi; \
+       fi; \
+       if [ ! -f $$tsi ]; then \
+         echo "No test results available for the installed binutils version"; \
+       elif [ -x /usr/bin/python3 ]; then \
+         echo "Test results, compared with installed binutils:"; \
+         if python3 debian/test-suite-compare.py $$tsi test-summary; then \
+           : ; \
+         elif [ -n "$(ignore_regressions)" ]; then \
+           echo "$(ignore_regressions)"; \
+         else \
+           false; \
+         fi; \
+       else \
+         echo "python3 not installed, not comparing test results."; \
+       fi
+endif
+endif
+       touch $@
+
+
+###############################################################################
+
+#####################
+# multiarch targets #
+#####################
+
+multiarch_targets = \
+       aarch64-linux-gnu \
+       aarch64_be-linux-gnu \
+       alpha-linux-gnu \
+       arm-linux-gnueabi \
+       hppa-linux-gnu \
+       i686-linux-gnu \
+       ia64-linux-gnu \
+       m32r-linux-gnu \
+       m68k-linux-gnu \
+       m68k-rtems \
+       mips-linux-gnu \
+       mipsel-linux-gnu \
+       mips64-linux-gnuabin32 \
+       mips64el-linux-gnuabin32 \
+       mips64-linux-gnu \
+       mips64el-linux-gnu \
+       mipsisa32r6-linux-gnu \
+       mipsisa32r6el-linux-gnu \
+       mipsisa64r6-linux-gnuabin32 \
+       mipsisa64r6el-linux-gnuabin32 \
+       mipsisa64r6-linux-gnuabi64 \
+       mipsisa64r6el-linux-gnuabi64 \
+       powerpc-linux-gnu \
+       powerpc64-linux-gnu \
+       powerpc64le-linux-gnu \
+       riscv64-linux-gnu \
+       s390-linux-gnu \
+       s390x-linux-gnu \
+       sh-linux-gnu \
+       sparc-linux-gnu \
+       sparc64-linux-gnu \
+       x86_64-linux-gnu \
+       x86_64-linux-gnux32 \
+       m32r-linux-gnu \
+       x86_64-pep
+
+# try to work around #758830
+ifeq ($(DEB_HOST_ARCH),sh4)
+  multiarch_targets := $(filter-out hppa-linux-gnu, $(multiarch_targets))
+endif
+
+stamps/configure-multi:
+       $(checkdir)
+       @echo BEGIN $@
+       rm -rf stamps/configure-multi \
+               builddir-multi
+       mkdir builddir-multi
+       cd builddir-multi \
+           && env CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" \
+               $(call SET_MULTIARCH_ENV,$(DEB_HOST_ARCH)) \
+               ../configure $(CONFARGS) $(CONF_PGO) \
+                 --with-sysroot=/ \
+                 --libdir=/$(PF)/lib/$(DEB_HOST_MULTIARCH) \
+                 --enable-targets=$(subst $(SPACE),$(COMMA),$(multiarch_targets))
+       @mkdir -p stamps
+       touch $@
+
+stamps/build-multi: stamps/configure-multi
+       $(checkdir)
+       @echo BEGIN $@
+       env BFD_SOVER_EXT="$(MULTI_VERSION)" CTF_SOVER_EXT="$(MULTI_VERSION)" \
+         $(call SET_MULTIARCH_ENV,$(DEB_HOST_ARCH)) \
+         $(MAKE) $(NJOBS) -C builddir-multi \
+               LDFLAGS="-Wl,-z,relro"
+       touch $@
+
+###############################################################################
+
+#################
+# cross targets #
+#################
+
+CROSS_CONFARGS = $(CONFARGS) --enable-initfini-array
+ifeq ($(with_gold),yes)
+       CROSS_CONFARGS += --enable-ld=default --enable-gold
+endif
+
+stamps/configure.%:
+       $(checkdir)
+       @echo BEGIN $@
+       rm -rf $@ builddir-$*
+       mkdir builddir-$*
+       cd builddir-$* \
+           && env CC="$(CC)" CXX="$(CXX)" \
+              $(call SET_MULTIARCH_ENV,$*) \
+               ../configure \
+                 $(CROSS_CONFARGS) \
+                 $(CONFARGS_TARGET_$(*)) \
+                 --with-sysroot=/ \
+                 --libdir=/$(PF)/lib/$(call _multiarch,$*) \
+                 $(if $(filter $*, $(gold_targets)),--enable-ld=default --enable-gold,--disable-gold) \
+                 --target=$(CROSS_GNU_TYPE)
+       @mkdir -p stamps
+       touch $@
+
+stamps/build.%: stamps/configure.%
+       $(checkdir)
+       @echo BEGIN $@
+       env BFD_SOVER_EXT="-$*" CTF_SOVER_EXT="-$*" \
+         $(call SET_MULTIARCH_ENV,$*) \
+         $(MAKE) -C builddir-$* $(NJOBS) \
+               CFLAGS="$(CFLAGS)" \
+               CXXFLAGS="$(CXXFLAGS)" \
+               LDFLAGS="$(LDFLAGS) -Wl,-z,relro"
+ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
+ifeq ($(with_check),yes)
+       -env MAKE="$(MAKE) VERSION=$(VERSION)-$*" \
+         $(call SET_MULTIARCH_ENV,$*) \
+           $(MAKE) -C builddir-$* -k check
+       cat builddir-$*/binutils/binutils.sum \
+           builddir-$*/gas/testsuite/gas.sum \
+           builddir-$*/ld/ld.sum >> test-summary-$*
+       set -e; \
+       tsi=test-summary-$*-installed; \
+       rm -f $$tsi; \
+       if [ -f /usr/share/doc/$(P_CROSS)/test-summary.gz ]; then \
+         zcat /usr/share/doc/$(P_CROSS)/test-summary.gz > $$tsi; \
+       elif [ -f /usr/share/doc/binutils/test-summary-$*.gz ]; then \
+         zcat /usr/share/doc/binutils/test-summary-$*.gz > $$tsi; \
+       fi; \
+       if [ ! -f $$tsi ]; then \
+         echo "No test results available for the installed $(P_CROSS) version"; \
+       elif [ -x /usr/bin/python3 ]; then \
+         echo "Test results, compared with installed binutils:"; \
+         if python3 debian/test-suite-compare.py $$tsi test-summary-$*; then \
+           : ; \
+         elif [ -n "$(ignore_regressions)" ]; then \
+           echo "$(ignore_regressions)"; \
+         else \
+           false; \
+         fi; \
+       else \
+         echo "python3 not installed, not comparing test results."; \
+       fi
+endif
+endif
+       touch $@
+
+stamps/install.%: stamps/build.%
+       $(checkdir)
+       @echo BEGIN $@
+       rm -rf $(D_CROSS)
+       env MAKE="$(MAKE) VERSION=$(VERSION)-$*" \
+         $(MAKE) -C builddir-$* DESTDIR=$(CURDIR)/$(D_CROSS) install
+
+       rm -rf \
+               $(D_CROSS)/$(PF)/share/info \
+               $(D_CROSS)/$(PF)/share/locale
+
+       mkdir -p $(D_CROSS)/$(PF)/lib/$(DEB_HOST_MULTIARCH)
+       set -e; \
+       d_src=$(D_CROSS)/$(PF)/$(DEB_HOST_GNU_TYPE)/$(CROSS_GNU_TYPE)/lib; \
+       d_dst=$(D_CROSS)/$(PF)/lib/$(DEB_HOST_MULTIARCH); \
+       for lib in libbfd libopcodes; do \
+         so=$$(basename $$(echo $$d_src/$$lib*$**.so)); \
+         mv $$d_src/$$so $$d_dst/.; \
+         ln -sf ../../../lib/$(DEB_HOST_MULTIARCH)/$$so $$d_src/$$lib.so; \
+         mv $$d_src/$$lib.a $$d_dst/$${lib}-$(VERSION)-$*.a; \
+         ln -sf ../../../lib/$(DEB_HOST_MULTIARCH)/$$lib-$(VERSION)-$*.a $$d_src/$$lib.a; \
+       done
+       mv $(D_CROSS)/$(PF)/lib/$(call _multiarch,$*)/libctf*.so.* \
+         $(D_CROSS)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/.
+
+       : # replace hard links with soft links
+       for i in $(D_CROSS)/usr/$(CROSS_GNU_TYPE)/bin/*; do \
+         ln -sf ../../bin/$(CROSS_GNU_TYPE)-$$(basename $$i) $$i; \
+       done
+       ln -sf $(CROSS_GNU_TYPE)-ld.bfd $(D_CROSS)/usr/bin/$(CROSS_GNU_TYPE)-ld
+
+       $(call strip_package, $(P_CROSS),$(D_CROSS),.)
+       chmod ugo-x $(D_CROSS)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/*.so
+       chmod ugo-x $(D_CROSS)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/*.so.*
+
+       : # Get rid of .la files since libtool obviously has no idea about transient paths
+       rm -f $(D_CROSS)/$(PF)/$(DEB_HOST_GNU_TYPE)/$(CROSS_GNU_TYPE)/lib/*.la
+
+       for i in $(D_CROSS)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/*.a; do \
+         echo "lto-stripping $(basename $$i) ..."; \
+         $(STRIP_LTO) $$i; \
+         if which strip-nondeterminism >/dev/null 2>&1; then \
+           echo "strip-nondeterminism $(basename $$i) ..."; \
+           strip-nondeterminism $$i; \
+         fi; \
+       done
+
+       : # no spu toolchain
+       rm -f $(D_CROSS)/$(PF)/bin/*embedspu
+
+       : # Remove windows related manpages
+       rm -f $(D_CROSS)/$(PF)/share/man/man1/$(CROSS_GNU_TYPE)-{dlltool,nlmconv,windmc,windres}.1
+
+       : # symlink man pages
+       mv $(D_CROSS)/$(PF)/share/man/man1/$(CROSS_GNU_TYPE)-ld.1 \
+         $(D_CROSS)/$(PF)/share/man/man1/$(CROSS_GNU_TYPE)-ld.bfd.1
+       gzip -9n $(D_CROSS)/$(PF)/share/man/man1/*
+       for i in $(D_CROSS)/$(PF)/share/man/man1/*; do \
+         b=$$(basename $$i | sed 's/$(CROSS_GNU_TYPE)-//'); \
+         ln -sf $$b $$i; \
+       done
+       ln -sf $(CROSS_GNU_TYPE)-ld.bfd.1.gz \
+         $(D_CROSS)/$(PF)/share/man/man1/$(CROSS_GNU_TYPE)-ld.1.gz
+
+       : # gold man pages
+       $(if $(filter $*, $(gold_targets)), \
+         ln -sf ld.gold.1.gz $(D_CROSS)/$(PF)/share/man/man1/$(CROSS_GNU_TYPE)-ld.gold.1.gz; \
+         ln -sf dwp.1.gz $(D_CROSS)/$(PF)/share/man/man1/$(CROSS_GNU_TYPE)-dwp.1.gz; \
+       )
+
+       : # Don't want /usr/<arch>-linux to exist in any package, don't ship development files
+       rm -rf $(D_CROSS)/$(PF)/$(DEB_HOST_GNU_TYPE)
+
+       rm -f $(D_CROSS)/$(PF)/lib/*.a $(D_CROSS)/$(PF)/lib/*/*.a
+       rm -f $(D_CROSS)/$(PF)/lib/*.la $(D_CROSS)/$(PF)/lib/*/*.la
+       rm -f $(D_CROSS)/$(PF)/$(DEB_HOST_GNU_TYPE)/$(CROSS_GNU_TYPE)/lib/*.a
+       rm -f $(D_CROSS)/$(PF)/$(DEB_HOST_GNU_TYPE)/$(CROSS_GNU_TYPE)/lib/libctf*
+       rm -f $(D_CROSS)/$(PF)/lib/$(CROSS_GNU_TYPE)/libctf*
+       rm -f $(D_CROSS)/$(PF)/include/ctf*.h
+
+       : # remove RPATH
+       chrpath -k -d $$(file $(D_CROSS)/usr/bin/*|awk -F: '/ ELF/ {print $$1}')
+
+ifneq (,$(filter $(distrelease),lenny etch squeeze wheezy jessie stretch))
+       : # temporary i586-* symlinks for stretch
+       compat=$$(echo $(CROSS_GNU_TYPE) | sed 's/i686/i586/'); \
+       case "$(CROSS_GNU_TYPE)" in i686-*) \
+         for i in $(programs); do \
+           ln -sf $(CROSS_GNU_TYPE)-$$i $(D_CROSS)/$(PF)/bin/$$compat-$$i; \
+           ln -sf $(CROSS_GNU_TYPE)-$$i.1.gz $(D_CROSS)/$(PF)/share/man/man1/$$compat-$$i.1.gz; \
+         done; \
+       esac
+endif
+       touch $@
+
+###############################################################################
+
+#################
+# hppa64 target #
+#################
+
+stamps/configure-hppa64:
+       $(checkdir)
+       @echo BEGIN $@
+       rm -rf stamps/configure-hppa64 \
+               builddir-hppa64
+       mkdir builddir-hppa64
+       cd builddir-hppa64 \
+           && env CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" ../configure \
+               $(filter-out --enable-targets=%, $(CONFARGS)) \
+               --libdir=/$(PF)/lib/hppa64-linux-gnu \
+               --target=hppa64-linux-gnu
+       @mkdir -p stamps
+       touch $@
+
+stamps/build-hppa64: stamps/configure-hppa64
+       $(checkdir)
+       @echo BEGIN $@
+       env BFD_SOVER_EXT="$(HPPA64_VERSION)" CTF_SOVER_EXT="$(HPPA64_VERSION)" \
+         $(MAKE) $(NJOBS) -C builddir-hppa64 \
+           LDFLAGS="-Wl,-z,relro"
+       touch $@
+
+###############################################################################
+
+pre-build:
+#ifneq (,$(filter $(DEB_HOST_ARCH), armel powerpc))
+#      @echo Build it ...
+#else
+#      @echo Explicitely fail the build for architecture $(DEB_HOST_ARCH)
+#      false
+#endif
+
+build_stamps = stamps/build-single
+ifeq ($(with_multiarch),yes)
+       build_stamps += stamps/build-multi
+endif
+ifeq ($(with_hppa64),yes)
+       build_stamps += stamps/build-hppa64
+endif
+ifeq ($(with_cross),yes)
+       build_stamps += $(foreach ca,$(CROSS_ARCHS), stamps/build.$(ca))
+endif
+ifneq (,$(TARGET))
+   ifeq ($(TARGET),hppa64-linux-gnu)
+     build_stamps = stamps/build-hppa64
+   else
+     build_stamps = stamps/build.$(DEB_TARGET_ARCH)
+  endif
+endif
+ifeq ($(BACKPORT),true)
+    build_stamps :=
+    with_check := no
+endif
+
+build: pre-build stamps/build
+build-arch: pre-build stamps/build
+build-indep: pre-build stamps/build
+stamps/build: $(build_stamps)
+       touch $@
+
+###############################################################################
+
+##################
+# install target #
+##################
+
+install_stamps =
+ifeq ($(with_hppa64),yes)
+       install_stamps += stamps/install-hppa64
+endif
+ifeq ($(with_cross),yes)
+       install_stamps += $(foreach ca,$(CROSS_ARCHS), stamps/install.$(ca))
+endif
+
+ifneq (,$(TARGET))
+    ifeq ($(TARGET),hppa64-linux-gnu)
+      install_stamp = stamps/install-hppa64
+    else
+      install_stamp = stamps/install.$(DEB_TARGET_ARCH)
+  endif
+else
+        install_stamp = stamps/install
+endif
+ifeq ($(BACKPORT),true)
+    install_stamps :=
+endif
+install: $(install_stamp)
+stamps/install: checkroot stamps/build $(install_stamps)
+       $(checkdir)
+
+       rm -fr $(d_bin) $(d_com) $(d_lib) $(d_nat) $(d_dev) $(d_mul) $(d_mdev) $(d_doc) $(d_src) $(d_bld) $(d_ctf) $(d_ctfn)
+       $(install_dir) $(d_bin) $(d_com) $(d_lib) $(d_nat) $(d_dev) $(d_mul) $(d_mdev) $(d_doc) $(d_src) $(d_bld)
+
+       : # install binutils and -dev stuff
+       env MAKE="$(MAKE) VERSION=$(SINGLE_VERSION)" \
+         $(MAKE) -C builddir-single \
+               CFLAGS="$(CFLAGS)" \
+               CXXFLAGS="$(CXXFLAGS)" \
+               LDFLAGS="$(LDFLAGS)" \
+               DESTDIR=$(CURDIR)/$(d_bin) install
+
+       $(install_dir) $(d_com)/$(PF)/share
+       mv $(d_bin)/$(PF)/share/locale $(d_com)/$(PF)/share/locale
+
+       $(install_dir) $(d_doc)/$(PF)/share
+       mv $(d_bin)/$(PF)/share/info $(d_doc)/$(PF)/share/info
+
+       $(install_dir) $(d_nat)/$(PF)/lib/$(DEB_HOST_MULTIARCH)
+       mv $(d_bin)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/ldscripts \
+               $(d_nat)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/.
+
+       $(install_dir) $(d_com)/$(PF)/share/man
+       mv $(d_bin)/$(PF)/share/man/man1 $(d_com)/$(PF)/share/man/.
+       for f in $(d_com)/$(PF)/share/man/man1/*.1; do \
+         sed -i -e '/^\.TH /s/[0-9]*-[0-9]*-[0-9]*/$(BUILD_DAY)/' $$f; \
+       done
+
+ifeq ($(with_multiarch),yes)
+       : # now install binutils-multiarch stuff
+       env MAKE="$(MAKE) VERSION=$(MULTI_VERSION)" \
+         $(MAKE) -C builddir-multi \
+               CFLAGS="$(CFLAGS)" \
+               CXXFLAGS="$(CXXFLAGS)" \
+               LDFLAGS="$(LDFLAGS)" \
+               DESTDIR=$(CURDIR)/$(d_mul) install
+endif
+
+       : # fix bfd.h, removing the safety inclusion guard
+       awk '/PR 14072/,/^#endif/ {next} {print}' $(d_bin)/$(PF)/include/bfd.h \
+         > $(d_bin)/$(PF)/include/bfd.h.new
+       mv $(d_bin)/$(PF)/include/bfd.h.new $(d_bin)/$(PF)/include/bfd.h
+
+       : # fix multilib conflicts of generated values by __WORDSIZE-based expressions
+       sed -i -e '/^#include "ansidecl.h"/{p;s~^.*$$~#include <bits/wordsize.h>~;}' \
+           -e 's/^#define BFD_DEFAULT_TARGET_SIZE \(32\|64\) *$$/#define BFD_DEFAULT_TARGET_SIZE __WORDSIZE/' \
+           -e 's/^#define BFD_HOST_64BIT_LONG [01] *$$/#define BFD_HOST_64BIT_LONG (__WORDSIZE == 64)/' \
+           -e 's/^#define BFD_HOST_64_BIT \(long \)\?long *$$/#if __WORDSIZE == 32\
+#define BFD_HOST_64_BIT long long\
+#else\
+#define BFD_HOST_64_BIT long\
+#endif/' \
+           -e 's/^#define BFD_HOST_U_64_BIT unsigned \(long \)\?long *$$/#define BFD_HOST_U_64_BIT unsigned BFD_HOST_64_BIT/' \
+           $(d_bin)/$(PF)/include/bfd.h
+
+       : # copy plugin-api.h ...
+       cp -f include/plugin-api.h $(d_bin)/$(PF)/include
+
+       : # We don't need to distribute everything in binutils and -dev
+       rm -rf $(d_bin)/$(PF)/include/obstack.h
+       rm -f $(d_doc)/$(PF)/share/info/configure.* $(d_doc)/$(PF)/share/info/standards.*
+
+ifneq (,$(filter $(DEB_HOST_ARCH),powerpc ppc64 ppc64el))
+       rm -f $(d_bin)/$(PF)/bin/embedspu
+endif
+
+ifeq ($(with_multiarch),yes)
+       : # Now get rid of just about everything in binutils-multiarch
+       rm -rf $(d_mul)/$(PF)/man $(d_mul)/$(PF)/info $(d_mul)/$(PF)/include
+       rm -rf $(d_mul)/$(PF)/share/man $(d_mul)/$(PF)/share/info $(d_mul)/$(PF)/share/locale
+
+       : # elfedit (even with its --input-mach option)
+       : # is the same for all targets.
+       rm -f $(d_mul)/$(PF)/bin/elfedit
+
+       : # c++filt does not link to libbfd for anything more than
+       : # the help message, and its behavior does not vary
+       : # between arches aside from the --version message.
+       rm -f $(d_mul)/$(PF)/bin/c++filt
+
+       : # As gas/README points out (search for --enable-targets),
+       : # multi-arch gas is not ready yet.
+       rm -f $(d_mul)/$(PF)/bin/as
+       rm -f $(d_mul)/$(PF)/bin/ld
+       rm -f $(d_mul)/$(PF)/bin/ld.bfd
+       rm -f $(d_mul)/$(PF)/bin/ld.gold
+
+  ifneq (,$(filter $(DEB_HOST_ARCH),powerpc ppc64 ppc64el))
+       rm -f $(d_mul)/$(PF)/bin/embedspu
+  endif
+       rm -rf $(d_mul)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/ldscripts
+endif
+
+#      rm -rf debian/binutils-*-*-*/$(PF)/lib/$(DEB_HOST_MULTIARCH)/ldscripts \
+#        debian/binutils-*-gnu/$(PF)/lib/$(DEB_HOST_MULTIARCH)/ldscripts
+
+       $(install_dir) $(d_dev)/$(PF)/include
+       mv $(d_bin)/$(PF)/include/* $(d_dev)/$(PF)/include/
+
+       $(install_dir) $(d_ctf)/$(PF)/lib/$(DEB_HOST_MULTIARCH)
+       mv $(d_bin)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libctf.so.* \
+               $(d_ctf)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/.
+       $(install_dir) $(d_ctfn)/$(PF)/lib/$(DEB_HOST_MULTIARCH)
+       mv $(d_bin)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libctf-nobfd.so.* \
+               $(d_ctfn)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/.
+
+       $(install_dir) $(d_lib)/$(PF)/lib/$(DEB_HOST_MULTIARCH) $(d_dev)/$(PF)/lib/$(DEB_HOST_MULTIARCH)
+       mv $(d_bin)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/*.a \
+          $(d_bin)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libbfd.so \
+          $(d_bin)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libopcodes.so \
+          $(d_bin)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libctf*.so \
+               $(d_dev)/$(PF)/lib/$(DEB_HOST_MULTIARCH)
+       mv $(d_bin)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/*.so \
+          $(d_lib)/$(PF)/lib/$(DEB_HOST_MULTIARCH)
+
+ifeq ($(with_multiarch),yes)
+       $(install_dir) $(d_mul)/$(PF)/lib/$(DEB_HOST_MULTIARCH) $(d_mdev)/$(PF)/lib/$(DEB_HOST_MULTIARCH)
+       mv $(d_mul)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libbfd.so \
+          $(d_mdev)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libbfd-multiarch.so
+       mv $(d_mul)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libopcodes.so \
+          $(d_mdev)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libopcodes-multiarch.so
+       mv $(d_mul)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libctf-*.so \
+          $(d_mdev)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/.
+       rm -f $(d_mul)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/*.la \
+         $(d_mul)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/*.a
+       rm -f $(d_mul)/$(PF)/lib*/$(DEB_HOST_MULTIARCH)/libiberty*
+endif
+
+       : # Get rid of .la files since libtool obviously has no idea about transient paths
+       rm -f $(d_bin)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/*.la
+
+       chmod ugo-x $(d_lib)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/*.so
+       chmod ugo-x $(d_ctf)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/*.so.*
+       chmod ugo-x $(d_ctfn)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/*.so.*
+ifeq ($(with_native),yes)
+       $(call strip_package, $(p_lib), $(d_lib))
+       $(call strip_package, $(p_ctf), $(d_ctf))
+       $(call strip_package, $(p_ctfn), $(d_ctfn))
+endif
+ifeq ($(with_multiarch),yes)
+       chmod ugo-x $(d_mul)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/*.so
+       chmod ugo-x $(d_mul)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/*.so.*
+       $(call strip_package, $(p_mul), $(d_mul))
+endif
+
+       for i in $(d_dev)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/*.a; do \
+         echo "lto-stripping $(basename $$i) ..."; \
+         $(STRIP_LTO) $$i; \
+         if which strip-nondeterminism >/dev/null 2>&1; then \
+           echo "strip-nondeterminism $(basename $$i) ..."; \
+           strip-nondeterminism $$i; \
+         fi; \
+       done
+
+       : # Don't want /usr/<arch>-linux to exist in any package
+       rm -rf $(d_bin)/$(PF)/$(DEB_HOST_GNU_TYPE)
+
+       : # Remove windows related manpages
+       rm -f $(d_com)/$(PF)/share/man/man1/{dlltool,nlmconv,windmc,windres}.1
+
+ifeq ($(with_multiarch),yes)
+       rm -rf $(d_mul)/$(PF)/$(DEB_HOST_GNU_TYPE)
+       rm -f $(d_mul)/$(PF)/share/man/man1/{dlltool,nlmconv,windmc,windres}.1
+endif
+
+       rm -f $(d_bin)/$(PF)/bin/ld.bfd
+       mv $(d_bin)/$(PF)/bin/ld $(d_bin)/$(PF)/bin/ld.bfd
+       mv $(d_com)/$(PF)/share/man/man1/ld.1 \
+               $(d_com)/$(PF)/share/man/man1/ld.bfd.1
+       ln -sf $(DEB_HOST_GNU_TYPE)-ld.bfd $(d_bin)/$(PF)/bin/ld
+       $(install_dir) $(d_com)/$(PF)/share/man/man1
+       ln -sf ld.bfd.1.gz $(d_com)/$(PF)/share/man/man1/ld.1.gz
+ifeq ($(with_gold),yes)
+       ln -s ld.gold $(d_bin)/$(PF)/bin/gold
+  ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
+       find debian -name '*gold' -o -name '*dwp'
+       if which help2man >/dev/null 2>&1; then \
+         help2man -N -n 'The GNU ELF linker' \
+           $(d_bin)/$(PF)/bin/ld.gold \
+           | sed -e 's,debian/.*-ld.gold,ld.gold,g' \
+               -e 's/$(DEB_HOST_GNU_TYPE)-//g' \
+               > debian/ld.gold.1; \
+         help2man -N -n 'The DWARF packaging utility' \
+           $(d_bin)/$(PF)/bin/dwp \
+           | sed -e 's,debian/.*-dwp,dwp,g' \
+               -e 's/$(DEB_HOST_GNU_TYPE)-//g' \
+               > debian/dwp.1; \
+       fi
+  endif
+       cp debian/dwp.1 $(d_com)/$(PF)/share/man/man1/
+       cp debian/ld.gold.1 $(d_com)/$(PF)/share/man/man1/
+       ln -s ld.gold.1.gz $(d_com)/$(PF)/share/man/man1/gold.1.gz
+
+       : # install a symlink for the gold linker
+       $(install_dir) $(d_bin)/$(PF)/lib/gold-ld
+       ln -s ../../bin/ld.gold $(d_bin)/$(PF)/lib/gold-ld/ld
+endif
+       : # install a symlink for the bfd linker
+       $(install_dir) $(d_bin)/$(PF)/lib/compat-ld
+       ln -s ../../bin/ld.bfd $(d_bin)/$(PF)/lib/compat-ld/ld
+
+       : # Remove empty directory
+       rmdir $(d_bin)/$(PF)/include/
+
+       : # Rename non-prefixed binaries to $(DEB_HOST_GNU_TYPE)- prefixed binaries
+       : # and provide symlinks to the prefixed binaries.
+       $(install_dir) $(d_nat)/$(PF)/bin $(d_nat)/$(PF)/share/man/man1
+       for i in $(programs); do \
+         mv $(d_bin)/$(PF)/bin/$$i $(d_nat)/$(PF)/bin/$(DEB_HOST_GNU_TYPE)-$$i; \
+         ln -sf $(DEB_HOST_GNU_TYPE)-$$i $(d_bin)/$(PF)/bin/$$i; \
+       done
+       ln -sf $(DEB_HOST_GNU_TYPE)-ld.gold $(d_nat)/usr/bin/$(DEB_HOST_GNU_TYPE)-gold
+       for i in $(programs); do \
+         ln -sf $$i.1.gz $(d_nat)/$(PF)/share/man/man1/$(DEB_HOST_GNU_TYPE)-$$i.1.gz; \
+       done
+ifeq ($(with_native),yes)
+       $(call strip_package, $(p_nat), $(d_nat))
+endif
+ifeq ($(with_multiarch),yes)
+       for i in \
+         addr2line ar gprof \
+         nm objcopy objdump ranlib readelf size strings strip; \
+       do \
+         mv $(d_mul)/$(PF)/bin/$$i $(d_mul)/$(PF)/bin/$(DEB_HOST_GNU_TYPE)-$$i; \
+       done
+       rm -f $(d_mul)/$(PF)/bin/embedspu
+endif
+
+ifneq (,$(filter $(DEB_HOST_ARCH),i386 kfreebsd-i386 hurd-i386))
+# temporary i586-* symlinks for stretch/sid
+  ifneq (,$(TRIPLET_SYMLINK))
+       for i in $(programs); do \
+         ln -sf $(DEB_HOST_GNU_TYPE)-$$i $(d_nat)/$(PF)/bin/$(TRIPLET_SYMLINK)-$$i; \
+         ln -sf $(DEB_HOST_GNU_TYPE)-$$i.1.gz $(d_nat)/$(PF)/share/man/man1/$(TRIPLET_SYMLINK)-$$i.1.gz; \
+       done
+  endif
+# temporary i486-* symlinks for jessie/sid
+  ifeq ($(DEB_HOST_GNU_CPU),i586)
+       gnutype=$(subst i586,i486,$(DEB_HOST_GNU_TYPE)); \
+       for i in $(programs); do \
+         ln -sf $(DEB_HOST_GNU_TYPE)-$$i $(d_nat)/$(PF)/bin/$$gnutype-$$i; \
+         ln -sf $(DEB_HOST_GNU_TYPE)-$$i.1.gz $(d_nat)/$(PF)/share/man/man1/$$gnutype-$$i.1.gz; \
+       done
+  endif
+# for backports to wheezy and squeeze
+  ifeq ($(DEB_HOST_GNU_CPU),i486)
+       gnutype=$(subst i486,i586,$(DEB_HOST_GNU_TYPE)); \
+       for i in $(programs); do \
+         ln -sf $(DEB_HOST_GNU_TYPE)-$$i $(d_nat)/$(PF)/bin/$$gnutype-$$i; \
+         ln -sf $(DEB_HOST_GNU_TYPE)-$$i.1.gz $(d_nat)/$(PF)/share/man/man1/$$gnutype-$$i.1.gz; \
+       done
+  endif
+endif
+       touch $@
+
+stamps/install-hppa64: checkroot stamps/build-hppa64
+       $(checkdir)
+
+       rm -fr $(d_hppa64)
+       $(install_dir) $(d_hppa64)
+       $(install_dir) $(d_hppa64)/$(PF)/lib/$(DEB_HOST_MULTIARCH)
+
+       : # install binutils-hppa64 stuff
+       env MAKE="$(MAKE) VERSION=$(HPPA64_VERSION)" \
+          $(MAKE) -C builddir-hppa64 \
+               CFLAGS="$(CFLAGS)" \
+               CXXFLAGS="$(CXXFLAGS)" \
+               LDFLAGS="$(LDFLAGS)" \
+               DESTDIR=$(CURDIR)/$(d_hppa64) install
+
+       : # move shared libs to the standard path
+       mv $(d_hppa64)/$(PF)/$(DEB_HOST_GNU_TYPE)/hppa64-linux-gnu/lib/lib*-*.so \
+               $(d_hppa64)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/.
+       mv $(d_hppa64)/$(PF)/lib/hppa64-linux-gnu/libctf*.so.* \
+               $(d_hppa64)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/.
+
+       : # Now get rid of just about everything in binutils-hppa64
+       rm -rf $(d_hppa64)/$(PF)/man
+       rm -rf $(d_hppa64)/$(PF)/info
+       rm -rf $(d_hppa64)/$(PF)/include
+       rm -rf $(d_hppa64)/$(PF)/share
+       rm -rf $(d_hppa64)/$(PF)/hppa-linux-gnu
+       rm -rf $(d_hppa64)/$(PF)/lib/libiberty.a
+       rm -rf $(d_hppa64)/$(PF)/lib/hppa64-linux-gnu/libctf*
+
+       : # replace hard links with soft links
+       for i in $(d_hppa64)/usr/hppa64-linux-gnu/bin/*; do \
+         ln -sf ../../bin/hppa64-linux-gnu-$$(basename $$i) $$i; \
+       done
+       ln -sf hppa64-linux-gnu-ld.bfd $(d_hppa64)/usr/bin/hppa64-linux-gnu-ld
+
+       $(call strip_package, $(p_hppa64), $(d_hppa64))
+       chmod ugo-x $(d_hppa64)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/*.so
+       chmod ugo-x $(d_hppa64)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/*.so.*
+
+       : # remove RPATH
+       chrpath -k -d $$(file $(d_hppa64)/usr/bin/*|awk -F: '/ ELF/ {print $$1}')
+
+       : # Don't want /usr/<arch>-linux to exist in any package
+       rm -rf $(d_hppa64)/$(PF)/$(DEB_HOST_GNU_TYPE)
+
+       touch $@
+
+###############################################################################
+
+#######################
+# binary-indep target #
+#######################
+
+binary-indep: checkroot build install
+       $(checkdir)
+
+       rm -f debian/files debian/substvars
+
+# Cross builds do not have documentation packages
+ifeq (,$(TARGET))
+
+       $(install_dir) $(d_doc)/DEBIAN
+
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+       rm -f $(d_doc)/$(PF)/share/info/bfd.info*
+       rm -f $(d_doc)/$(PF)/share/info/bfdint.info*
+       rm -f $(d_doc)/$(PF)/share/info/ldint.info*
+endif
+
+ifneq ($(BACKPORT),true)
+       $(install_dir) $(d_doc)/$(PF)/share/doc/$(p_doc)/
+       $(install_file) debian/changelog $(d_doc)/$(PF)/share/doc/$(p_doc)/changelog.Debian
+       $(install_file) debian/copyright $(d_doc)/$(PF)/share/doc/$(p_doc)/
+       for i in bfd gas gprof ld; do \
+         ln -sf ../$(p_bin)/$$i $(d_doc)/$(PF)/share/doc/$(p_doc)/$$i; \
+       done
+       find $(d_doc)/$(PF)/share/doc/$(p_doc) -maxdepth 1 -type f ! -name copyright | xargs gzip -9n
+       gzip -9n $(d_doc)/$(PF)/share/info/*
+
+       dpkg-gencontrol -P$(d_doc) -p$(p_doc)
+       chown -R root:root $(d_doc)
+       chmod -R go=rX  $(d_doc)
+       find $(d_doc) -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
+       dpkg --build $(d_doc) ..
+
+       $(install_dir) $(d_src)/$(PF)/share/doc/$(p_src)/
+       $(install_file) debian/changelog $(d_src)/$(PF)/share/doc/$(p_src)/changelog.Debian
+       $(install_file) debian/copyright $(d_src)/$(PF)/share/doc/$(p_src)/
+       find $(d_src)/$(PF)/share/doc/$(p_src) -maxdepth 1 -type f ! -name copyright | xargs gzip -9n
+endif # ifndef BACKPORT
+
+       $(install_dir) $(d_src)/DEBIAN
+       $(install_dir) $(d_src)/$(PF)/src/binutils/patches
+       $(install_file) debian/patches/* $(d_src)/$(PF)/src/binutils/patches/
+       cd .. && find $(source_files) -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)' && \
+               find $(source_files) -type f -print0 | LC_ALL=C sort -z | \
+               tar --null -T - -c --xz --exclude=CVS --mode=go=rX,u+rw,a-s \
+               --xform='s=^[^/]*\/=binutils-$(VERSION)/=' \
+               -f $(pwd)/$(d_src)/$(PF)/src/binutils/binutils-$(VERSION).tar.xz \
+               $(source_files)
+
+       tar cf - $$(find './debian' -mindepth 1 \( \
+               -path './debian/binutils*' -type d -prune -o \
+               -path './debian/libbinutils' -type d -prune -o \
+               -path './debian/binutils*-dbg' -type d -prune -o \
+               -path './debian/libbinutils-dbg' -type d -prune -o \
+               -path './debian/patches' -prune -o \
+               -path './debian/libctf*' -type d -prune -o \
+               -path './debian/tmp*' -prune -o \
+               -path './debian/.bzr*' -prune -o \
+               -path './debian/files' -prune -o \
+               -print \) ) \
+         | tar -x -C $(d_src)/$(PF)/src/binutils -f -
+       -chmod 755 $(d_src)/$(PF)/src/binutils/debian/*.{pre,post}{inst,rm}
+       chmod 755 $(d_src)/$(PF)/src/binutils/debian/test-suite-compare.py
+
+       dpkg-gencontrol -P$(d_src) -p$(p_src)
+       chown -R root:root $(d_src)
+       chmod -R go=rX  $(d_src)
+       find $(d_src) -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
+       dpkg --build $(d_src) ..
+
+
+       $(install_dir) $(d_bld)/DEBIAN $(d_bld)/$(PF)/share/doc/
+       ln -sf $(p_com) $(d_bld)/$(PF)/share/doc/$(p_bld)
+       dpkg-gencontrol -P$(d_bld) -p$(p_bld) -Vbinutils:minver=$(min_ver)
+       chown -R root:root $(d_bld)
+       chmod -R go=rX $(d_bld)
+       find $(d_bld) -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
+       dpkg --build $(d_bld) ..
+endif
+
+###############################################################################
+
+#######################
+# binary-arch target  #
+#######################
+
+binary.%: stamps/install.% install
+       rm -rf $(D_CROSS)/$(PF)/share/info
+
+       rm -rf $(D_CROSS)/DEBIAN $(D_CROSS)-dbg/DEBIAN
+
+       : # make lintian happy
+       $(install_dir) $(D_CROSS)/$(PF)/share/lintian/overrides
+       sed 's/@PKG@/$(P_CROSS)/' debian/binutils-cross.overrides \
+         > $(D_CROSS)/$(PF)/share/lintian/overrides/$(P_CROSS)
+
+       : # install maintainer scrtips
+       $(install_dir) $(D_CROSS)/$(PF)/share/doc/$(P_CROSS)
+       $(install_file) debian/changelog \
+         $(D_CROSS)/$(PF)/share/doc/$(P_CROSS)/changelog.Debian
+       $(install_file) debian/copyright debian/README.cross \
+         $(D_CROSS)/$(PF)/share/doc/$(P_CROSS)/
+       gzip -9nf $(D_CROSS)/$(PF)/share/doc/$(P_CROSS)/changelog.Debian
+
+ifeq ($(with_check),yes)
+       : # remove user and date from test-summary for reproducible builds
+       sed -i -e '/Test run by/d' test-summary-$*
+       $(install_file) test-summary-$* \
+         $(D_CROSS)/$(PF)/share/doc/$(P_CROSS)/test-summary
+       gzip -9nf $(D_CROSS)/$(PF)/share/doc/$(P_CROSS)/test-summary
+       $(install_dir) $(D_CROSS)/$(PF)/share/doc/$(p_bin)
+       ln -sf ../$(P_CROSS)/test-summary.gz \
+         $(D_CROSS)/$(PF)/share/doc/$(p_bin)/test-summary-$*.gz
+endif
+
+       for pkg in bfd gas gprof ld; do \
+         ln -sf ../binutils/$$pkg \
+           $(D_CROSS)/$(PF)/share/doc/$(P_CROSS)/$$pkg; \
+       done
+
+       $(install_dir) $(D_CROSS)/DEBIAN $(D_CROSS)-dbg/DEBIAN
+       if [ "$(is_rc)" = yes ]; then \
+         nver=$$(echo $(DEB_UPSTREAM) | awk -F. '{ OFS="."; NF--; $$NF=$$NF+1; print }'); \
+       else \
+         nver=$$(echo $(DEB_UPSTREAM) | awk -F. '{ OFS="."; if (NF > 2) $$NF=$$NF+1; else $$++NF=1; print }'); \
+       fi; \
+       date_ext=$(DATE_EXT); \
+       [ "$(is_rc)" = yes ] && date_ext=; \
+       $(install_file) debian/binutils.triggers $(D_CROSS)/DEBIAN/triggers
+
+       rm -f debian/substvars
+       dpkg-shlibdeps $(D_CROSS)/$(PF)/bin/* -l$(d_lib)/$(PF)/lib/$(DEB_HOST_MULTIARCH)
+       dpkg-gencontrol -P$(D_CROSS) -p$(P_CROSS) \
+               -VBuilt-Using="$(shell dpkg-query -f '$${source:Package} (= $${source:Version}), ' -W binutils-source)"
+       cd $(D_CROSS) && find -type f  ! -regex './DEBIAN/.*' -printf '%P\n' | LC_ALL=C sort | xargs md5sum > DEBIAN/md5sums
+       dpkg-gencontrol -P$(D_CROSS)-dbg -p$(P_CROSS)-dbg
+       cd $(D_CROSS)-dbg && find -type f  ! -regex './DEBIAN/.*' -printf '%P\n' | LC_ALL=C sort | xargs md5sum > DEBIAN/md5sums
+       chown -R root:root $(D_CROSS) $(D_CROSS)-dbg
+       chmod -R go=rX  $(D_CROSS) $(D_CROSS)-dbg
+       find $(D_CROSS) $(D_CROSS)-dbg -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
+       dpkg --build $(D_CROSS) ..
+       dpkg --build $(D_CROSS)-dbg ..
+
+binary-for-host: checkroot
+       $(checkdir)
+
+       rm -fr $(d_hst)
+       $(install_dir) $(d_hst)/DEBIAN/ $(d_hst)/$(PF)/share/doc/
+       ln -sf $(p_com) $(d_hst)/$(PF)/share/doc/$(p_hst)
+
+       rm -f debian/substvars
+       $(for_target) dpkg-gencontrol -P$(d_hst) -p$(p_hst) \
+               -Vbinutils:native=$(if $(TARGET),$(p_cross),$(p_nat)) \
+               -Vbinutils:minver=$(min_ver)
+
+       chown -R root:root $(d_hst)
+       chmod -R go=rX $(d_hst)
+
+       find $(d_hst) -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
+       dpkg --build $(d_hst) ..
+
+binary-arch: checkroot binary-native binary-for-host \
+    $(if $(filter yes, $(with_cross)),$(foreach ca,$(CROSS_ARCHS), binary.$(ca)))
+       $(checkdir)
+
+binary-native: checkroot build install $(checkdir)
+
+ifneq ($(BACKPORT),true)
+# Process the following only if $(TARGET) is set
+ifneq (,$(TARGET))
+       test "" != "$(TARGET)"
+
+       rm -rf $(d_cross)/$(PF)/share/info $(d_cross)/$(PF)/share/man
+
+       $(install_dir) $(d_cross)/DEBIAN
+
+       $(install_dir) $(d_cross)/$(PF)/share/doc/$(p_cross)/
+       $(install_file) debian/changelog $(d_cross)/$(PF)/share/doc/$(p_cross)/changelog.Debian
+       $(install_file) debian/copyright debian/README.cross $(d_cross)/$(PF)/share/doc/$(p_cross)/
+       gzip -9nf $(d_cross)/$(PF)/share/doc/$(p_cross)/changelog.Debian
+
+       for pkg in bfd gas gprof ld; do \
+         ln -sf ../binutils/$$pkg $(d_cross)/$(PF)/share/doc/$(p_cross)/$$pkg; \
+       done
+
+       rm -f debian/substvars
+       dpkg-shlibdeps $(d_cross)/$(PF)/bin/* \
+         -ldebian/tmp/$(PF)/lib/$(call _multiarch,$*) -l$(d_lib)/$(PF)/lib/$(call _multiarch,$*)
+       dpkg-gencontrol -P$(d_cross) -p$(p_cross) \
+               -VBuilt-Using="$(shell dpkg-query -f '$${source:Package} (= $${source:Version}), ' -W binutils-source)"
+       find $(d_cross) -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
+       dpkg --build $(d_cross) ..
+
+else
+       : # generate some control & helper files
+       if [ "$(is_rc)" = yes ]; then \
+         nver=$$(echo $(DEB_UPSTREAM) | awk -F. '{ OFS="."; NF--; $$NF=$$NF+1; print }'); \
+       else \
+         nver=$$(echo $(DEB_UPSTREAM) | awk -F. '{ OFS="."; if (NF > 2) $$NF=$$NF+1; else $$++NF=1; print }'); \
+       fi; \
+       for i in debian/*.in; do \
+           case "$$i" in debian/control.in|debian/control.cross.in) continue; esac; \
+           date_ext=$(DATE_EXT); \
+           case "$$i" in debian/*.shlibs.in) [ "$(is_rc)" = yes ] && date_ext=; esac; \
+           sed -e 's/@VER@/$(VERSION)/g' \
+               -e 's/@DEB_VER@/$(DEB_VERSION)/g' \
+               -e 's/@DEB_SVER@/$(DEB_SVERSION)/g' \
+               -e 's/@DEB_UVER@/$(DEB_UPSTREAM)/g' \
+               -e "s/@DEB_NVER@/$$nver/g" \
+               -e "s/@DATE_EXT@/$$date_ext/g" \
+               -e 's/@DEB_ARCH@/$(DEB_HOST_ARCH)/g' \
+               -e 's/@DEB_MULTIARCH@/$(DEB_HOST_MULTIARCH)/g' \
+               -e 's/@DEB_TRIPLET@/$(DEB_HOST_GNU_TYPE)/g' \
+               -e "s/@dpkg_dev@/$(DPKG_DEV)/" \
+               $$i > $${i%*.in}; \
+           case "$$i" in *.post*|*.pre*) chmod 755 $${i%*.in}; esac; \
+       done
+
+       : # install bug reporting information
+       $(install_file) -D debian/$(p_bin).presubj \
+               $(d_bin)/$(PF)/share/bug/$(p_bin)/presubj
+ifeq ($(with_multiarch),yes)
+       $(install_dir) $(d_mul)/$(PF)/share/bug
+       ln -sf $(p_bin) $(d_mul)/$(PF)/share/bug/$(p_mul)
+endif
+ifeq ($(with_hppa64),yes)
+       $(install_dir) $(d_hppa64)/$(PF)/share/bug
+       ln -sf $(p_bin) $(d_hppa64)/$(PF)/share/bug/$(p_hppa64)
+endif
+
+       : # make lintian happy
+       $(install_file) -D debian/$(p_com).overrides \
+               $(d_com)/$(PF)/share/lintian/overrides/$(p_com)
+       $(install_file) -D debian/$(p_lib).overrides \
+               $(d_lib)/$(PF)/share/lintian/overrides/$(p_lib)
+       $(install_file) -D debian/binutils.overrides \
+               $(d_bin)/$(PF)/share/lintian/overrides/$(p_bin)
+       $(install_dir) $(d_nat)/$(PF)/share/lintian/overrides
+       sed 's/@PKG@/$(p_nat)/' debian/binutils-triplet.overrides \
+         > $(d_nat)/$(PF)/share/lintian/overrides/$(p_nat)
+ifeq ($(with_multiarch),yes)
+       $(install_file) -D debian/$(p_mul).overrides \
+               $(d_mul)/$(PF)/share/lintian/overrides/$(p_mul)
+       $(install_file) -D debian/$(p_mdev).overrides \
+               $(d_mdev)/$(PF)/share/lintian/overrides/$(p_mdev)
+endif
+ifeq ($(with_hppa64),yes)
+       $(install_file) -D debian/$(p_hppa64).overrides \
+               $(d_hppa64)/$(PF)/share/lintian/overrides/$(p_hppa64)
+endif
+
+       : # install maintainer scripts
+       $(install_dir) $(d_bin)/DEBIAN
+
+       $(install_dir) $(d_lib)/DEBIAN $(d_lib)-dbg/DEBIAN
+       $(install_file) debian/binutils.triggers $(d_lib)/DEBIAN/triggers
+       $(install_file) debian/libbinutils.shlibs $(d_lib)/DEBIAN/shlibs
+
+       $(install_dir) $(d_ctf)/DEBIAN $(d_ctf)-dbg/DEBIAN
+       $(install_file) debian/binutils.triggers $(d_ctf)/DEBIAN/triggers
+       $(install_file) debian/libctf0.symbols $(d_ctf)/DEBIAN/symbols
+
+       $(install_dir) $(d_ctfn)/DEBIAN $(d_ctfn)-dbg/DEBIAN
+       $(install_file) debian/binutils.triggers $(d_ctfn)/DEBIAN/triggers
+       $(install_file) debian/libctf-nobfd0.symbols $(d_ctfn)/DEBIAN/symbols
+
+       $(install_dir) $(d_com)/DEBIAN
+
+       $(install_dir) $(d_nat)/DEBIAN $(d_nat)-dbg/DEBIAN
+
+       $(install_dir) $(d_dev)/DEBIAN
+
+ifeq ($(with_multiarch),yes)
+       $(install_dir) $(d_mul)/DEBIAN $(d_mul)-dbg/DEBIAN
+       $(install_script) debian/binutils-multiarch.preinst $(d_mul)/DEBIAN/preinst
+       $(install_script) debian/binutils-multiarch.postinst $(d_mul)/DEBIAN/postinst
+       $(install_script) debian/binutils-multiarch.prerm $(d_mul)/DEBIAN/prerm
+       $(install_script) debian/binutils-multiarch.postrm $(d_mul)/DEBIAN/postrm
+       $(install_file) debian/binutils-multiarch.shlibs $(d_mul)/DEBIAN/shlibs
+       $(install_file) debian/binutils.triggers $(d_mul)/DEBIAN/triggers
+       $(install_dir) $(d_mdev)/DEBIAN
+endif
+
+ifeq ($(with_hppa64),yes)
+       $(install_dir) $(d_hppa64)/DEBIAN $(d_hppa64)-dbg/DEBIAN
+       $(install_file) debian/binutils.triggers $(d_hppa64)/DEBIAN/triggers
+endif
+
+       : # install docs
+       $(install_dir) $(d_bin)/$(PF)/share/doc/$(p_bin)/
+       $(install_file) debian/changelog $(d_bin)/$(PF)/share/doc/$(p_bin)/changelog.Debian
+       $(install_file) debian/copyright $(d_bin)/$(PF)/share/doc/$(p_bin)/
+
+       $(install_dir) $(d_com)/$(PF)/share/doc/$(p_com)/
+       $(install_file) debian/changelog $(d_com)/$(PF)/share/doc/$(p_com)/changelog.Debian
+       $(install_file) debian/copyright $(d_com)/$(PF)/share/doc/$(p_com)/
+
+       $(install_dir) $(d_lib)/$(PF)/share/doc/
+       ln -sf $(p_com) $(d_lib)/$(PF)/share/doc/$(p_lib)
+
+       $(install_dir) $(d_ctf)/$(PF)/share/doc/
+       ln -sf $(p_lib) $(d_ctf)/$(PF)/share/doc/$(p_ctf)
+
+       $(install_dir) $(d_ctfn)/$(PF)/share/doc/$(p_ctfn)
+       $(install_file) debian/changelog $(d_ctfn)/$(PF)/share/doc/$(p_ctfn)/changelog.Debian
+       $(install_file) debian/copyright $(d_ctfn)/$(PF)/share/doc/$(p_ctfn)/
+
+       $(install_dir) $(d_nat)/$(PF)/share/doc/
+       ln -sf $(p_lib) $(d_nat)/$(PF)/share/doc/$(p_nat)
+
+       $(install_dir) $(d_dev)/$(PF)/share/doc/
+       ln -sf $(p_bin) $(d_dev)/$(PF)/share/doc/$(p_dev)
+ifeq ($(with_multiarch),yes)
+       $(install_dir) $(d_mul)/$(PF)/share/doc/
+       ln -sf $(p_bin) $(d_mul)/$(PF)/share/doc/$(p_mul)
+       $(install_dir) $(d_mdev)/$(PF)/share/doc/
+       ln -sf $(p_mul) $(d_mdev)/$(PF)/share/doc/$(p_mdev)
+endif
+ifeq ($(with_hppa64),yes)
+       $(install_dir) $(d_hppa64)/$(PF)/share/doc/
+       ln -sf $(p_bin) $(d_hppa64)/$(PF)/share/doc/$(p_hppa64)
+endif
+
+ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
+ifeq ($(with_check),yes)
+       : # remove user and date from test-summary for reproducible builds
+       sed -i -e '/Test run by/d' $(pwd)/test-summary
+       $(install_dir) $(d_nat)/$(PF)/share/doc/$(p_bin)
+       $(install_file) test-summary \
+         $(d_nat)/$(PF)/share/doc/$(p_bin)/test-summary-$(DEB_HOST_ARCH)
+       gzip -9nf \
+         $(d_nat)/$(PF)/share/doc/$(p_bin)/test-summary-$(DEB_HOST_ARCH)
+
+       : # save log and sum files in $(p_dev)
+       $(install_dir) $(d_dev)/$(PF)/share/doc/$(p_bin)/tests
+       for i in $$(find builddir-single -name '*.sum'); do \
+         b=$$(basename $$i .sum); \
+         $(install_file) $$i $(d_dev)/$(PF)/share/doc/$(p_bin)/tests/$$b.sum; \
+         sed -i -e '/Test run by/d' $(d_dev)/$(PF)/share/doc/$(p_bin)/tests/$$b.sum; \
+         xz -9v $(d_dev)/$(PF)/share/doc/$(p_bin)/tests/$$b.sum; \
+         $(install_file) $${i%.sum}.log $(d_dev)/$(PF)/share/doc/$(p_bin)/tests/$$b.log; \
+         xz -9v $(d_dev)/$(PF)/share/doc/$(p_bin)/tests/$$b.log; \
+       done
+endif
+endif
+       $(install_dir) $(d_com)/$(PF)/share/doc/$(p_bin)
+       $(install_file) binutils/NEWS debian/README.cross \
+                        $(d_com)/$(PF)/share/doc/$(p_bin)/
+
+       $(install_file) binutils/ChangeLog $(d_com)/$(PF)/share/doc/$(p_bin)/changelog
+
+       for pkg in bfd gas gprof ld; do \
+         $(install_dir) $(d_com)/$(PF)/share/doc/$(p_bin)/$$pkg; \
+       done
+       $(install_file) bfd/ChangeLog bfd/PORTING bfd/TODO \
+                       $(d_com)/$(PF)/share/doc/$(p_bin)/bfd/
+       $(install_file) gas/ChangeLog gas/NEWS $(d_com)/$(PF)/share/doc/$(p_bin)/gas/
+       $(install_file) gprof/ChangeLog gprof/TODO gprof/TEST \
+                       $(d_com)/$(PF)/share/doc/$(p_bin)/gprof/
+       $(install_file) ld/ChangeLog ld/TODO ld/NEWS \
+                       $(d_com)/$(PF)/share/doc/$(p_bin)/ld/
+
+       : # These only exist in H. J. Lu releases not GNU ones.
+       for dir in binutils bfd gas gprof ld; do \
+         if [ -f $$dir/ChangeLog.linux ]; then \
+           $(install_file) $$dir/ChangeLog.linux $(d_com)/$(PF)/share/doc/$(p_bin)/$$dir/; \
+         fi; \
+       done
+
+       : # Copy bbconv.pl to the doc dir for use by interested people
+       $(install_file) gprof/bbconv.pl $(d_com)/$(PF)/share/doc/$(p_bin)/gprof/.
+
+       : # Compress stuff that needs it
+       gzip -9n $(d_ctfn)/$(PF)/share/doc/$(p_ctfn)/changelog.Debian
+
+       gzip -9n $(d_bin)/$(PF)/share/doc/$(p_bin)/changelog.Debian
+       find $(d_com)/$(PF)/share/doc/$(p_bin)/ -type f ! -name bbconv.pl | xargs gzip -9n
+       gzip -9n $(d_com)/$(PF)/share/doc/$(p_com)/changelog.Debian
+       gzip -9n $(d_com)/$(PF)/share/man/man1/*.1
+
+       : # Finish it all up
+       dpkg-gencontrol -P$(d_bin) -p$(p_bin) \
+               $(CONFLICTS_TARGET_$(DEB_HOST_ARCH)) $(gold_provides) \
+               -Vbinutils:native=$(p_nat)
+       cd $(d_bin) && find -type f  ! -regex './DEBIAN/.*' -printf '%P\n' | LC_ALL=C sort | xargs md5sum > DEBIAN/md5sums
+
+       rm -f debian/substvars
+       find $(d_lib) -type f | xargs file | grep ELF | cut -d: -f 1 | xargs dpkg-shlibdeps
+       dpkg-gencontrol -P$(d_lib) -p$(p_lib)
+       cd $(d_lib) && find -type f  ! -regex './DEBIAN/.*' -printf '%P\n' | LC_ALL=C sort | xargs md5sum > DEBIAN/md5sums
+       dpkg-gencontrol -P$(d_lib)-dbg -p$(p_lib)-dbg
+       cd $(d_lib)-dbg && find -type f  ! -regex './DEBIAN/.*' -printf '%P\n' | LC_ALL=C sort | xargs md5sum > DEBIAN/md5sums
+
+       dpkg-gensymbols -P$(d_ctf) -p$(p_ctf) -v2.33.50 -l$(d_lib)
+       dpkg-gensymbols -P$(d_ctfn) -p$(p_ctfn) -v2.33.50
+
+       rm -f debian/substvars
+       find $(d_ctf) -type f | xargs file | grep ELF | cut -d: -f 1 | xargs dpkg-shlibdeps
+       dpkg-gencontrol -P$(d_ctf) -p$(p_ctf)
+       cd $(d_ctf) && find -type f  ! -regex './DEBIAN/.*' -printf '%P\n' | LC_ALL=C sort | xargs md5sum > DEBIAN/md5sums
+       dpkg-gencontrol -P$(d_ctf)-dbg -p$(p_ctf)-dbg
+       cd $(d_ctf)-dbg && find -type f  ! -regex './DEBIAN/.*' -printf '%P\n' | LC_ALL=C sort | xargs md5sum > DEBIAN/md5sums
+
+       rm -f debian/substvars
+       find $(d_ctfn) -type f | xargs file | grep ELF | cut -d: -f 1 | xargs dpkg-shlibdeps
+       dpkg-gencontrol -P$(d_ctfn) -p$(p_ctfn)
+       cd $(d_ctfn) && find -type f  ! -regex './DEBIAN/.*' -printf '%P\n' | LC_ALL=C sort | xargs md5sum > DEBIAN/md5sums
+       dpkg-gencontrol -P$(d_ctfn)-dbg -p$(p_ctfn)-dbg
+       cd $(d_ctfn)-dbg && find -type f  ! -regex './DEBIAN/.*' -printf '%P\n' | LC_ALL=C sort | xargs md5sum > DEBIAN/md5sums
+
+       rm -f debian/substvars
+       dpkg-gencontrol -P$(d_com) -p$(p_com)
+       cd $(d_com) && find -type f ! -regex './DEBIAN/.*' -printf '%P\n' | LC_ALL=C sort | xargs md5sum > DEBIAN/md5sums
+
+       rm -f debian/substvars
+       find $(d_nat) -type f | xargs file | grep ELF | cut -d: -f 1 | xargs dpkg-shlibdeps -l$(d_lib)/$(PF)/lib/$(DEB_HOST_MULTIARCH)
+       dpkg-gencontrol -P$(d_nat) -p$(p_nat) -VextraDepends='libbinutils (= $${binary:Version})'
+       cd $(d_nat) && find -type f  ! -regex './DEBIAN/.*' -printf '%P\n' | LC_ALL=C sort | xargs md5sum > DEBIAN/md5sums
+       dpkg-gencontrol -P$(d_nat)-dbg -p$(p_nat)-dbg -VextraDepends='libbinutils (= $${binary:Version})'
+       cd $(d_nat)-dbg && find -type f  ! -regex './DEBIAN/.*' -printf '%P\n' | LC_ALL=C sort | xargs md5sum > DEBIAN/md5sums
+
+       rm -f debian/substvars
+       dpkg-gencontrol -P$(d_dev) -p$(p_dev)
+       cd $(d_dev) && find -type f  ! -regex './DEBIAN/.*' -printf '%P\n' | LC_ALL=C sort | xargs md5sum > DEBIAN/md5sums
+
+ifeq ($(with_multiarch),yes)
+       rm -f debian/substvars
+       find $(d_mul) -type f | xargs file | grep ELF | cut -d: -f 1 | xargs dpkg-shlibdeps
+       dpkg-gencontrol -P$(d_mul) -p$(p_mul)
+       cd $(d_mul) && find -type f  ! -regex './DEBIAN/.*' -printf '%P\n' | LC_ALL=C sort | xargs md5sum > DEBIAN/md5sums
+       dpkg-gencontrol -P$(d_mul)-dbg -p$(p_mul)-dbg
+       cd $(d_mul)-dbg && find -type f  ! -regex './DEBIAN/.*' -printf '%P\n' | LC_ALL=C sort | xargs md5sum > DEBIAN/md5sums
+
+       rm -f debian/substvars
+       mkdir -p $(d_mdev)/DEBIAN
+       dpkg-gencontrol -P$(d_mdev) -p$(p_mdev)
+       cd $(d_mdev) && find -type f  ! -regex './DEBIAN/.*' -printf '%P\n' | LC_ALL=C sort | xargs -r md5sum > DEBIAN/md5sums
+endif
+
+ifeq ($(with_hppa64),yes)
+       rm -f debian/substvars
+       find $(d_hppa64) -type f | xargs file | grep ELF | cut -d: -f 1 | xargs dpkg-shlibdeps
+       dpkg-gencontrol -P$(d_hppa64) -p$(p_hppa64)
+       cd $(d_hppa64) && find -type f  ! -regex './DEBIAN/.*' -printf '%P\n' | LC_ALL=C sort | xargs md5sum > DEBIAN/md5sums
+       dpkg-gencontrol -P$(d_hppa64)-dbg -p$(p_hppa64)-dbg
+       cd $(d_hppa64)-dbg && find -type f  ! -regex './DEBIAN/.*' -printf '%P\n' | LC_ALL=C sort | xargs md5sum > DEBIAN/md5sums
+endif
+
+       chown -R root:root $(d_bin) $(d_com) $(d_lib) $(d_lib)-dbg $(d_ctf) $(d_ctf)-dbg $(d_ctfn) $(d_ctfn)-dbg $(d_nat) $(d_nat)-dbg $(d_dev)
+       chmod -R go=rX  $(d_bin) $(d_com) $(d_lib) $(d_lib)-dbg $(d_ctf) $(d_ctf)-dbg $(d_ctfn) $(d_ctfn)-dbg $(d_nat) $(d_nat)-dbg $(d_dev)
+       find $(d_bin) -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
+       dpkg --build $(d_bin) ..
+       find $(d_com) -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
+       dpkg --build $(d_com) ..
+       find $(d_ctf) -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
+       dpkg --build $(d_ctf) ..
+       find $(d_ctf)-dbg -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
+       dpkg --build $(d_ctf)-dbg ..
+       find $(d_ctfn) -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
+       dpkg --build $(d_ctfn) ..
+       find $(d_ctfn)-dbg -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
+       dpkg --build $(d_ctfn)-dbg ..
+       find $(d_lib) -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
+       dpkg --build $(d_lib) ..
+       find $(d_lib)-dbg -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
+       dpkg --build $(d_lib)-dbg ..
+       find $(d_nat) -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
+       dpkg --build $(d_nat) ..
+       find $(d_nat)-dbg -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
+       dpkg --build $(d_nat)-dbg ..
+       find $(d_dev) -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
+       dpkg --build $(d_dev) ..
+ifeq ($(with_multiarch),yes)
+       chown -R root:root $(d_mul) $(d_mul)-dbg
+       chmod -R go=rX $(d_mul) $(d_mul)-dbg
+       find $(d_mul) -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
+       dpkg --build $(d_mul) ..
+       find $(d_mul)-dbg -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
+       dpkg --build $(d_mul)-dbg ..
+
+       chown -R root:root $(d_mdev)
+       chmod -R go=rX  $(d_mdev)
+       find $(d_mdev) -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
+       dpkg --build $(d_mdev) ..
+endif
+ifeq ($(with_hppa64),yes)
+       chown -R root:root $(d_hppa64)-dbg
+       chmod -R go=rX  $(d_hppa64) $(d_hppa64)-dbg
+       find $(d_hppa64) -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
+       dpkg --build $(d_hppa64) ..
+       find $(d_hppa64)-dbg -depth -newermt '$(BUILD_DATE)' -print0 | \
+               xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
+       dpkg --build $(d_hppa64)-dbg ..
+endif
+       @echo '==================== Build finished ===================='
+       ps aux
+
+endif # Process the following only if $(TARGET) is set
+endif # ifndef BACKPORT
+
+###############################################################################
+
+define checkdir
+        test -f bfd/elf32.c -a -f debian/rules
+endef
+
+#      if which pkg_create_dbgsym >/dev/null 2>&1; then \
+#        pkg_create_dbgsym $1 $2; \
+#      fi
+
+ifeq ($(with_strip),yes)
+# strip_package: <pkgname> <install-dir> <???>
+define strip_package
+       $(install_dir) $(strip $2)-dbg/usr/share/doc/
+       ln -sf $(strip $1) $(strip $2)-dbg/usr/share/doc/$(strip $1)-dbg
+       : # Strip shared libraries and binaries
+       set -e; \
+       nfiles=0; \
+       for i in \
+         $(strip $2)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libbfd-*so \
+         $(strip $2)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libopcodes-*so \
+         $(strip $2)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libctf*.so.0.0.0 \
+         $$(file $(strip $2)/$(PF)/bin/* |awk -F: '$$0 !~ /script/ {print $$1}'); \
+       do \
+         test ! -h $$i || continue; test -f $$i || continue; \
+         files="$$files $$i"; \
+         nfiles=$$(expr $$nfiles + 1); \
+       done; \
+       mkdir -p $(strip $2)-dbg/usr/lib/debug/.dwz/$(DEB_HOST_MULTIARCH); \
+       dwz=usr/lib/debug/.dwz/$(DEB_HOST_MULTIARCH)/$(strip $1).debug; \
+       if [ $$nfiles -gt 1 ]; then \
+         dwz -m $(strip $2)-dbg/$$dwz -M /$$dwz $$files; \
+         $(CROSS)objcopy --compress-debug-sections $(strip $2)-dbg/$$dwz; \
+       else \
+         dwz $$files; \
+       fi; \
+       for i in $$files; do \
+         b_id=$$(LC_ALL=C $(CROSS)readelf -n $$i | sed -n 's/ *Build ID: *\([0-9a-f][0-9a-f]*\)/\1/p'); \
+         if [ -z "$$b_id" ]; then \
+           id=$$(echo $$i | sed -r 's,debian/[^/]+,$2-dbg/usr/lib/debug,'); \
+           echo strip $$i; \
+           mkdir -p $$(dirname $$id); \
+           $(CROSS)objcopy --only-keep-debug $$i $$id; \
+           chmod 644 $$id; \
+           $(STRIP) $$i; \
+           $(CROSS)objcopy --add-gnu-debuglink $$id $$i; \
+         else \
+           echo "ID: $${b_id} -> $$(echo $$i | sed 's,$(strip $2),,')"; \
+           d=usr/lib/debug/.build-id/$${b_id:0:2}; \
+           f=$${b_id:2}.debug; \
+           mkdir -p $(strip $2)-dbg/$$d; \
+           $(CROSS)objcopy --only-keep-debug --compress-debug-sections $$i $(strip $2)-dbg/$$d/$$f; \
+           chmod 644 $(strip $2)-dbg/$$d/$$f; \
+           $(STRIP) $$i; \
+         fi; \
+       done
+endef
+else
+define strip_package
+       $(install_dir) $(strip $2)-dbg/usr/share/doc/
+       ln -sf $(strip $1) $(strip $2)-dbg/usr/share/doc/$(strip $1)-dbg
+endef
+endif
+
+remove-gfdl-files:
+       rm -rf .git* .cvs* gdb libdecnumber readline sim
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+       for i in $(gfdl_toplevel_texinfo_files); do \
+         if [ -f $$i ]; then \
+           sed "s/@name@/$$(basename $$i)/g" debian/gfdl.texi > $$i; \
+         fi; \
+       done
+       rm -f $(gfdl_generated_files)
+       rm -f zlib/contrib/dotzlib/DotZLib.chm
+endif
+
+# Below here is fairly generic really
+
+binary:         binary-indep binary-arch
+
+checkroot:
+       $(checkdir)
+       test root = "`whoami`"
+
+.PHONY: binary binary-arch binary-indep clean checkroot
+
+.PRECIOUS: stamps/configure.% stamps/build.% stamps/install.%
diff --git a/source.lintian-overrides b/source.lintian-overrides
new file mode 100644 (file)
index 0000000..5662f66
--- /dev/null
@@ -0,0 +1,12 @@
+# handled via diversions
+binutils source: binaries-have-file-conflict
+
+# wrong positive
+binutils source: license-problem-gfdl-invariants
+
+# yes, we know what we are doing
+debian-rules-sets-dpkg-architecture-variable
+
+# test data
+binutils source: source-is-missing binutils/testsuite/binutils-all/nfp/test1_nfp6000.nffw
+binutils source: source-is-missing binutils/testsuite/binutils-all/nfp/test2_nfp6000.nffw
diff --git a/source/format b/source/format
new file mode 100644 (file)
index 0000000..163aaf8
--- /dev/null
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/test-suite-compare.py b/test-suite-compare.py
new file mode 100644 (file)
index 0000000..7373039
--- /dev/null
@@ -0,0 +1,230 @@
+#!/usr/bin/python3
+
+# Quick'n'dirty regression check for dejagnu testsuites
+# Copyright (C) 2003, 2004, 2005, 2006, 2007  James Troup <james@nocrew.org>
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU;5B General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+################################################################################
+
+import optparse
+import os
+import sys
+
+################################################################################
+
+def fubar(msg, exit_code=1):
+    sys.stderr.write("E: %s\n" % (msg))
+    sys.exit(exit_code)
+
+def warn(msg):
+    sys.stderr.write("W: %s\n" % (msg))
+
+def info(msg):
+    sys.stderr.write("I: %s\n" % (msg))
+
+################################################################################
+
+def read_testsummary(filename):
+    results = {}
+    file = open(filename)
+    for line in file.readlines():
+        if not line:
+            continue
+        if line.startswith("Running"):
+            s = line.split()
+            if "/" in s[1]:
+                x = s[1]
+                if x.find("/testsuite/") == -1:
+                    fubar("Can't find /testsuite/ in '%s'." % (x))
+                # 'Running /home/james/debian/packages/binutils/binutils-2.14.90.0.7/gas/testsuite/gas/hppa/unsorted/unsorted.exp ...' -> 'gas/hppa/unsorted/unsorted.exp'
+                # ... since using basename() isn't dupe safe.
+                section = x[x.find("/testsuite/"):].replace("/testsuite/","").split()[0]
+
+                # Tests can be duplicated, e.g. hppa/basic/basic.exp
+                # is run twice, once for hppa-linux and once for
+                # hppa64-linux.  This is of course a horrible bodge,
+                # but I can't think of anything trivial and better off
+                # hand.
+
+                if section in results:
+                    extra = 1
+                    too_many = 10
+                    while section in results and extra < too_many:
+                        section = "%s.%s" % (section, extra)
+                        extra += 1
+                        if extra >= too_many:
+                            fubar("gave up trying to unduplicate %s." % (section))
+
+                results[section] = {}
+                continue
+
+        got_state = 0
+        for state in [ "PASS", "XPASS", "FAIL", "XFAIL", "UNRESOLVED",
+                       "UNTESTED", "UNSUPPORTED" ]:
+            if line.startswith(state):
+                s = line.split(':')
+                state = s[0]
+                test = ':'.join(s[1:]).strip()
+                if test in results:
+                    warn("%s/%s is duplicated." % (section, test))
+                results[section][test] = state
+                got_state = 1
+                break
+
+        if got_state:
+            continue
+
+    return results
+
+################################################################################
+
+def compare_results(old, new):
+    total_num = 0
+    pass_count = 0
+    fail_count = 0
+    xfail_count = 0
+    untested_count = 0
+    regression_count = 0
+    progression_count = 0
+    change_count = 0
+
+    for section in list(new.keys()):
+        for test in list(new[section].keys()):
+            state = new[section][test]
+
+            # Stats pr0n
+            total_num += 1
+            if state == "PASS" or state == "XPASS":
+                pass_count += 1
+            elif state == "FAIL" or state == "UNRESOLVED":
+                fail_count += 1
+            elif state == "XFAIL":
+                xfail_count += 1
+            elif state == "UNTESTED":
+                untested_count += 1
+
+            # Compare to old
+            if section not in old:
+                continue
+            if test not in old[section]:
+                continue
+            old_state = old[section][test]
+            if state == "PASS":
+                if old_state != "PASS":
+                    progression_count += 1
+                    info("[%s] progression (%s -> %s): %s" % (section, old_state, state, test))
+            elif state == "XPASS":
+                if old_state != "XPASS" and old_state != "PASS":
+                    progression_count += 1
+                    warn("[%s] %s: %s" % (section, state, test))
+            elif state == "FAIL":
+                if old_state != "FAIL":
+                    regression_count += 1
+                    warn("[%s] REGRESSION (%s -> %s): %s" % (section, old_state, state, test))
+            elif state == "XFAIL":
+                if old_state != "XFAIL":
+                    change_count += 1
+                    info("[%s] change (%s -> %s): %s" % (section, old_state, state, test))
+            elif state == "UNRESOLVED":
+                if old_state != "UNRESOLVED" and old_state != "FAIL":
+                    regression_count += 1
+                    warn("[%s] REGRESSION (%s -> %s): %s" % (section, old_state, state, test))
+                if old_state == "FAIL":
+                    change_count += 1
+                    info("[%s] change (%s -> %s): %s" % (section, old_state, state, test))
+            elif state == "UNTESTED":
+                if old_state != "UNTESTED":
+                    change_count += 1
+                    warn("[%s] REGRESSION (%s -> %s): %s" % (section, old_state, state, test))
+
+    if regression_count:
+        print("%d REGRESSIONS (%.2f%%)." % (regression_count, (float(regression_count)/total_num)*100))
+    if progression_count:
+        print("%d progressions (%.2f%%)." % (progression_count, (float(progression_count)/total_num)*100))
+
+    if change_count:
+        print("%d changes (%.2f%%)." % (change_count, (float(change_count)/total_num)*100))
+
+    print("%d tests: %d pass (%.2f%%), %d fail (%.2f%%), %d xfail (%.2f%%) %d untested (%.2f%%)." \
+          % (total_num, pass_count, (float(pass_count)/total_num)*100,
+             fail_count, (float(fail_count)/total_num)*100,
+             xfail_count, (float(xfail_count)/total_num)*100,
+             untested_count, (float(untested_count)/total_num)*100))
+
+    if regression_count:
+        sys.exit(1)
+
+################################################################################
+
+def compare_multiple(directory, first_version, second_version):
+    architectures = [ "alpha", "arm", "hppa", "i386", "ia64", "mips",
+                      "m68k", "mipsel", "powerpc", "s390", "sparc" ]
+
+    for arch in architectures:
+        print("*********************************** %s ******************************" % (arch))
+        second_filename = "%s/%s_%s" % (directory, second_version, arch)
+        if not os.path.exists(second_filename):
+            print("   -- NOT AVAILABLE --")
+            continue
+
+        new = read_testsummary(second_filename)
+        first_filename = "%s/%s_%s" % (directory, first_version, arch)
+        old = read_testsummary(first_filename)
+        compare_results(old, new)
+
+################################################################################
+
+def init():
+    """Initalization, including parsing of options."""
+
+    usage = """usage: %prog [OPTIONS] <OLD> <NEW>
+compare (binutils) dejagnu testsuite results.
+
+Example usage:
+
+  test-suite-compare.py binutils-2.17/test-summary binutils-2.18/test-summary
+
+Or to compare across all architectures (with test results stored in a
+'test-summary' directory):
+
+  test-suite-compare.py -mtest-summary 2.17-3 2.18-1"""
+    parser = optparse.OptionParser(usage)
+    parser.add_option("-m", "--multiple", dest="multiple",
+                      nargs=1, type="string",
+                      help="compare multiple architectures")
+    (options, args) = parser.parse_args()
+
+    if len(args) > 2 or len(args) < 2:
+        parser.error("takes 2 arguments (old and new)")
+    (old_version, new_version) = args
+
+    return options, old_version, new_version
+            
+################################################################################
+
+def main():
+    (options, old_version, new_version) = init()
+    if options.multiple:
+        compare_multiple(options.multiple, old_version, new_version)
+    else:
+        old = read_testsummary(old_version)
+        new = read_testsummary(new_version)
+        compare_results(old, new)
+
+################################################################################
+
+if __name__ == '__main__':
+    main()
diff --git a/tests/build b/tests/build
new file mode 100644 (file)
index 0000000..79ec27b
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+set -e
+
+CPUS=$(getconf _NPROCESSORS_ONLN)
+case "$CPUS" in
+  [0-9]|[0-9][0-9]|[0-9][0-9][0-9]) ;;
+  *) CPUS=1
+esac
+
+if [ -n "${DEB_HOST_ARCH:-}" ]; then
+    CROSS="-a$DEB_HOST_ARCH"
+else
+    CROSS=
+fi
+
+
+set -x
+DEB_BUILD_OPTIONS="parallel=$CPUS nohppa nomult nocross" dpkg-buildpackage -d -B --no-sign $CROSS
diff --git a/tests/control b/tests/control
new file mode 100644 (file)
index 0000000..878cfe5
--- /dev/null
@@ -0,0 +1,17 @@
+Tests: build
+# this doesn't work well, without building -hppa, -multiarch and -cross packages
+#Depends: build-essential
+#Restrictions: build-needed
+Depends: build-essential,
+  fakeroot,
+  autoconf (>= 2.64),
+  bison, flex, gettext, texinfo, dejagnu, quilt, chrpath, dwz,
+  python3:any, file, xz-utils, lsb-release, zlib1g-dev, procps, libstdc++-dev
+# build process emits warnings on stderr
+Restrictions: allow-stderr
+
+Tests: libc-link
+Depends: build-essential
+
+Tests: shlib-build
+Depends: build-essential
diff --git a/tests/libc-link b/tests/libc-link
new file mode 100644 (file)
index 0000000..09bfc8d
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/sh
+# autopkgtest check: Build and run a simple program against libc, to verify
+# basic binutils compile-time and run-time linking functionality.
+#
+# (C) 2012 Canonical Ltd.
+# Author: Martin Pitt <martin.pitt@ubuntu.com>
+
+set -e
+
+WORKDIR=$(mktemp -d)
+trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM
+cd $WORKDIR
+cat <<EOF > libctest.c
+#include <string.h>
+#include <assert.h>
+
+int main()
+{
+    assert (1 > 0);
+    assert (strcmp ("hello", "hello") == 0);
+    return 0;
+}
+EOF
+
+gcc -o libctest libctest.c
+echo "build: OK"
+[ -x libctest ]
+./libctest
+echo "run: OK"
diff --git a/tests/shlib-build b/tests/shlib-build
new file mode 100644 (file)
index 0000000..a214563
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/sh
+# autopkgtest check: Build and link against a simple shared library, to test
+# basic binutils compile-time and run-time linking functionality.
+#
+# (C) 2012 Canonical Ltd.
+# Author: Martin Pitt <martin.pitt@ubuntu.com>
+
+set -e
+
+WORKDIR=$(mktemp -d)
+trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM
+cd $WORKDIR
+cat <<EOF > testlib.c
+
+int ultimate_answer()
+{
+    return 42;
+}
+EOF
+
+gcc -Wall -Werror -shared -o libultimate.so testlib.c
+echo "library build: OK"
+
+# should export the symbol
+nm -D libultimate.so | grep -q 'T ultimate_answer'
+
+# link it against a program
+cat <<EOF > testprog.c
+#include <assert.h>
+
+int ultimate_answer();
+
+int main()
+{
+    assert (ultimate_answer() == 42);
+    return 0;
+}
+EOF
+
+gcc -Wall -Werror -L . -o testprog testprog.c -lultimate
+echo "program build: OK"
+[ -x testprog ]
+LD_LIBRARY_PATH=. ./testprog
+echo "run: OK"
diff --git a/watch b/watch
new file mode 100644 (file)
index 0000000..69cbc8a
--- /dev/null
+++ b/watch
@@ -0,0 +1,2 @@
+version=2
+http://ftp.gnu.org/gnu/binutils/binutils-([\d\.]*).tar.gz