From ead91747fe7370be6c00315cffcbcb27299dd5a3 Mon Sep 17 00:00:00 2001 From: Matthias Klose Date: Thu, 17 Dec 2020 19:42:32 +0000 Subject: [PATCH 1/1] Import binutils_2.35.1-5.debian.tar.xz [dgit import tarball binutils 2.35.1-5 binutils_2.35.1-5.debian.tar.xz] --- README.cross | 27 + binutils-common.overrides | 2 + binutils-cross.overrides | 15 + binutils-hppa64-linux-gnu.overrides | 10 + binutils-multiarch-dev.overrides | 2 + binutils-multiarch.overrides | 13 + binutils-multiarch.postinst.in | 80 + binutils-multiarch.postrm.in | 47 + binutils-multiarch.preinst.in | 29 + binutils-multiarch.prerm.in | 98 + binutils-multiarch.shlibs.in | 4 + binutils-triplet.overrides | 4 + binutils.overrides | 6 + binutils.presubj | 25 + binutils.triggers | 1 + changelog | 5991 ++++++++ control | 1056 ++ control.cross.in | 27 + control.in | 224 + copyright | 45 + dwp.1 | 33 + gfdl.texi | 41 + ld.gold.1 | 884 ++ libbinutils.overrides | 5 + libbinutils.shlibs.in | 2 + libctf-nobfd0.symbols | 2 + libctf0.symbols | 2 + patches/001_ld_makefile_patch.patch | 27 + patches/002_gprof_profile_arcs.patch | 29 + patches/003_gprof_see_also_monitor.patch | 15 + patches/006_better_file_error.patch | 19 + patches/013_bash_in_ld_testsuite.patch | 13 + patches/014_hash_style-both.patch | 30 + patches/014_hash_style-gnu.patch | 31 + patches/127_x86_64_i386_biarch.patch | 20 + patches/128_build_id.patch | 42 + patches/128_ppc64_powerpc_biarch.patch | 17 + patches/129_multiarch_libpath.patch | 341 + .../130_gold_disable_testsuite_build.patch | 26 + patches/131_ld_bootstrap_testsuite.patch | 45 + patches/135_bfd_soversion.patch | 38 + patches/136_bfd_pic.patch | 25 + patches/157_ar_scripts_with_tilde.patch | 13 + patches/158_ld_system_root.patch | 42 + patches/161_gold_dummy_zoption.diff | 25 + patches/164_ld_doc_remove_xref.diff | 14 + patches/aarch64-libpath.diff | 27 + patches/binutils-no-development.diff | 10 + patches/branch-no-development.diff | 11 + patches/branch-updates.diff | 12254 ++++++++++++++++ patches/branch-version.diff | 603 + patches/gold-mips.diff | 39 + patches/gold-no-keep-files-mapped.diff | 14 + patches/gprof-build.diff | 16 + patches/infinity-notes.diff | 183 + patches/libctf-soname.diff | 446 + patches/mips64-default-n64.diff | 74 + patches/pgo+lto-1.diff | 616 + patches/pgo+lto-2.diff | 1090 ++ patches/pgo+lto-3.diff | 499 + patches/pgo+lto-check-ignore.diff | 44 + patches/pr-ld-16428.diff | 158 + patches/series | 39 + rules | 1957 +++ source.lintian-overrides | 12 + source/format | 1 + test-suite-compare.py | 230 + tests/build | 19 + tests/control | 17 + tests/libc-link | 29 + tests/shlib-build | 44 + watch | 2 + 72 files changed, 27921 insertions(+) create mode 100644 README.cross create mode 100644 binutils-common.overrides create mode 100644 binutils-cross.overrides create mode 100644 binutils-hppa64-linux-gnu.overrides create mode 100644 binutils-multiarch-dev.overrides create mode 100644 binutils-multiarch.overrides create mode 100644 binutils-multiarch.postinst.in create mode 100644 binutils-multiarch.postrm.in create mode 100644 binutils-multiarch.preinst.in create mode 100644 binutils-multiarch.prerm.in create mode 100644 binutils-multiarch.shlibs.in create mode 100644 binutils-triplet.overrides create mode 100644 binutils.overrides create mode 100644 binutils.presubj create mode 100644 binutils.triggers create mode 100644 changelog create mode 100644 control create mode 100644 control.cross.in create mode 100644 control.in create mode 100644 copyright create mode 100644 dwp.1 create mode 100644 gfdl.texi create mode 100644 ld.gold.1 create mode 100644 libbinutils.overrides create mode 100644 libbinutils.shlibs.in create mode 100644 libctf-nobfd0.symbols create mode 100644 libctf0.symbols create mode 100644 patches/001_ld_makefile_patch.patch create mode 100644 patches/002_gprof_profile_arcs.patch create mode 100644 patches/003_gprof_see_also_monitor.patch create mode 100644 patches/006_better_file_error.patch create mode 100644 patches/013_bash_in_ld_testsuite.patch create mode 100644 patches/014_hash_style-both.patch create mode 100644 patches/014_hash_style-gnu.patch create mode 100644 patches/127_x86_64_i386_biarch.patch create mode 100644 patches/128_build_id.patch create mode 100644 patches/128_ppc64_powerpc_biarch.patch create mode 100644 patches/129_multiarch_libpath.patch create mode 100644 patches/130_gold_disable_testsuite_build.patch create mode 100644 patches/131_ld_bootstrap_testsuite.patch create mode 100644 patches/135_bfd_soversion.patch create mode 100644 patches/136_bfd_pic.patch create mode 100644 patches/157_ar_scripts_with_tilde.patch create mode 100644 patches/158_ld_system_root.patch create mode 100644 patches/161_gold_dummy_zoption.diff create mode 100644 patches/164_ld_doc_remove_xref.diff create mode 100644 patches/aarch64-libpath.diff create mode 100644 patches/binutils-no-development.diff create mode 100644 patches/branch-no-development.diff create mode 100644 patches/branch-updates.diff create mode 100644 patches/branch-version.diff create mode 100644 patches/gold-mips.diff create mode 100644 patches/gold-no-keep-files-mapped.diff create mode 100644 patches/gprof-build.diff create mode 100644 patches/infinity-notes.diff create mode 100644 patches/libctf-soname.diff create mode 100644 patches/mips64-default-n64.diff create mode 100644 patches/pgo+lto-1.diff create mode 100644 patches/pgo+lto-2.diff create mode 100644 patches/pgo+lto-3.diff create mode 100644 patches/pgo+lto-check-ignore.diff create mode 100644 patches/pr-ld-16428.diff create mode 100644 patches/series create mode 100755 rules create mode 100644 source.lintian-overrides create mode 100644 source/format create mode 100644 test-suite-compare.py create mode 100644 tests/build create mode 100644 tests/control create mode 100644 tests/libc-link create mode 100644 tests/shlib-build create mode 100644 watch diff --git a/README.cross b/README.cross new file mode 100644 index 000000000..f118d3b36 --- /dev/null +++ b/README.cross @@ -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= 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 + "") + +-- +Hector Oron +Marcin Juszkiewicz +Matthias Klose +Nikita Youshchenko diff --git a/binutils-common.overrides b/binutils-common.overrides new file mode 100644 index 000000000..65ee8dc90 --- /dev/null +++ b/binutils-common.overrides @@ -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 index 000000000..e5e9ca5df --- /dev/null +++ b/binutils-cross.overrides @@ -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 index 000000000..ce5267c97 --- /dev/null +++ b/binutils-hppa64-linux-gnu.overrides @@ -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 index 000000000..1a81c37e4 --- /dev/null +++ b/binutils-multiarch-dev.overrides @@ -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 index 000000000..010ad55bc --- /dev/null +++ b/binutils-multiarch.overrides @@ -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 index 000000000..a1a460ec3 --- /dev/null +++ b/binutils-multiarch.postinst.in @@ -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 index 000000000..7b9438597 --- /dev/null +++ b/binutils-multiarch.postrm.in @@ -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 index 000000000..385f62568 --- /dev/null +++ b/binutils-multiarch.preinst.in @@ -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 index 000000000..45e273b4a --- /dev/null +++ b/binutils-multiarch.prerm.in @@ -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 index 000000000..4fc004d09 --- /dev/null +++ b/binutils-multiarch.shlibs.in @@ -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 index 000000000..9fba6aa37 --- /dev/null +++ b/binutils-triplet.overrides @@ -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 index 000000000..38c836419 --- /dev/null +++ b/binutils.overrides @@ -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 index 000000000..430e6e44c --- /dev/null +++ b/binutils.presubj @@ -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 index 000000000..dd8660367 --- /dev/null +++ b/binutils.triggers @@ -0,0 +1 @@ +activate-noawait ldconfig diff --git a/changelog b/changelog new file mode 100644 index 000000000..99852e8b9 --- /dev/null +++ b/changelog @@ -0,0 +1,5991 @@ +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 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 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 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 Fri, 09 Oct 2020 17:10:08 +0200 + +binutils (2.35.1-1) unstable; urgency=medium + + * binutils 2.35.1 release. + + -- Matthias Klose 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 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 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 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 Mon, 06 Jul 2020 21:10:37 +0200 + +binutils (2.34.50.20200605-1) experimental; urgency=medium + + * New upstream snapshot. + + -- Matthias Klose Fri, 05 Jun 2020 10:56:37 +0200 + +binutils (2.34.50.20200512-1) experimental; urgency=medium + + * New upstream snapshot. + + -- Matthias Klose 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 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 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 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 Sat, 22 Feb 2020 09:49:46 +0100 + +binutils (2.34-2) unstable; urgency=medium + + * Regenerate the control file. + + -- Matthias Klose Sun, 02 Feb 2020 17:46:11 +0100 + +binutils (2.34-1) unstable; urgency=medium + + * New upstream release. + * Bump standards version. + + -- Matthias Klose 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 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 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 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 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 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 Sat, 11 Jan 2020 14:24:29 +0100 + +binutils (2.33.50.20200107-1) unstable; urgency=medium + + * New upstream snapshot. + + -- Matthias Klose Tue, 07 Jan 2020 23:19:25 +0100 + +binutils (2.33.50.20200105-2) experimental; urgency=medium + + * New upstream snapshot. + + -- Matthias Klose Sun, 05 Jan 2020 11:33:49 +0100 + +binutils (2.33.50.20191212-1) experimental; urgency=medium + + * New upstream snapshot. + + -- Matthias Klose Thu, 12 Dec 2019 16:16:13 +0100 + +binutils (2.33.50.20191205-1) experimental; urgency=medium + + * New upstream snapshot. + + -- Matthias Klose 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 Thu, 28 Nov 2019 09:57:31 +0100 + +binutils (2.33.50.20191121-2) experimental; urgency=medium + + * Fix packaging cross targets. + + -- Matthias Klose 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 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 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 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 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 Sun, 20 Oct 2019 21:28:38 +0200 + +binutils (2.33.1-1) unstable; urgency=medium + + * Binutils 2.33.1 release. + + -- Matthias Klose 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 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 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 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 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 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 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 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 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 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 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 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 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- from Multi-Arch: foreign to Multi-Arch: allowed + (Helmut Grohne). Closes: #920286. + * Let binutils-for-host Depends: binutils-:any. + + -- Matthias Klose 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 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 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 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 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 Sat, 09 Feb 2019 13:12:21 +0100 + +binutils (2.32-1) experimental; urgency=medium + + * New upstream version. + + -- Matthias Klose 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 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 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 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 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 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 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 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 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 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 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 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 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 Wed, 18 Jul 2018 11:58:00 +0200 + +binutils (2.31-1) unstable; urgency=medium + + * Binutils 2.31 release. + + -- Matthias Klose 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 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 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 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 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 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 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 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 Wed, 16 May 2018 10:21:19 -0400 + +binutils (2.30-19) unstable; urgency=medium + + * Build-depend on procps. + + -- Matthias Klose 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 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 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 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 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 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 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 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 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 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 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-. Closes: #891377. + * Build binutils-for-host for TARGET (Helmut Grohne). Closes: #891863. + + -- Matthias Klose 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 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 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 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 Mon, 05 Feb 2018 16:22:40 +0100 + +binutils (2.30-1) unstable; urgency=medium + + * Binutils 2.30 release. + + -- Matthias Klose 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 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 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 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 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 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 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 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 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 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 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 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 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- packages. + + -- Matthias Klose 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 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 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 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 Wed, 20 Sep 2017 10:11:56 +0200 + +binutils (2.29-13) unstable; urgency=medium + + * Build again all cross packages. + + -- Matthias Klose 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 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//ldscripts and move + ldscripts into the binutils- packages. + * Install the unprefixed manual packages into binutils-common and + derive the timestamps from the debian/changelog entry. + * binutils-: Remove dependency on binutils. + + -- Matthias Klose 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 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 Wed, 30 Aug 2017 08:03:09 +0200 + +binutils (2.29-7) unstable; urgency=high + + * Fix binutils dependency on binutils- on non amd64 architectures. + + -- Matthias Klose 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- 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 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 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 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 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 Mon, 31 Jul 2017 09:17:30 +0200 + +binutils (2.29-1) unstable; urgency=medium + + * binutils 2.29 release. + + -- Matthias Klose 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Fri, 12 Aug 2016 09:27:17 +0200 + +binutils (2.27-4) unstable; urgency=medium + + * Fix gold on mipsr6 targets (Aurelian Jarno). + + -- Matthias Klose 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 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 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 Sun, 07 Aug 2016 13:38:27 +0200 + +binutils (2.26.1-1) unstable; urgency=medium + + * binutils 2.26.1 release. + + -- Matthias Klose 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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//lib*. + * Run the testsuite for all cross targets. + * Configure with --disable-compressed-debug-sections. + + -- Matthias Klose 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 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 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 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 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 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 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 Tue, 15 Sep 2015 01:54:21 +0200 + +binutils (2.25.1-1) unstable; urgency=medium + + * Binutils 2.25.1 release. + + -- Matthias Klose 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Mon, 18 Aug 2014 13:49:01 +0200 + +binutils (2.24.51.20140814-2) unstable; urgency=medium + + * Still provide i486-* symlinks. + + -- Matthias Klose 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Fri, 27 Sep 2013 14:05:44 +0200 + +binutils (2.23.52.20130828-1) unstable; urgency=low + + * New upstream snapshot. + + -- Matthias Klose Wed, 28 Aug 2013 15:22:51 +0200 + +binutils (2.23.52.20130727-1) unstable; urgency=low + + * New upstream snapshot. + + -- Matthias Klose 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 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 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 Wed, 12 Jun 2013 11:35:05 +0200 + +binutils (2.23.52.20130522-1) experimental; urgency=low + + * New upstream snapshot. + + -- Matthias Klose 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 Tue, 16 Apr 2013 02:21:44 +0200 + +binutils (2.23.2-1) experimental; urgency=low + + * binutils 2.23.2 release. + + -- Matthias Klose 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 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 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 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 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 Wed, 21 Nov 2012 13:47:06 +0100 + +binutils (2.23.1-1~exp1) experimental; urgency=low + + * binutils 2.23.1 release. + + -- Matthias Klose 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 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 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 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 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 Thu, 13 Sep 2012 20:35:08 +0200 + +binutils (2.22.90.20120907-2) experimental; urgency=low + + * Fix build failure on kfreebsd. + + -- Matthias Klose 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 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 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 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 Tue, 31 Jul 2012 22:20:22 +0200 + +binutils (2.22.52.20120704-1) experimental; urgency=low + + * New upstream snapshot. + + -- Matthias Klose 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 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 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 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 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 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 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 Sun, 11 Dec 2011 16:30:14 +0000 + +binutils (2.22-1) unstable; urgency=low + + * Binutils 2.22 release. + + -- Matthias Klose 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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- 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 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 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 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 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 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 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 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 Wed, 27 Apr 2011 18:14:39 +0200 + +binutils (2.21.51.20110419-2) unstable; urgency=low + + * Fix powerpcspe and sparc builds. + + -- Matthias Klose 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 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 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 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 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 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 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 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 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 Wed, 02 Mar 2011 02:41:17 +0100 + +binutils (2.21.0.20110216-2) unstable; urgency=low + + * Upload to unstable. + + -- Matthias Klose 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 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 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 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 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 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 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 Sun, 21 Nov 2010 14:03:14 +0100 + +binutils (2.20.90.20101105-2) experimental; urgency=low + + * binutils 2.21 prerelease 1. + + -- Matthias Klose 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 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 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 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 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 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 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 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 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 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 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 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 Wed, 28 Apr 2010 10:07:28 +0200 + +binutils (2.20.51.20100418-2) experimental; urgency=low + + * Add upper dependency + + -- Matthias Klose 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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= 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 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= in DEB_BUILD_OPTIONS (see #209008). + * debian/*.shlibs: Update to snapshot version. + + -- Matthias Klose 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 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 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 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 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 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 Mon, 14 May 2007 10:51:40 +0200 + +binutils (2.17cvs20070426-5) unstable; urgency=low + + * Fix PR ld/4454. + + -- Matthias Klose 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 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 Mon, 30 Apr 2007 07:47:09 +0200 + +binutils (2.17cvs20070426-2) unstable; urgency=low + + * Fix typo preparing the binutils-hppa64 package. + + -- Matthias Klose 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 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 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 + 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 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 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 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 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 + . Closes: #315290 + + * Integrate most of a patch to build arbitrary binutils-$TARGET + cross-packages from #231707. Thanks to Nikita V. Youshchenko + and Josh Triplett . + + * 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 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 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 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 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 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 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 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 . + Closes: #318344 + + -- James Troup 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 + , objcopy --only-keep-debug and readelf SHT_NOBITS + fixes. + + -- James Troup 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 + . 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 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 + to fix fmoveml disassembly and associated + testsuite regression on m68k. + + -- James Troup 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 + to fix ld segfault on powerpc. Thanks to + Josselin Mouette for the report. Closes: #219187 + + -- James Troup 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 + . + + * 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 and Daniel + Jacobowitz 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 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 + to fix regressions on alpha caused by + 103_static_linking_elf_eh_frame. Thanks to Thimo Neubauer + for the original report. Closes: #215636 + + -- James Troup 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 + 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 to enable + mips64 support. Closes: #213448 + + -- James Troup 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 + 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 + 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 + to fix an as regression where it refused to + compile utils.S from Linux/PPC 2.6. Closes: #211668 + + -- James Troup 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 + 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 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 - this is obsolete, it was working around a + bug in ld since fixed by Daniel Jacobowitz 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 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 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 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 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 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 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 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 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) 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 + 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) 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 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 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 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 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 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 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 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 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 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 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 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 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 (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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Thu, 24 Aug 2000 16:52:44 -0400 + +binutils (2.10.0.18-3) unstable; urgency=low + + * Added build depends stuff. + + -- Christopher C. Chimelis 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Sun, 6 Jun 1999 01:27:10 -0400 + +binutils (2.9.4.0.1-0.1) unstable; urgency=low + + * New upstream version. + + -- Daniel Jacobowitz 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Mon, 5 Oct 1998 23:02:08 -0500 + +binutils (2.9.1-0.2) frozen unstable; urgency=low + + * Fixed binutils-dev dependencies. + + -- Joel Klecker 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 index 000000000..f349be0e6 --- /dev/null +++ b/control @@ -0,0 +1,1056 @@ +Source: binutils +Section: devel +Priority: optional +Maintainer: Matthias Klose +Uploaders: James Troup +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] , + g++-arm-linux-gnueabi [amd64 arm64 i386 x32] , + g++-arm-linux-gnueabihf [amd64 arm64 i386 x32] , + g++-powerpc64le-linux-gnu [amd64 arm64 i386 ppc64 x32] , + g++-s390x-linux-gnu [amd64 arm64 i386 ppc64el x32] , + g++-alpha-linux-gnu [amd64 i386 x32] , + g++-hppa-linux-gnu [amd64 i386 x32] , + g++-m68k-linux-gnu [amd64 i386 x32] , + g++-powerpc-linux-gnu [amd64 i386 ppc64el x32] , + g++-powerpc64-linux-gnu [amd64 i386 x32] , + g++-riscv64-linux-gnu [amd64 arm64 i386 ppc64el x32] , + g++-sh4-linux-gnu [amd64 i386 x32] , + g++-sparc64-linux-gnu [amd64 i386 x32] , + g++-i686-linux-gnu [amd64 arm64 ppc64el x32] , + g++-x86-64-linux-gnu [arm64 i386 ppc64el] , + g++-x86-64-linux-gnux32 [amd64 arm64 i386 ppc64el] , +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 index 000000000..20142c751 --- /dev/null +++ b/control.cross.in @@ -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 index 000000000..63cd8d5c0 --- /dev/null +++ b/control.in @@ -0,0 +1,224 @@ +Source: binutils +Section: devel +Priority: optional +Maintainer: Matthias Klose +Uploaders: James Troup +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] , + g++-arm-linux-gnueabi [amd64 arm64 i386 x32] , + g++-arm-linux-gnueabihf [amd64 arm64 i386 x32] , + g++-powerpc64le-linux-gnu [amd64 arm64 i386 ppc64 x32] , + g++-s390x-linux-gnu [amd64 arm64 i386 ppc64el x32] , + g++-alpha-linux-gnu [amd64 i386 x32] , + g++-hppa-linux-gnu [amd64 i386 x32] , + g++-m68k-linux-gnu [amd64 i386 x32] , + g++-powerpc-linux-gnu [amd64 i386 ppc64el x32] , + g++-powerpc64-linux-gnu [amd64 i386 x32] , + g++-riscv64-linux-gnu [amd64 arm64 i386 ppc64el x32] , + g++-sh4-linux-gnu [amd64 i386 x32] , + g++-sparc64-linux-gnu [amd64 i386 x32] , + g++-i686-linux-gnu [amd64 arm64 ppc64el x32] , + g++-x86-64-linux-gnu [arm64 i386 ppc64el] , + g++-x86-64-linux-gnux32 [amd64 arm64 i386 ppc64el] , +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 index 000000000..6bb0089d6 --- /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 , +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 + +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 index 000000000..295953302 --- /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 +.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 index 000000000..695e4ae72 --- /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 index 000000000..41416b52b --- /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 +.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 index 000000000..67e71e719 --- /dev/null +++ b/libbinutils.overrides @@ -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 index 000000000..6964e2919 --- /dev/null +++ b/libbinutils.shlibs.in @@ -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 index 000000000..87fc40a98 --- /dev/null +++ b/libctf-nobfd0.symbols @@ -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 index 000000000..8e9e5487a --- /dev/null +++ b/libctf0.symbols @@ -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 index 000000000..0709a8cb1 --- /dev/null +++ b/patches/001_ld_makefile_patch.patch @@ -0,0 +1,27 @@ +Author: +Description: Description: correct where ld scripts are installed +Author: Chris Chimelis +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 index 000000000..a97f4db9e --- /dev/null +++ b/patches/002_gprof_profile_arcs.patch @@ -0,0 +1,29 @@ +Author: Chris Chimelis +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 index 000000000..38f91561b --- /dev/null +++ b/patches/003_gprof_see_also_monitor.patch @@ -0,0 +1,15 @@ +Author: Chris Chimelis +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 index 000000000..408921ea9 --- /dev/null +++ b/patches/006_better_file_error.patch @@ -0,0 +1,19 @@ +Author: David Kimdon +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 index 000000000..435f225bc --- /dev/null +++ b/patches/013_bash_in_ld_testsuite.patch @@ -0,0 +1,13 @@ +Author: Matthias Klose +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 index 000000000..61c3e6132 --- /dev/null +++ b/patches/014_hash_style-both.patch @@ -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 index 000000000..b43b718e9 --- /dev/null +++ b/patches/014_hash_style-gnu.patch @@ -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 index 000000000..b75ac8271 --- /dev/null +++ b/patches/127_x86_64_i386_biarch.patch @@ -0,0 +1,20 @@ +Author: +Description: Description: Add (/usr)/lib32 to the search paths on x86_64. +Author: Aurelien Jarno +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 index 000000000..cba02de07 --- /dev/null +++ b/patches/128_build_id.patch @@ -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 index 000000000..a72fb513f --- /dev/null +++ b/patches/128_ppc64_powerpc_biarch.patch @@ -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 index 000000000..5edd51db9 --- /dev/null +++ b/patches/129_multiarch_libpath.patch @@ -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 index 000000000..7e1d1afa1 --- /dev/null +++ b/patches/130_gold_disable_testsuite_build.patch @@ -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 index 000000000..bbe239ec0 --- /dev/null +++ b/patches/131_ld_bootstrap_testsuite.patch @@ -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 index 000000000..1b6e3b2fa --- /dev/null +++ b/patches/135_bfd_soversion.patch @@ -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 index 000000000..f2000346a --- /dev/null +++ b/patches/136_bfd_pic.patch @@ -0,0 +1,25 @@ +Author: Balint Reczey +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 index 000000000..b1cb8b773 --- /dev/null +++ b/patches/157_ar_scripts_with_tilde.patch @@ -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 index 000000000..27c07a636 --- /dev/null +++ b/patches/158_ld_system_root.patch @@ -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 index 000000000..29f29dbdb --- /dev/null +++ b/patches/161_gold_dummy_zoption.diff @@ -0,0 +1,25 @@ +# DP: let gold accept a dummy -z buildd- 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 index 000000000..ac379f929 --- /dev/null +++ b/patches/164_ld_doc_remove_xref.diff @@ -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 index 000000000..ef43bf786 --- /dev/null +++ b/patches/aarch64-libpath.diff @@ -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 index 000000000..9eba2f07f --- /dev/null +++ b/patches/binutils-no-development.diff @@ -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 . + + # 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 index 000000000..ecbe9c3b0 --- /dev/null +++ b/patches/branch-no-development.diff @@ -0,0 +1,11 @@ +--- a/bfd/development.sh ++++ b/bfd/development.sh +@@ -16,7 +16,7 @@ + # along with this program. If not, see . + + # 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 index 000000000..5b4a36295 --- /dev/null +++ b/patches/branch-updates.diff @@ -0,0 +1,12254 @@ +# DP: updates from the binutils-2.35 branch + +# git diff 7e46a74aa3713c563940960e361e08defda019c2 28193e11686698fe41133bbdae49f128de87bbb3 + +diff --git a/bfd/ChangeLog b/bfd/ChangeLog +index 9fac12538a..6114b73a05 100644 +--- a/bfd/ChangeLog ++++ b/bfd/ChangeLog +@@ -1,3 +1,88 @@ ++2020-12-04 H.J. Lu ++ ++ 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 ++ ++ * elf64-ppc.c (write_plt_relocs_for_local_syms): Don't do local ++ entry offset optimisation. ++ ++2020-10-07 H.J. Lu ++ ++ 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 ++ ++ 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 ++ ++ * 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 ++ ++ Import from mainline: ++ 2020-08-29 Nick Clifton ++ ++ PR 26520 ++ * dwarf2.c (scan_unit_for_symbols): Add member entries to the ++ variable table. ++ ++2020-09-24 Alan Modra ++ ++ 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 ++ ++ 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 ++ ++ Apply from master ++ 2020-08-13 Alan Modra ++ * 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 ++ ++ * development.sh (development): Set to true. ++ + 2020-09-19 Nick Clifton + + This is the 2.35.1 point release. +diff --git a/bfd/development.sh b/bfd/development.sh +index 32be4b9460..6bbed41d6d 100644 +--- a/bfd/development.sh ++++ b/bfd/development.sh +@@ -16,7 +16,7 @@ + # along with this program. If not, see . + + # 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 b8f0008a10..977bf43a6a 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 4bf37e1d98..ec8c85eba5 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 547971f8be..0492fd7fad 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 311fb28a90..7eb1afe614 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/elfxx-x86.c b/bfd/elfxx-x86.c +index e58ddc19cf..143aae4b5c 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 617fdb7a5d..3537290a99 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 20201206 + #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 76ba6d9840..9dc7136863 100644 +--- a/binutils/ChangeLog ++++ b/binutils/ChangeLog +@@ -1,3 +1,117 @@ ++2020-11-22 Alan Modra ++ ++ PR 26929 ++ Apply from mainline ++ 2020-07-06 Alan Modra ++ * readelf.c (print_dynamic_symbol): Don't sprintf to buffer to ++ find string length. ++ ++2020-11-16 Mark Wielaard ++ ++ Backport from the mainline: ++ 2020-10-29 H.J. Lu ++ ++ 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 ++ ++ Backport from the mainline: ++ 2020-11-10 Nick Clifton ++ ++ * dwarf.c (skip_attr_bytes): Correctly handle DW_FORM_ref8. ++ (get_type_abbrev_from_form): Accept DW_FORM_ref8. ++ ++2020-11-15 Mark Wielaard ++ ++ Backport from the mainline: ++ 2020-10-27 Nick Clifton ++ ++ * 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 ++ ++ Backport from the mainline: ++ 2020-10-21 Nick Clifton ++ ++ * 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 ++ ++ Backport from the mainline: ++ 2020-11-11 Bernd Edlinger ++ ++ * dwarf.c (display_debug_rnglists_list): Only bias the ++ DW_RLS_offset_pair with the base address. ++ ++2020-11-15 Mark Wielaard ++ ++ Backport from the mainline: ++ 2020-09-29 Mark Wielaard ++ ++ * 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 ++ ++ Backport from the mainline: ++ 2020-09-23 Mark Wielaard ++ ++ * 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 ++ ++ Backport from the mainline: ++ 2020-09-23 Mark Wielaard ++ ++ * 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 + + This is the 2.35.1 point release. +diff --git a/binutils/dwarf.c b/binutils/dwarf.c +index cc13fe067f..91b61e3fdf 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", delimiter, dwarf_vmatoa ("x",uvalue)); ++ printf ("%c", 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/readelf.c b/binutils/readelf.c +index 6057515a89..41547a2594 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 2eccb03c5a..cb949ad49c 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>: 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 3a4e740988..4e8386ae88 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>: 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 0000000000..f64f9d008f +--- /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>: Abbrev Number: 12 (DW_TAG_compile_unit) ++ 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) ++ DW_AT_external : 1 ++ DW_AT_name : main ++ DW_AT_decl_file : 1 ++ DW_AT_decl_line : 30 ++ DW_AT_type : <0x90> ++ DW_AT_low_pc : (addr_index: 0x0): ++ DW_AT_high_pc : 0x304 ++ DW_AT_frame_base : 1 byte block: 9c (DW_OP_call_frame_cfa) ++ DW_AT_GNU_all_tail_call_sites: 1 ++ DW_AT_sibling : <0x11b> ++ <2>: Abbrev Number: 14 (DW_TAG_lexical_block) ++ DW_AT_low_pc : (addr_index: 0x1): ++ DW_AT_high_pc : 0x2fa ++ <3>: Abbrev Number: 15 (DW_TAG_variable) ++ DW_AT_name : c1 ++ DW_AT_decl_file : 1 ++ DW_AT_decl_line : 32 ++ DW_AT_type : signature: 0xb5faa2a4b7a919c4 ++ DW_AT_location : 2 byte block: 91 60 (DW_OP_fbreg: -32) ++ <3>: Abbrev Number: 15 (DW_TAG_variable) ++ DW_AT_name : c2 ++ DW_AT_decl_file : 1 ++ DW_AT_decl_line : 33 ++ DW_AT_type : signature: 0xab98c7bc886f5266 ++ DW_AT_location : 2 byte block: 91 50 (DW_OP_fbreg: -48) ++ <3>: Abbrev Number: 16 (DW_TAG_variable) ++ DW_AT_name : __PRETTY_FUNCTION__ ++ DW_AT_type : <0x13f> ++ DW_AT_artificial : 1 ++ 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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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): ++ <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>: Abbrev Number: 21 (DW_TAG_subprogram) ++ DW_AT_external : 1 ++ DW_AT_name : f13 ++ DW_AT_decl_file : 2 ++ DW_AT_decl_line : 96 ++ DW_AT_linkage_name: _Z3f13v ++ DW_AT_type : <0xa1e> ++ DW_AT_low_pc : (addr_index: 0x6): ++ DW_AT_high_pc : 0xb ++ DW_AT_frame_base : 1 byte block: 9c (DW_OP_call_frame_cfa) ++ DW_AT_GNU_all_call_sites: 1 ++ <1>: Abbrev Number: 8 (DW_TAG_pointer_type) ++ DW_AT_byte_size : 8 ++ DW_AT_type : <0x9ff> ++ <1>: Abbrev Number: 21 (DW_TAG_subprogram) ++ DW_AT_external : 1 ++ DW_AT_name : f14 ++ DW_AT_decl_file : 2 ++ DW_AT_decl_line : 104 ++ DW_AT_linkage_name: _Z3f14v ++ DW_AT_type : <0xa42> ++ DW_AT_low_pc : (addr_index: 0x7): ++ DW_AT_high_pc : 0xb ++ DW_AT_frame_base : 1 byte block: 9c (DW_OP_call_frame_cfa) ++ DW_AT_GNU_all_call_sites: 1 ++ <1>: Abbrev Number: 8 (DW_TAG_pointer_type) ++ DW_AT_byte_size : 8 ++ DW_AT_type : <0xa48> ++ <1>: Abbrev Number: 19 (DW_TAG_const_type) ++ DW_AT_type : <0xa4d> ++ <1>: Abbrev Number: 7 (DW_TAG_base_type) ++ DW_AT_byte_size : 1 ++ DW_AT_encoding : 6 (signed char) ++ DW_AT_name : char ++ <1>: Abbrev Number: 21 (DW_TAG_subprogram) ++ DW_AT_external : 1 ++ DW_AT_name : f15 ++ DW_AT_decl_file : 2 ++ DW_AT_decl_line : 112 ++ DW_AT_linkage_name: _Z3f15v ++ DW_AT_type : <0xa73> ++ DW_AT_low_pc : (addr_index: 0x8): ++ DW_AT_high_pc : 0xb ++ DW_AT_frame_base : 1 byte block: 9c (DW_OP_call_frame_cfa) ++ DW_AT_GNU_all_call_sites: 1 ++ <1>: Abbrev Number: 8 (DW_TAG_pointer_type) ++ DW_AT_byte_size : 8 ++ DW_AT_type : <0xa79> ++ <1>: Abbrev Number: 19 (DW_TAG_const_type) ++ DW_AT_type : <0xa7e> ++ <1>: Abbrev Number: 7 (DW_TAG_base_type) ++ DW_AT_byte_size : 4 ++ DW_AT_encoding : 5 (signed) ++ DW_AT_name : wchar_t ++ <1>: Abbrev Number: 26 (DW_TAG_subprogram) ++ DW_AT_external : 1 ++ DW_AT_name : f18 ++ DW_AT_decl_file : 2 ++ DW_AT_decl_line : 127 ++ DW_AT_linkage_name: _Z3f18i ++ DW_AT_type : <0xa42> ++ DW_AT_low_pc : (addr_index: 0x9): ++ DW_AT_high_pc : 0x44 ++ DW_AT_frame_base : 1 byte block: 9c (DW_OP_call_frame_cfa) ++ DW_AT_GNU_all_call_sites: 1 ++ DW_AT_sibling : <0xab8> ++ <2>: Abbrev Number: 23 (DW_TAG_formal_parameter) ++ DW_AT_name : i ++ DW_AT_decl_file : 2 ++ DW_AT_decl_line : 127 ++ DW_AT_type : <0x8b7> ++ DW_AT_location : 2 byte block: 91 6c (DW_OP_fbreg: -20) ++ <2>: Abbrev Number: 0 ++ <1>: Abbrev Number: 27 (DW_TAG_variable) ++ DW_AT_name : v2 ++ DW_AT_decl_file : 2 ++ DW_AT_decl_line : 43 ++ DW_AT_type : <0x8b7> ++ DW_AT_external : 1 ++ DW_AT_location : 2 byte block: fb a (DW_OP_GNU_addr_index <0xa>) ++ <1>: Abbrev Number: 27 (DW_TAG_variable) ++ DW_AT_name : v3 ++ DW_AT_decl_file : 2 ++ DW_AT_decl_line : 48 ++ DW_AT_type : <0x8b7> ++ DW_AT_external : 1 ++ DW_AT_location : 2 byte block: fb b (DW_OP_GNU_addr_index <0xb>) ++ <1>: Abbrev Number: 28 (DW_TAG_array_type) ++ DW_AT_type : <0xa4d> ++ DW_AT_sibling : <0xae2> ++ <2>: Abbrev Number: 29 (DW_TAG_subrange_type) ++ DW_AT_type : <0xae2> ++ DW_AT_upper_bound : 12 ++ <2>: Abbrev Number: 0 ++ <1>: Abbrev Number: 7 (DW_TAG_base_type) ++ DW_AT_byte_size : 8 ++ DW_AT_encoding : 7 (unsigned) ++ DW_AT_name : sizetype ++ <1>: Abbrev Number: 27 (DW_TAG_variable) ++ DW_AT_name : v4 ++ DW_AT_decl_file : 2 ++ DW_AT_decl_line : 52 ++ DW_AT_type : <0xad2> ++ DW_AT_external : 1 ++ DW_AT_location : 2 byte block: fb c (DW_OP_GNU_addr_index <0xc>) ++ <1>: Abbrev Number: 27 (DW_TAG_variable) ++ DW_AT_name : v5 ++ DW_AT_decl_file : 2 ++ DW_AT_decl_line : 57 ++ DW_AT_type : <0xad2> ++ DW_AT_external : 1 ++ DW_AT_location : 2 byte block: fb d (DW_OP_GNU_addr_index <0xd>) ++ <1>: Abbrev Number: 28 (DW_TAG_array_type) ++ DW_AT_type : <0xa42> ++ DW_AT_sibling : <0xb18> ++ <2>: Abbrev Number: 29 (DW_TAG_subrange_type) ++ DW_AT_type : <0xae2> ++ DW_AT_upper_bound : 4 ++ <2>: Abbrev Number: 0 ++ <1>: Abbrev Number: 27 (DW_TAG_variable) ++ DW_AT_name : t17data ++ DW_AT_decl_file : 2 ++ DW_AT_decl_line : 119 ++ DW_AT_type : <0xb08> ++ DW_AT_external : 1 ++ DW_AT_location : 2 byte block: fb e (DW_OP_GNU_addr_index <0xe>) ++ <1>: 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 ++ DW_AT_type : <0xe1> ++ DW_AT_accessibility: 1 (public) ++ DW_AT_declaration : 1 ++ DW_AT_object_pointer: <0xb2> ++ DW_AT_sibling : <0xb8> ++ <3>: Abbrev Number: 5 (DW_TAG_formal_parameter) ++ DW_AT_type : <0xe9> ++ DW_AT_artificial : 1 ++ <3>: Abbrev Number: 0 ++ <2>: Abbrev Number: 6 (DW_TAG_subprogram) ++ DW_AT_external : 1 ++ DW_AT_name : f4 ++ DW_AT_decl_file : 2 ++ DW_AT_decl_line : 53 ++ DW_AT_linkage_name: _ZN2C32f4Ev ++ DW_AT_type : <0xef> ++ DW_AT_accessibility: 1 (public) ++ DW_AT_declaration : 1 ++ DW_AT_object_pointer: <0xd3> ++ <3>: Abbrev Number: 5 (DW_TAG_formal_parameter) ++ DW_AT_type : <0xe9> ++ DW_AT_artificial : 1 ++ <3>: Abbrev Number: 0 ++ <2>: Abbrev Number: 0 ++ <1>: Abbrev Number: 7 (DW_TAG_base_type) ++ DW_AT_byte_size : 4 ++ DW_AT_encoding : 5 (signed) ++
DW_AT_name : int ++ <1>: Abbrev Number: 7 (DW_TAG_base_type) ++ DW_AT_byte_size : 1 ++ DW_AT_encoding : 2 (boolean) ++ DW_AT_name : bool ++ <1>: Abbrev Number: 8 (DW_TAG_pointer_type) ++ DW_AT_byte_size : 8 ++ DW_AT_type : <0x25> ++ <1>: Abbrev Number: 8 (DW_TAG_pointer_type) ++ DW_AT_byte_size : 8 ++ DW_AT_type : <0xf5> ++ <1>: Abbrev Number: 9 (DW_TAG_subroutine_type) ++ DW_AT_type : <0xe1> ++ <1>: 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 0000000000..75cce36f8b +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 7bd49ab619..5f02ed35ad 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 efb82c5770..fa1d20e5d9 100644 +--- a/elfcpp/ChangeLog ++++ b/elfcpp/ChangeLog +@@ -1,3 +1,10 @@ ++2020-11-16 Mark Wielaard ++ ++ Backport from the mainline: ++ 2020-09-25 Alan Modra ++ ++ * dwarf.h (DW_FIRST_UT, DW_UT, DW_END_UT): Define. ++ + 2020-07-04 Nick Clifton + + Binutils 2.35 branch created. +diff --git a/elfcpp/dwarf.h b/elfcpp/dwarf.h +index 1221f37f8a..d5e06d4d7d 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 26c703531d..3ac2f7b72e 100644 +--- a/gas/ChangeLog ++++ b/gas/ChangeLog +@@ -1,3 +1,171 @@ ++2020-11-15 Mark Wielaard ++ ++ Backport from the mainline: ++ 2020-10-16 H.J. Lu ++ ++ 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 ++ ++ 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 ++ ++ 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 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 ++ ++ Backport from the mainline: ++ 2020-09-23 Mark Wielaard ++ ++ * testsuite/gas/elf/dwarf-5-cu.d: Adjust expected output. ++ ++2020-11-05 Alex Coplan ++ ++ * config/tc-aarch64.c (aarch64_cpus): Add neoverse-n2. ++ * doc/c-aarch64.texi: Document support for Neoverse N2. ++ ++2020-10-21 Srinath Parvathaneni ++ ++ 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 ++ ++ * config/tc-arm.c (arm_cpus): Add Neoverse N2. ++ * doc/c-arm.texi: Document -mcpu=neoverse-n2. ++ ++2020-10-09 Alex Coplan ++ ++ * config/tc-arm.c (arm_cpus): Add Neoverse V1. ++ * doc/c-arm.texi: Document Neoverse V1 support. ++ ++2020-10-07 H.J. Lu ++ ++ 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 ++ ++ 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 ++ ++ * 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 ++ ++ 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 ++ ++ * config/tc-aarch64.c (aarch64_cpus): Add Neoverse V1. ++ * doc/c-aarch64.texi: Document Neoverse V1 support. ++ ++2020-09-24 Alan Modra ++ ++ Apply from master ++ 2020-08-19 Alan Modra ++ * testsuite/gas/ppc/int128.s: Correct vcmpuq. ++ * testsuite/gas/ppc/int128.d: Update. ++ * testsuite/gas/ppc/xvtlsbb.d: Update. ++ ++ 2020-08-10 Alan Modra ++ * 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 ++ * testsuite/gas/ppc/power8.d: Update. ++ * testsuite/gas/ppc/vsx2.d: Update. ++ ++ 2020-08-10 Alan Modra ++ * 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 + + This is the 2.35.1 point release. +diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c +index ecb15d2343..12eb13594c 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 e0d0cbd546..b02e9fb1c8 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 037fe4d18b..623ac77307 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 aa989e7d1c..9719341c54 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 86b6efc52b..f5d2669574 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 9180360577..16c94de675 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 6899a840ef..1160cafc13 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 ++ 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 20d5c20409..c973584af5 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 +diff --git a/gas/testsuite/gas/aarch64/system.s b/gas/testsuite/gas/aarch64/system.s +index 9d86f66806..6f494f885a 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 0000000000..8989688f0f +--- /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 0000000000..2df3a37ac0 +--- /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 0000000000..c72c1296d2 +--- /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 0000000000..dbe4d7122e +--- /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 0000000000..5a450e7bde +--- /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 839b4b7c77..7db20a330b 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 0000000000..4f8321e9bf +--- /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 0000000000..e558fdc050 +--- /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 0000000000..7d602d0594 +--- /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 0000000000..6e343ad0d3 +--- /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 0000000000..302a2d8fcc +--- /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 0000000000..4af7d7061c +--- /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 0000000000..6f4ebf0471 +--- /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 0000000000..52e259d103 +--- /dev/null ++++ b/gas/testsuite/gas/i386/dwarf5-line-3.s +@@ -0,0 +1,10 @@ ++# 1 "foo.S" ++# 1 "" ++# 1 "" ++# 31 "" ++# 1 "/usr/include/stdc-predef.h" 1 3 4 ++# 32 "" 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 0000000000..04e8706d29 +--- /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 0000000000..1f21cec363 +--- /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 b38c3ed6ee..e1d30dacd7 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 c601185ba3..99b9c0a729 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 0a23b25a6f..f7195fa723 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 6c9f68faf2..33623656ee 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 6563aae246..3039c36a30 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 0000000000..ac5d82507f +--- /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 0000000000..27f5fda5a5 +--- /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 04f58a7892..56f4fa929a 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 192dad9920..a8f324bdde 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 29c381ca23..00c57db141 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 7a25d40162..0988457b34 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 c513f0dd8e..d9481a7439 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 e483d570b9..d8dc7facba 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 337febf320..e6f627ff09 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 f790b28fc2..a03a5ffc5f 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 0f3a5abd61..a35bc6ca5d 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 2deab8928e..d65787177d 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 6f9032dc4b..ad69bb1322 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 7818b86b13..0b75d75ae2 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 : +- 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 +- 7c: (40 01 00 00|00 00 01 40) bdnzf gt,7c +- 80: (40 85 00 02|02 00 85 40) blea cr1,0 +- 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 +- 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 +- cc: (48 00 00 01|01 00 00 48) bl cc +- 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 ++.*: (40 01 00 00|00 00 01 40) bdnzf gt,7c ++.*: (40 85 00 02|02 00 85 40) blea cr1,0 ++.*: (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 ++.*: (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 ++.*: (48 00 00 01|01 00 00 48) bl cc ++.*: (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 da6fb7152f..db5d9e153b 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 fa7211943a..517ec1c368 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 : +- 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 +- 8c: R_PPC(|64)_ADDR24 label_abs +- 90: (40 8a 00 00|00 00 8a 40) bne cr2,90 +- 90: R_PPC(|64)_REL14 foo +- 94: (40 ca 00 00|00 00 ca 40) bne- cr2,94 +- 94: R_PPC(|64)_REL14 foo +- 98: (40 ea 00 00|00 00 ea 40) bne\+ cr2,98 +- 98: R_PPC(|64)_REL14 foo +- 9c: (40 85 00 02|02 00 85 40) blea cr1,0 +- 9c: R_PPC(|64)_ADDR14 foo_abs +- a0: (40 c5 00 02|02 00 c5 40) blea- cr1,0 +- a0: R_PPC(|64)_ADDR14 foo_abs +- a4: (40 e5 00 02|02 00 e5 40) blea\+ cr1,0 +- 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 +- c0: R_PPC(|64)_REL14 foo +- c4: (40 ca 00 01|01 00 ca 40) bnel- cr2,c4 +- c4: R_PPC(|64)_REL14 foo +- c8: (40 ea 00 01|01 00 ea 40) bnel\+ cr2,c8 +- c8: R_PPC(|64)_REL14 foo +- cc: (40 85 00 03|03 00 85 40) blela cr1,0 +- cc: R_PPC(|64)_ADDR14 foo_abs +- d0: (40 c5 00 03|03 00 c5 40) blela- cr1,0 +- d0: R_PPC(|64)_ADDR14 foo_abs +- d4: (40 e5 00 03|03 00 e5 40) blela\+ cr1,0 +- 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 +- f0: R_PPC(|64)_REL24 label +- f4: (48 00 00 03|03 00 00 48) bla 0 +- f4: R_PPC(|64)_ADDR24 label_abs +- f8: (48 00 00 01|01 00 00 48) bl f8 +- 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 ++.*: R_PPC(|64)_ADDR24 label_abs ++.*: (40 8a 00 00|00 00 8a 40) bne cr2,90 ++.*: R_PPC(|64)_REL14 foo ++.*: (40 ca 00 00|00 00 ca 40) bne- cr2,94 ++.*: R_PPC(|64)_REL14 foo ++.*: (40 ea 00 00|00 00 ea 40) bne\+ cr2,98 ++.*: R_PPC(|64)_REL14 foo ++.*: (40 85 00 02|02 00 85 40) blea cr1,0 ++.*: R_PPC(|64)_ADDR14 foo_abs ++.*: (40 c5 00 02|02 00 c5 40) blea- cr1,0 ++.*: R_PPC(|64)_ADDR14 foo_abs ++.*: (40 e5 00 02|02 00 e5 40) blea\+ cr1,0 ++.*: 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 ++.*: R_PPC(|64)_REL14 foo ++.*: (40 ca 00 01|01 00 ca 40) bnel- cr2,c4 ++.*: R_PPC(|64)_REL14 foo ++.*: (40 ea 00 01|01 00 ea 40) bnel\+ cr2,c8 ++.*: R_PPC(|64)_REL14 foo ++.*: (40 85 00 03|03 00 85 40) blela cr1,0 ++.*: R_PPC(|64)_ADDR14 foo_abs ++.*: (40 c5 00 03|03 00 c5 40) blela- cr1,0 ++.*: R_PPC(|64)_ADDR14 foo_abs ++.*: (40 e5 00 03|03 00 e5 40) blela\+ cr1,0 ++.*: 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 ++.*: R_PPC(|64)_REL24 label ++.*: (48 00 00 03|03 00 00 48) bla 0 ++.*: R_PPC(|64)_ADDR24 label_abs ++.*: (48 00 00 01|01 00 00 48) bl f8 ++.*: 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 6893ae8cfe..c3d23ea3de 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 0000000000..9255ddbadf +--- /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 : ++.*: 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 0000000000..dbbcbb6331 +--- /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 c9f14d3360..d7410345ad 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 4dce648c36..4561cfe9ee 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 0000000000..765004655e +--- /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 0000000000..dd0021b972 +--- /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 dfd3345461..df3f5d410d 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 : +- 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 beb1c5e81c..52a3e8ea69 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 4e7156d46d..45a8f495ae 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 69053819ff..2d412b9e66 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 48c4ce62f3..f2a7b44cdd 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 e7ea585262..4f0b25bd47 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 : +- 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 1627d7afc6..8aa83dd62c 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 85fefa989f..8b274ddd04 100644 +--- a/gold/ChangeLog ++++ b/gold/ChangeLog +@@ -1,3 +1,99 @@ ++2020-11-17 Alan Modra ++ ++ * 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 ++ ++ 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 ++ ++ * 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 ++ ++ * 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 ++ ++ * testsuite/split_i386.sh: Updated for --split-stack-adjust-size ++ default change. ++ * testsuite/split_x86_64.sh: Likewise. ++ ++2020-10-08 Alan Modra ++ ++ * options.h (split_stack_adjust_size): Default to 0x100000. ++ ++2020-09-26 Alan Modra ++ ++ * 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 ++ ++ * powerpc.cc (Target_powerpc::Relocate::relocate): Don't skip ++ first insn of __tls_get_addr_opt stub. ++ ++2020-09-24 Alan Modra ++ ++ Apply from master ++ 2020-07-27 Alan Modra ++ * 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 + + This is the 2.35.1 point release. +diff --git a/gold/options.cc b/gold/options.cc +index b13ae71ce1..6b194374c8 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 3c8d25a662..51d3614e6b 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 59ba40dc3f..fd4371efa4 100644 +--- a/gold/powerpc.cc ++++ b/gold/powerpc.cc +@@ -647,10 +647,9 @@ class Target_powerpc : public Sized_target + 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 + 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 + 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 + + 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 + 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::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::writeval(oview + off, value); + modified = true; +@@ -3511,6 +3536,7 @@ Target_powerpc::Branch_info::make_stub( + from += (this->object_->output_section(this->shndx_)->address() + + this->offset_); + Address to; ++ unsigned int other; + if (gsym != NULL) + { + switch (gsym->source()) +@@ -3538,8 +3564,7 @@ Target_powerpc::Branch_info::make_stub( + to = symtab->compute_final_value(gsym, &status); + if (status != Symbol_table::CFVS_OK) + return true; +- if (size == 64) +- to += this->object_->ppc64_local_entry_offset(gsym); ++ other = gsym->nonvis() >> 3; + } + else + { +@@ -3556,8 +3581,7 @@ Target_powerpc::Branch_info::make_stub( + || !symval.has_output_value()) + 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 +3594,11 @@ Target_powerpc::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 +3620,7 @@ Target_powerpc::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 +4209,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 +4592,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 +4604,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 + 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 + 7, ++ elfcpp::DW_CFA_advance_loc + 2, + elfcpp::DW_CFA_restore_extended, 65 + }; + +@@ -4631,26 +4671,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::Elf_Addr Address; + static const Address invalid_address = static_cast
(0) - 1; +@@ -4716,7 +4763,7 @@ class Stub_table : public Output_relaxed_input_section + // Add a long branch stub. + bool + add_long_branch_entry(const Powerpc_relobj*, +- unsigned int, Address, Address, bool); ++ unsigned int, Address, Address, unsigned int, bool); + + const Branch_stub_ent* + find_long_branch_entry(const Powerpc_relobj*, +@@ -4898,7 +4945,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 +4956,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 +5128,22 @@ Stub_table::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 +5186,22 @@ Stub_table::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 +5283,7 @@ Stub_table::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 +5291,20 @@ Stub_table::add_long_branch_entry( + Branch_stub_ent ent(this->branch_size_, notoc, save_res); + std::pair 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 (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 +5399,7 @@ Stub_table::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 calls; + if (!this->plt_call_stubs_.empty()) + for (plt_iter cs = this->plt_call_stubs_.begin(); +@@ -5491,7 +5560,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 +5604,12 @@ Output_data_glink::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 +5708,7 @@ Stub_table::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 sorted; + sorted.resize(this->plt_call_stubs_.size()); + +@@ -5676,7 +5752,7 @@ Stub_table::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 +5774,72 @@ Stub_table::define_stub_syms(Symbol_table* symtab) + // Emit the start of a __tls_get_addr_opt plt call stub. + + template +-bool +-Stub_table::build_tls_opt_head( +- unsigned char** pp, +- typename Plt_stub_entries::const_iterator cs) ++void ++Stub_table::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(p, ld_11_3 + 0); +- p += 4; +- write_insn(p, ld_12_3 + 8); +- p += 4; +- write_insn(p, mr_0_3); +- p += 4; +- write_insn(p, cmpdi_11_0); +- p += 4; +- write_insn(p, add_3_12_13); +- p += 4; +- write_insn(p, beqlr); +- p += 4; +- write_insn(p, mr_3_0); +- p += 4; +- if (cs->second.r2save_ && !cs->second.localentry0_) +- { +- write_insn(p, mflr_11); +- p += 4; +- write_insn(p, (std_11_1 + this->targ_->stk_linker())); +- p += 4; +- } +- } +- else ++ write_insn(p, ld_11_3 + 0); ++ p += 4; ++ write_insn(p, ld_12_3 + 8); ++ p += 4; ++ write_insn(p, mr_0_3); ++ p += 4; ++ write_insn(p, cmpdi_11_0); ++ p += 4; ++ write_insn(p, add_3_12_13); ++ p += 4; ++ write_insn(p, beqlr); ++ p += 4; ++ write_insn(p, mr_3_0); ++ p += 4; ++ if (save_lr) + { +- write_insn(p, lwz_11_3 + 0); +- p += 4; +- write_insn(p, lwz_12_3 + 4); +- p += 4; +- write_insn(p, mr_0_3); +- p += 4; +- write_insn(p, cmpwi_11_0); +- p += 4; +- write_insn(p, add_3_12_2); +- p += 4; +- write_insn(p, beqlr); +- p += 4; +- write_insn(p, mr_3_0); ++ write_insn(p, mflr_11); + p += 4; +- write_insn(p, nop); ++ write_insn(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 +-bool +-Stub_table::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(p, bctrl); ++ write_insn(p, lwz_11_3 + 0); + p += 4; +- write_insn(p, ld_2_1 + this->targ_->stk_toc()); ++ write_insn(p, lwz_12_3 + 4); + p += 4; +- write_insn(p, ld_11_1 + this->targ_->stk_linker()); ++ write_insn(p, mr_0_3); + p += 4; +- write_insn(p, mtlr_11); ++ write_insn(p, cmpwi_11_0); ++ p += 4; ++ write_insn(p, add_3_12_2); ++ p += 4; ++ write_insn(p, beqlr); ++ p += 4; ++ write_insn(p, mr_3_0); ++ p += 4; ++ write_insn(p, nop); + p += 4; +- write_insn(p, blr); +- return true; + } +- return false; ++ *pp = p; ++} ++ ++// Emit the tail of a __tls_get_addr_opt plt call stub. ++ ++template ++void ++Stub_table::build_tls_opt_tail(unsigned char* p) ++{ ++ write_insn(p, bctrl); ++ p += 4; ++ write_insn(p, ld_2_1 + this->targ_->stk_toc()); ++ p += 4; ++ write_insn(p, ld_11_1 + this->targ_->stk_linker()); ++ p += 4; ++ write_insn(p, mtlr_11); ++ p += 4; ++ write_insn(p, blr); + } + + // Emit pc-relative plt call stub code. +@@ -5949,7 +6009,7 @@ build_notoc_offset(unsigned char* p, uint64_t off, bool load) + template + unsigned int + Stub_table::plt_call_size( +- typename Plt_stub_entries::const_iterator p) const ++ typename Plt_stub_entries::iterator p) const + { + if (size == 32) + { +@@ -5961,77 +6021,122 @@ Stub_table::plt_call_size( + const Output_data_plt_powerpc* 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* ppcobj = static_cast ++ *>(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* ppcobj = static_cast +- *>(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* ppcobj = static_cast ++ *>(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 +6144,7 @@ Stub_table::plt_call_size( + template + unsigned int + Stub_table::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 +6158,57 @@ Stub_table::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 +@@ -6128,6 +6244,10 @@ Stub_table::do_write(Output_file* of) + if (size == 64 + && this->targ_->power10_stubs()) + { ++ const Output_data_got_powerpc* 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 +6257,94 @@ Stub_table::do_write(Output_file* of) + ++cs) + { + p = oview + cs->second.off_; +- this->build_tls_opt_head(&p, cs); +- if (cs->second.r2save_) +- { +- write_insn(p, std_2_1 + this->targ_->stk_toc()); +- p += 4; +- } + const Output_data_plt_powerpc* 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(p, delta, from & 4, true); +- write_insn(p, mtctr_12); +- p += 4; +- if (!this->build_tls_opt_tail(p, cs)) +- write_insn(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(p, delta, from & 4, ++ true); ++ write_insn(p, mtctr_12); ++ p += 4; ++ write_insn(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* ppcobj ++ = static_cast*>( ++ 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(p, std_2_1 + this->targ_->stk_toc()); ++ p += 4; ++ } ++ if (ha(off) != 0) ++ { ++ write_insn(p, addis_12_2 + ha(off)); ++ p += 4; ++ write_insn(p, ld_12_12 + l(off)); ++ p += 4; ++ } ++ else ++ { ++ write_insn(p, ld_12_2 + l(off)); ++ p += 4; ++ } ++ write_insn(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(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(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(p, delta, from & 4, true); ++ write_insn(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(p, bctr); ++ } + } + } + +@@ -6168,19 +6360,79 @@ Stub_table::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(p, delta, loc & 4, false); +- delta -= p - startp; ++ if (bs->second.notoc_) ++ { ++ unsigned char* startp = p; ++ p = build_power10_offset(p, delta, ++ loc & 4, false); ++ delta -= p - startp; ++ startp = p; ++ if (delta + (1 << 25) < 2 << 25) ++ write_insn(p, b | (delta & 0x3fffffc)); ++ else ++ { ++ write_insn(p, mtctr_12); ++ p += 4; ++ write_insn(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(p, ld_12_2 + l(brltoff)); ++ p += 4; ++ } ++ else ++ { ++ write_insn(p, addis_12_2 + ha(brltoff)); ++ p += 4; ++ write_insn(p, ld_12_12 + l(brltoff)); ++ p += 4; ++ } ++ } ++ if (delta + (1 << 25) < 2 << 25) ++ write_insn(p, b | (delta & 0x3fffffc)); ++ else ++ { ++ write_insn(p, mtctr_12); ++ p += 4; ++ write_insn(p, bctr); ++ } ++ } + } +- if (delta + (1 << 25) < 2 << 25) +- write_insn(p, b | (delta & 0x3fffffc)); + else + { +- write_insn(p, mtctr_12); +- p += 4; +- write_insn(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(p, delta, ++ loc & 4, false); ++ delta -= p - startp; ++ } ++ if (delta + (1 << 25) < 2 << 25) ++ write_insn(p, b | (delta & 0x3fffffc)); ++ else ++ { ++ write_insn(p, mtctr_12); ++ p += 4; ++ write_insn(p, bctr); ++ } + } + } + } +@@ -6204,7 +6456,11 @@ Stub_table::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(p, std_2_1 + this->targ_->stk_toc()); +@@ -6241,7 +6497,11 @@ Stub_table::do_write(Output_file* of) + } + write_insn(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(p, bctr); + } + } +@@ -6292,8 +6552,12 @@ Stub_table::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(p, std_2_1 + this->targ_->stk_toc()); +@@ -6355,8 +6619,10 @@ Stub_table::do_write(Output_file* of) + write_insn(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(p, cmpldi_2_0); +@@ -6382,6 +6648,8 @@ Stub_table::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 +6705,8 @@ Stub_table::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 +6846,25 @@ Output_data_glink::do_write(Output_file* of) + } + else + { ++ if (this->targ_->has_localentry0()) ++ { ++ write_insn(p, std_2_1 + 24), p += 4; ++ } + write_insn(p, mflr_0), p += 4; + write_insn(p, bcl_20_31), p += 4; + write_insn(p, mflr_11), p += 4; +- write_insn(p, std_2_1 + 24), p += 4; +- write_insn(p, ld_2_11 + l(-16)), p += 4; + write_insn(p, mtlr_0), p += 4; ++ if (this->targ_->has_localentry0()) ++ { ++ write_insn(p, ld_0_11 + l(-20)), p += 4; ++ } ++ else ++ { ++ write_insn(p, ld_0_11 + l(-16)), p += 4; ++ } + write_insn(p, sub_12_12_11), p += 4; +- write_insn(p, add_11_2_11), p += 4; +- write_insn(p, addi_0_12 + l(-48)), p += 4; ++ write_insn(p, add_11_0_11), p += 4; ++ write_insn(p, addi_0_12 + l(-44)), p += 4; + write_insn(p, ld_12_11 + 0), p += 4; + write_insn(p, srdi_0_0_2), p += 4; + write_insn(p, mtctr_12), p += 4; +@@ -8191,7 +8470,7 @@ Target_powerpc::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 +8485,7 @@ Target_powerpc::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 +8509,7 @@ Target_powerpc::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 +9267,7 @@ Target_powerpc::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 +9282,7 @@ Target_powerpc::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 +9306,7 @@ Target_powerpc::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 +9648,13 @@ Target_powerpc::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 +10404,7 @@ Target_powerpc::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(r_type) + && r_type != elfcpp::R_PPC64_PLT_PCREL34 + && r_type != elfcpp::R_PPC64_PLT_PCREL34_NOTOC +@@ -10175,19 +10462,29 @@ Target_powerpc::Relocate::relocate( + const int reloc_size = elfcpp::Elf_sizes::rela_size; + elfcpp::Shdr 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(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(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 +10547,7 @@ Target_powerpc::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 +11049,15 @@ Target_powerpc::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(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 +11066,9 @@ Target_powerpc::Relocate::relocate( + &value, &dest_shndx); + } + } +- Address max_branch_offset = max_branch_delta(r_type); +- if (max_branch_offset != 0 +- && (value - address + max_branch_offset >= 2 * max_branch_offset ++ Address max_branch = max_branch_delta(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 +11087,20 @@ Target_powerpc::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 67e2b1bb80..611c892b23 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 aefdda5647..bf395c9731 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 33bb4892ed..a91009b45a 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 acdd85fc4d..5997c26899 100644 +--- a/include/ChangeLog ++++ b/include/ChangeLog +@@ -1,3 +1,15 @@ ++2020-11-15 Mark Wielaard ++ ++ Backport from the mainline: ++ 2020-09-23 Mark Wielaard ++ ++ 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 + + PR ld/26262 +diff --git a/include/dwarf2.def b/include/dwarf2.def +index d8a8cce794..13825a3eef 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 882453dce0..3f271fb0f7 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 +- }; + + /* @@@ 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 4eec7d2977..89ec0798db 100644 +--- a/ld/ChangeLog ++++ b/ld/ChangeLog +@@ -1,3 +1,75 @@ ++2020-12-04 H.J. Lu ++ ++ 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 ++ ++ 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 ++ ++ * 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 ++ ++ 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 ++ ++ * 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 ++ ++ 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 ++ ++ Apply from master ++ 2020-08-13 Alan Modra ++ * 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 + + This is the 2.35.1 point release. +diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em +index 1331d03113..2df5a218e6 100644 +--- a/ld/emultempl/ppc64elf.em ++++ b/ld/emultempl/ppc64elf.em +@@ -32,13 +32,15 @@ fragment <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 bada3ade2d..831d032fe5 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-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp +index 164c099cbb..f031b01ffe 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 0000000000..24a8429fbc +--- /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 0000000000..e92559fa70 +--- /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 0000000000..df9bfced54 +--- /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 0000000000..bfd00a70e9 +--- /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 0000000000..e492b98e86 +--- /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 1abb90b3a2..e95d47ae8d 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 e94846e88e..a4b7bb71ad 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 bd87a9317e..5ff95648c2 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 0162bd0880..4018f0536c 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 + + .* : +-.*: (4b ff ff c8|c8 ff ff 4b) b .* <__glink_PLTresolve> ++.*: (4b ff ff cc|cc ff ff 4b) b .* <__glink_PLTresolve> + + .* : +-.*: (4b ff ff c4|c4 ff ff 4b) b .* <__glink_PLTresolve> ++.*: (4b ff ff c8|c8 ff ff 4b) b .* <__glink_PLTresolve> + + .* : +-.*: (4b ff ff c0|c0 ff ff 4b) b .* <__glink_PLTresolve> ++.*: (4b ff ff c4|c4 ff ff 4b) b .* <__glink_PLTresolve> + + .* : +-.*: (4b ff ff bc|bc ff ff 4b) b .* <__glink_PLTresolve> ++.*: (4b ff ff c0|c0 ff ff 4b) b .* <__glink_PLTresolve> + + .* : +-.*: (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 1e519c0d1b..3448f8b37e 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 09503fa005..e7d4522b50 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 47aedbecb8..c271c949b0 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 cb92c294b1..79a417ba06 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 0fcb79821b..efd6debc55 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 .* + + .* : +-.*: (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 f0453610e0..84bd94ed72 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 4ca64092c1..15def719cb 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 .* + + .* : +-.*: (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 abb414a633..c2b9616352 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-x86-64/pr26711-1-x32.d b/ld/testsuite/ld-x86-64/pr26711-1-x32.d +new file mode 100644 +index 0000000000..67013195b2 +--- /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 0000000000..d8e3cbf19b +--- /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 0000000000..9822f8df4d +--- /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 0000000000..e24cfbfc0b +--- /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 0000000000..0661c7d523 +--- /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 0000000000..87bc3ccfb0 +--- /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 0000000000..8fa185d42a +--- /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 0000000000..13200e3aed +--- /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
: ++ +[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 ++ +[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 ++ +[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 0000000000..b64851a5ff +--- /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 0000000000..d1b144bfaa +--- /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
: ++ +[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 0000000000..ded8d7a826 +--- /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 1abb90b3a2..e95d47ae8d 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 e94846e88e..a4b7bb71ad 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 bd87a9317e..5ff95648c2 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 d836f33496..91410304ea 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 19d2b702d6..42daff1594 100644 +--- a/libiberty/ChangeLog ++++ b/libiberty/ChangeLog +@@ -1,3 +1,12 @@ ++2020-11-15 Mark Wielaard ++ ++ Backport from the mainline: ++ 2020-09-23 Mark Wielaard ++ ++ 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 + + * bsearch_r.c: New file. +diff --git a/libiberty/dwarfnames.c b/libiberty/dwarfnames.c +index 968d191753..af11668b43 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 b53a2bba98..fada4f8c94 100644 +--- a/opcodes/ChangeLog ++++ b/opcodes/ChangeLog +@@ -1,3 +1,31 @@ ++2020-10-07 H.J. Lu ++ ++ PR gas/26685 ++ * i386-dis.c (mod_table): Replace Gv with Gdq on movdiri. ++ ++2020-10-07 Jan Beulich ++ ++ * i386-dis.c (OP_E_memory): Revert previous change. ++ ++2020-09-24 Alan Modra ++ ++ Apply from master ++ 2020-08-19 Alan Modra ++ * ppc-opc.c (powerpc_opcodes): Replace OBF with BF for vcmpsq, ++ vcmpuq and xvtlsbb. ++ ++ 2020-08-10 Alan Modra ++ * ppc-opc.c (powerpc_opcodes): Add many mtspr and mfspr extended ++ instructions. ++ ++ 2020-08-10 Alan Modra ++ * ppc-opc.c (powerpc_opcodes): Add exser, msgsndu, msgclru. ++ Enable icbt for power5, miso for power8. ++ ++ 2020-08-10 Alan Modra ++ * ppc-opc.c (powerpc_opcodes): Prioritise mtfprd and mtvrd over ++ mtvsrd, and similarly for mfvsrd. ++ + 2020-09-19 Nick Clifton + + This is the 2.35.1 point release. +diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c +index 8e0b4a1c2b..ea2ca1bb88 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 6932e4e820..d15bde1326 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 index 000000000..c2da3a349 --- /dev/null +++ b/patches/branch-version.diff @@ -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 + +- * version.m4: Set to 2.35.0 +- * development.sh (development): Set to true. +- * configure: Regenerate. +- +-2020-07-24 Nick Clifton +- + 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 . + + # 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 + +- * configure: Regenerate. +- +-2020-07-24 Nick Clifton +- + 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 + +- * configure: Regenerate. +- +-2020-07-24 Nick Clifton +- + 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 + +- * configure: Regenerate. +- +-2020-07-24 Nick Clifton +- + 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 + +- * configure: Regenerate. +- +-2020-07-24 Nick Clifton +- + 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 + +- * configure: Regenerate. +- +-2020-07-24 Nick Clifton +- + 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 index 000000000..291a2aae6 --- /dev/null +++ b/patches/gold-mips.diff @@ -0,0 +1,39 @@ +# DP: Fix gold on mips64 targets. + +gold/ + +2016-08-09 Aurelien Jarno + + * 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 index 000000000..8d6fab897 --- /dev/null +++ b/patches/gold-no-keep-files-mapped.diff @@ -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 index 000000000..82377ee3c --- /dev/null +++ b/patches/gprof-build.diff @@ -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 index 000000000..985420188 --- /dev/null +++ b/patches/infinity-notes.diff @@ -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 (_(" \n")); ++ break; ++ ++ case I8_NOTE_UNHANDLED: ++ printf (_(" \n")); ++ break; ++ } ++ break; ++ } + } + + return TRUE; diff --git a/patches/libctf-soname.diff b/patches/libctf-soname.diff new file mode 100644 index 000000000..a4b2a7873 --- /dev/null +++ b/patches/libctf-soname.diff @@ -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 index 000000000..b46c48bd1 --- /dev/null +++ b/patches/mips64-default-n64.diff @@ -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 index 000000000..7e726a078 --- /dev/null +++ b/patches/pgo+lto-1.diff @@ -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 index 000000000..8300558b9 --- /dev/null +++ b/patches/pgo+lto-2.diff @@ -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 index 000000000..e82302fb3 --- /dev/null +++ b/patches/pgo+lto-3.diff @@ -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 index 000000000..8082506a3 --- /dev/null +++ b/patches/pgo+lto-check-ignore.diff @@ -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 index 000000000..85f21dd79 --- /dev/null +++ b/patches/pr-ld-16428.diff @@ -0,0 +1,158 @@ +# DP: Proposed patch for PR ld/16428, disallow -shared/-pie, -shared/-static, -pie/-static. + +2014-01-10 H.J. Lu + + 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 + + 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 index 000000000..a3b287457 --- /dev/null +++ b/patches/series @@ -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 index 000000000..850561519 --- /dev/null +++ b/rules @@ -0,0 +1,1957 @@ +#!/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 + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS = -g -O0 +else + #ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386 x32)) + CONF_PGO = --enable-pgo-build=lto + #endif +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= 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 + + if which strip-nondeterminism >/dev/null 2>&1; then \ + find $(D_CROSS) -name '*.a' -print0 \ + | xargs -0r strip-nondeterminism --type ar; \ + fi + + : # 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/-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 ~;}' \ + -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/-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/-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: +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 index 000000000..5662f6631 --- /dev/null +++ b/source.lintian-overrides @@ -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 index 000000000..163aaf8d8 --- /dev/null +++ b/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/test-suite-compare.py b/test-suite-compare.py new file mode 100644 index 000000000..737303950 --- /dev/null +++ b/test-suite-compare.py @@ -0,0 +1,230 @@ +#!/usr/bin/python3 + +# Quick'n'dirty regression check for dejagnu testsuites +# Copyright (C) 2003, 2004, 2005, 2006, 2007 James Troup + +# 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] +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 index 000000000..79ec27b1c --- /dev/null +++ b/tests/build @@ -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 index 000000000..878cfe52a --- /dev/null +++ b/tests/control @@ -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 index 000000000..09bfc8d81 --- /dev/null +++ b/tests/libc-link @@ -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 + +set -e + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +cat < libctest.c +#include +#include + +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 index 000000000..a2145639c --- /dev/null +++ b/tests/shlib-build @@ -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 + +set -e + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +cat < 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 < testprog.c +#include + +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 index 000000000..69cbc8aeb --- /dev/null +++ b/watch @@ -0,0 +1,2 @@ +version=2 +http://ftp.gnu.org/gnu/binutils/binutils-([\d\.]*).tar.gz -- 2.30.2