From: Matthias Klose Date: Wed, 6 Jan 2021 10:57:25 +0000 (+0000) Subject: Import binutils_2.35.1-7.debian.tar.xz X-Git-Tag: archive/raspbian/2.35.1-7+rpi1^2~27^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=a5e1a0550bee0ebf97dd5350546253fad2907e87;p=binutils.git Import binutils_2.35.1-7.debian.tar.xz [dgit import tarball binutils 2.35.1-7 binutils_2.35.1-7.debian.tar.xz] --- a5e1a0550bee0ebf97dd5350546253fad2907e87 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..da817d075 --- /dev/null +++ b/changelog @@ -0,0 +1,6008 @@ +binutils (2.35.1-7) unstable; urgency=medium + + * Update from the binutils 2.35 branch: + - Fix PR gold/27140, ppc32 segmentation fault in make_stub. Closes: #973746. + - PR binutils/27128, nm -P portable output format regression. + - PR ld/26382, elf: Keep only one '@' for undefined versioned symbols. + - nm: Remove --with-symbol-versions. + + -- Matthias Klose Wed, 06 Jan 2021 11:57:25 +0100 + +binutils (2.35.1-6) unstable; urgency=medium + + * Fix FTCBFS: Disable pgo for cross builds (Helmut Grohne). Closes: #977822. + * 'nopgo' in DEB_BUILD_OPTIONS also disables the pgo builds. + + -- Matthias Klose Wed, 23 Dec 2020 09:38:22 +0100 + +binutils (2.35.1-5) unstable; urgency=medium + + * Backport the PGO/LTO build patches. + * Configure with --enable-pgo-build=lto, but don't do that for the cross + packages. Takes some time to build ... + + -- Matthias Klose 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..f50575108 --- /dev/null +++ b/patches/branch-updates.diff @@ -0,0 +1,12772 @@ +# DP: updates from the binutils-2.35 branch + +# git diff 7e46a74aa3713c563940960e361e08defda019c2 f0b8ea109fbcd6ae6d226234428061f88ebfd3cc + +diff --git a/bfd/ChangeLog b/bfd/ChangeLog +index 9fac12538a5..4c629d4be63 100644 +--- a/bfd/ChangeLog ++++ b/bfd/ChangeLog +@@ -1,3 +1,97 @@ ++2021-01-01 Alan Modra ++ ++ Apply from master ++ 2020-08-22 H.J. Lu ++ PR ld/26382 ++ * elflink.c (elf_link_output_symstrtab): Keep only one '@' for ++ versioned symbols, which are defined in shared objects, in ++ symbol string table. ++ ++2020-12-04 H.J. Lu ++ ++ 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 32be4b9460f..6bbed41d6d4 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 b8f0008a10d..977bf43a6a1 100644 +--- a/bfd/dwarf2.c ++++ b/bfd/dwarf2.c +@@ -3404,7 +3404,8 @@ scan_unit_for_symbols (struct comp_unit *unit) + else + { + func = NULL; +- if (abbrev->tag == DW_TAG_variable) ++ if (abbrev->tag == DW_TAG_variable ++ || abbrev->tag == DW_TAG_member) + { + size_t amt = sizeof (struct varinfo); + var = (struct varinfo *) bfd_zalloc (abfd, amt); +@@ -3516,7 +3517,7 @@ scan_unit_for_symbols (struct comp_unit *unit) + spec_var = lookup_var_by_offset (attr.u.val, + unit->variable_table); + if (spec_var == NULL) +- { ++ { + _bfd_error_handler (_("DWARF error: could not find " + "variable specification " + "at offset %lx"), +diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c +index 4bf37e1d981..ec8c85eba59 100644 +--- a/bfd/elf64-ppc.c ++++ b/bfd/elf64-ppc.c +@@ -114,7 +114,7 @@ static bfd_vma opd_entry_value + #define elf_backend_adjust_dynamic_symbol ppc64_elf_adjust_dynamic_symbol + #define elf_backend_hide_symbol ppc64_elf_hide_symbol + #define elf_backend_maybe_function_sym ppc64_elf_maybe_function_sym +-#define elf_backend_always_size_sections ppc64_elf_func_desc_adjust ++#define elf_backend_always_size_sections ppc64_elf_edit + #define elf_backend_size_dynamic_sections ppc64_elf_size_dynamic_sections + #define elf_backend_hash_symbol ppc64_elf_hash_symbol + #define elf_backend_init_index_section _bfd_elf_init_2_index_sections +@@ -211,9 +211,10 @@ static bfd_vma opd_entry_value + #define PLD_R12_PC 0x04100000e5800000ULL + #define PNOP 0x0700000000000000ULL + +-/* __glink_PLTresolve stub instructions. We enter with the index in R0. */ ++/* __glink_PLTresolve stub instructions. We enter with the index in ++ R0 for ELFv1, and the address of a glink branch in R12 for ELFv2. */ + #define GLINK_PLTRESOLVE_SIZE(htab) \ +- (8u + (htab->opd_abi ? 11 * 4 : 14 * 4)) ++ (8u + (htab->opd_abi ? 11 * 4 : htab->has_plt_localentry0 ? 14 * 4 : 13 * 4)) + /* 0: */ + /* .quad plt0-1f */ + /* __glink: */ +@@ -229,11 +230,14 @@ static bfd_vma opd_entry_value + /* mtctr %12 */ + /* ld %11,16(%11) */ + /* bctr */ +-#define MFLR_R0 0x7c0802a6 /* mflr %r0 */ +-#define MTLR_R0 0x7c0803a6 /* mtlr %r0 */ +-#define SUB_R12_R12_R11 0x7d8b6050 /* subf %r12,%r11,%r12 */ +-#define ADDI_R0_R12 0x380c0000 /* addi %r0,%r12,0 */ +-#define SRDI_R0_R0_2 0x7800f082 /* rldicl %r0,%r0,62,2 */ ++ ++#define MFLR_R0 0x7c0802a6 /* mflr %r0 */ ++#define MTLR_R0 0x7c0803a6 /* mtlr %r0 */ ++#define SUB_R12_R12_R11 0x7d8b6050 /* subf %r12,%r11,%r12 */ ++#define ADDI_R0_R12 0x380c0000 /* addi %r0,%r12,0 */ ++#define SRDI_R0_R0_2 0x7800f082 /* rldicl %r0,%r0,62,2 */ ++#define LD_R0_0R11 0xe80b0000 /* ld %r0,0(%r11) */ ++#define ADD_R11_R0_R11 0x7d605a14 /* add %r11,%r0,%r11 */ + + /* Pad with this. */ + #define NOP 0x60000000 +@@ -6340,13 +6344,13 @@ static const struct sfpr_def_parms save_res_funcs[] = + }; + + /* Called near the start of bfd_elf_size_dynamic_sections. We use +- this hook to a) provide some gcc support functions, and b) transfer +- dynamic linking information gathered so far on function code symbol +- entries, to their corresponding function descriptor symbol entries. */ ++ this hook to a) run the edit functions in this file, b) provide ++ some gcc support functions, and c) transfer dynamic linking ++ information gathered so far on function code symbol entries, to ++ their corresponding function descriptor symbol entries. */ + + static bfd_boolean +-ppc64_elf_func_desc_adjust (bfd *obfd ATTRIBUTE_UNUSED, +- struct bfd_link_info *info) ++ppc64_elf_edit (bfd *obfd ATTRIBUTE_UNUSED, struct bfd_link_info *info) + { + struct ppc_link_hash_table *htab; + +@@ -6354,6 +6358,9 @@ ppc64_elf_func_desc_adjust (bfd *obfd ATTRIBUTE_UNUSED, + if (htab == NULL) + return FALSE; + ++ /* Call back into the linker, which then runs the edit functions. */ ++ htab->params->edit (); ++ + /* Provide any missing _save* and _rest* functions. */ + if (htab->sfpr != NULL) + { +@@ -7694,9 +7701,11 @@ ppc64_elf_inline_plt (struct bfd_link_info *info) + return TRUE; + } + +-/* Set htab->tls_get_addr and call the generic ELF tls_setup function. */ ++/* Set htab->tls_get_addr and various other info specific to TLS. ++ This needs to run before dynamic symbols are processed in ++ bfd_elf_size_dynamic_sections. */ + +-asection * ++bfd_boolean + ppc64_elf_tls_setup (struct bfd_link_info *info) + { + struct ppc_link_hash_table *htab; +@@ -7704,7 +7713,7 @@ ppc64_elf_tls_setup (struct bfd_link_info *info) + + htab = ppc_hash_table (info); + if (htab == NULL) +- return NULL; ++ return FALSE; + + if (abiversion (info->output_bfd) == 1) + htab->opd_abi = 1; +@@ -7730,6 +7739,19 @@ ppc64_elf_tls_setup (struct bfd_link_info *info) + --plt-localentry can cause trouble. */ + if (htab->params->plt_localentry0 < 0) + htab->params->plt_localentry0 = 0; ++ if (htab->params->plt_localentry0 && htab->has_power10_relocs) ++ { ++ /* The issue is that __glink_PLTresolve saves r2, which is done ++ because glibc ld.so _dl_runtime_resolve restores r2 to support ++ a glibc plt call optimisation where global entry code is ++ skipped on calls that resolve to the same binary. The ++ __glink_PLTresolve save of r2 is incompatible with code ++ making tail calls, because the tail call might go via the ++ resolver and thus overwrite the proper saved r2. */ ++ _bfd_error_handler (_("warning: --plt-localentry is incompatible with " ++ "power10 pc-relative code")); ++ htab->params->plt_localentry0 = 0; ++ } + if (htab->params->plt_localentry0 + && elf_link_hash_lookup (&htab->elf, "GLIBC_2.26", + FALSE, FALSE, FALSE) == NULL) +@@ -7826,7 +7848,7 @@ ppc64_elf_tls_setup (struct bfd_link_info *info) + _bfd_elf_strtab_delref (elf_hash_table (info)->dynstr, + opt_fd->dynstr_index); + if (!bfd_elf_link_record_dynamic_symbol (info, opt_fd)) +- return NULL; ++ return FALSE; + } + if (tga_fd != NULL) + { +@@ -7885,7 +7907,7 @@ ppc64_elf_tls_setup (struct bfd_link_info *info) + && htab->params->no_tls_get_addr_regsave == -1) + htab->params->no_tls_get_addr_regsave = 0; + +- return _bfd_elf_tls_setup (info->output_bfd, info); ++ return TRUE; + } + + /* Return TRUE iff REL is a branch reloc with a global symbol matching +@@ -10834,62 +10856,60 @@ eh_advance_size (unsigned int delta) + static inline unsigned int + plt_stub_size (struct ppc_link_hash_table *htab, + struct ppc_stub_hash_entry *stub_entry, +- bfd_vma off) ++ bfd_vma off, ++ unsigned int odd) + { + unsigned size; + + if (stub_entry->stub_type >= ppc_stub_plt_call_notoc) + { + if (htab->params->power10_stubs != 0) +- { +- bfd_vma start = (stub_entry->stub_offset +- + stub_entry->group->stub_sec->output_offset +- + stub_entry->group->stub_sec->output_section->vma); +- if (stub_entry->stub_type > ppc_stub_plt_call_notoc) +- start += 4; +- size = 8 + size_power10_offset (off, start & 4); +- } ++ size = 8 + size_power10_offset (off, odd); + else + size = 8 + size_offset (off - 8); + if (stub_entry->stub_type > ppc_stub_plt_call_notoc) + size += 4; +- return size; + } +- +- size = 12; +- if (ALWAYS_EMIT_R2SAVE +- || stub_entry->stub_type == ppc_stub_plt_call_r2save) +- size += 4; +- if (PPC_HA (off) != 0) +- size += 4; +- if (htab->opd_abi) ++ else + { +- size += 4; +- if (htab->params->plt_static_chain) ++ size = 12; ++ if (ALWAYS_EMIT_R2SAVE ++ || stub_entry->stub_type == ppc_stub_plt_call_r2save) + size += 4; +- if (htab->params->plt_thread_safe +- && htab->elf.dynamic_sections_created +- && stub_entry->h != NULL +- && stub_entry->h->elf.dynindx != -1) +- size += 8; +- if (PPC_HA (off + 8 + 8 * htab->params->plt_static_chain) != PPC_HA (off)) ++ if (PPC_HA (off) != 0) + size += 4; ++ if (htab->opd_abi) ++ { ++ size += 4; ++ if (htab->params->plt_static_chain) ++ size += 4; ++ if (htab->params->plt_thread_safe ++ && htab->elf.dynamic_sections_created ++ && stub_entry->h != NULL ++ && stub_entry->h->elf.dynindx != -1) ++ size += 8; ++ if (PPC_HA (off + 8 + 8 * htab->params->plt_static_chain) ++ != PPC_HA (off)) ++ size += 4; ++ } + } + if (stub_entry->h != NULL + && is_tls_get_addr (&stub_entry->h->elf, htab) + && htab->params->tls_get_addr_opt) + { +- if (htab->params->no_tls_get_addr_regsave) ++ if (!htab->params->no_tls_get_addr_regsave) + { +- size += 7 * 4; +- if (stub_entry->stub_type == ppc_stub_plt_call_r2save) +- size += 6 * 4; ++ size += 30 * 4; ++ if (stub_entry->stub_type == ppc_stub_plt_call_r2save ++ || stub_entry->stub_type == ppc_stub_plt_call_both) ++ size += 4; + } + else + { +- size += 30 * 4; +- if (stub_entry->stub_type == ppc_stub_plt_call_r2save) +- size += 4; ++ size += 7 * 4; ++ if (stub_entry->stub_type == ppc_stub_plt_call_r2save ++ || stub_entry->stub_type == ppc_stub_plt_call_both) ++ size += 6 * 4; + } + } + return size; +@@ -10904,7 +10924,8 @@ plt_stub_size (struct ppc_link_hash_table *htab, + static inline unsigned int + plt_stub_pad (struct ppc_link_hash_table *htab, + struct ppc_stub_hash_entry *stub_entry, +- bfd_vma plt_off) ++ bfd_vma plt_off, ++ unsigned int odd) + { + int stub_align; + unsigned stub_size; +@@ -10919,7 +10940,7 @@ plt_stub_pad (struct ppc_link_hash_table *htab, + } + + stub_align = 1 << -htab->params->plt_stub_align; +- stub_size = plt_stub_size (htab, stub_entry, plt_off); ++ stub_size = plt_stub_size (htab, stub_entry, plt_off, odd); + if (((stub_off + stub_size - 1) & -stub_align) - (stub_off & -stub_align) + > ((stub_size - 1) & -stub_align)) + return stub_align - (stub_off & (stub_align - 1)); +@@ -11114,14 +11135,12 @@ build_plt_stub (struct ppc_link_hash_table *htab, + #define MR_R3_R0 0x7c030378 + #define BCTRL 0x4e800421 + +-static inline bfd_byte * +-build_tls_get_addr_stub (struct ppc_link_hash_table *htab, ++static bfd_byte * ++build_tls_get_addr_head (struct ppc_link_hash_table *htab, + struct ppc_stub_hash_entry *stub_entry, +- bfd_byte *p, bfd_vma offset, Elf_Internal_Rela *r) ++ bfd_byte *p) + { + bfd *obfd = htab->params->stub_bfd; +- bfd_byte *loc = p; +- unsigned int i; + + bfd_put_32 (obfd, LD_R0_0R3 + 0, p), p += 4; + bfd_put_32 (obfd, LD_R12_0R3 + 8, p), p += 4; +@@ -11130,21 +11149,43 @@ build_tls_get_addr_stub (struct ppc_link_hash_table *htab, + bfd_put_32 (obfd, ADD_R3_R12_R13, p), p += 4; + bfd_put_32 (obfd, BEQLR, p), p += 4; + bfd_put_32 (obfd, MR_R3_R0, p), p += 4; +- if (htab->params->no_tls_get_addr_regsave) +- { +- if (r != NULL) +- r[0].r_offset += 7 * 4; +- if (stub_entry->stub_type != ppc_stub_plt_call_r2save) +- return build_plt_stub (htab, stub_entry, p, offset, r); + ++ if (!htab->params->no_tls_get_addr_regsave) ++ p = tls_get_addr_prologue (obfd, p, htab); ++ else if (stub_entry->stub_type == ppc_stub_plt_call_r2save ++ || stub_entry->stub_type == ppc_stub_plt_call_both) ++ { + bfd_put_32 (obfd, MFLR_R0, p); + p += 4; + bfd_put_32 (obfd, STD_R0_0R1 + STK_LINKER (htab), p); + p += 4; ++ } ++ return p; ++} + +- if (r != NULL) +- r[0].r_offset += 2 * 4; +- p = build_plt_stub (htab, stub_entry, p, offset, r); ++static bfd_byte * ++build_tls_get_addr_tail (struct ppc_link_hash_table *htab, ++ struct ppc_stub_hash_entry *stub_entry, ++ bfd_byte *p, ++ bfd_byte *loc) ++{ ++ bfd *obfd = htab->params->stub_bfd; ++ ++ if (!htab->params->no_tls_get_addr_regsave) ++ { ++ bfd_put_32 (obfd, BCTRL, p - 4); ++ ++ if (stub_entry->stub_type == ppc_stub_plt_call_r2save ++ || stub_entry->stub_type == ppc_stub_plt_call_both) ++ { ++ bfd_put_32 (obfd, LD_R2_0R1 + STK_TOC (htab), p); ++ p += 4; ++ } ++ p = tls_get_addr_epilogue (obfd, p, htab); ++ } ++ else if (stub_entry->stub_type == ppc_stub_plt_call_r2save ++ || stub_entry->stub_type == ppc_stub_plt_call_both) ++ { + bfd_put_32 (obfd, BCTRL, p - 4); + + bfd_put_32 (obfd, LD_R2_0R1 + STK_TOC (htab), p); +@@ -11156,24 +11197,6 @@ build_tls_get_addr_stub (struct ppc_link_hash_table *htab, + bfd_put_32 (obfd, BLR, p); + p += 4; + } +- else +- { +- p = tls_get_addr_prologue (obfd, p, htab); +- +- if (r != NULL) +- r[0].r_offset += 18 * 4; +- +- p = build_plt_stub (htab, stub_entry, p, offset, r); +- bfd_put_32 (obfd, BCTRL, p - 4); +- +- if (stub_entry->stub_type == ppc_stub_plt_call_r2save) +- { +- bfd_put_32 (obfd, LD_R2_0R1 + STK_TOC (htab), p); +- p += 4; +- } +- +- p = tls_get_addr_epilogue (obfd, p, htab); +- } + + if (htab->glink_eh_frame != NULL + && htab->glink_eh_frame->size != 0) +@@ -11182,21 +11205,11 @@ build_tls_get_addr_stub (struct ppc_link_hash_table *htab, + + base = htab->glink_eh_frame->contents + stub_entry->group->eh_base + 17; + eh = base + stub_entry->group->eh_size; +- if (htab->params->no_tls_get_addr_regsave) +- { +- unsigned int lr_used, delta; +- lr_used = stub_entry->stub_offset + (p - 20 - loc); +- delta = lr_used - stub_entry->group->lr_restore; +- stub_entry->group->lr_restore = lr_used + 16; +- eh = eh_advance (htab->elf.dynobj, eh, delta); +- *eh++ = DW_CFA_offset_extended_sf; +- *eh++ = 65; +- *eh++ = -(STK_LINKER (htab) / 8) & 0x7f; +- *eh++ = DW_CFA_advance_loc + 4; +- } +- else ++ ++ if (!htab->params->no_tls_get_addr_regsave) + { +- unsigned int cfa_updt, delta; ++ unsigned int cfa_updt, delta, i; ++ + /* After the bctrl, lr has been modified so we need to emit + .eh_frame info saying the return address is on the stack. In + fact we must put the EH info at or before the call rather +@@ -11235,10 +11248,27 @@ build_tls_get_addr_stub (struct ppc_link_hash_table *htab, + for (i = 4; i < 12; i++) + *eh++ = DW_CFA_restore + i; + *eh++ = DW_CFA_advance_loc + 2; ++ *eh++ = DW_CFA_restore_extended; ++ *eh++ = 65; ++ stub_entry->group->eh_size = eh - base; ++ } ++ else if (stub_entry->stub_type == ppc_stub_plt_call_r2save ++ || stub_entry->stub_type == ppc_stub_plt_call_both) ++ { ++ unsigned int lr_used, delta; ++ ++ lr_used = stub_entry->stub_offset + (p - 20 - loc); ++ delta = lr_used - stub_entry->group->lr_restore; ++ stub_entry->group->lr_restore = lr_used + 16; ++ eh = eh_advance (htab->elf.dynobj, eh, delta); ++ *eh++ = DW_CFA_offset_extended_sf; ++ *eh++ = 65; ++ *eh++ = -(STK_LINKER (htab) / 8) & 0x7f; ++ *eh++ = DW_CFA_advance_loc + 4; ++ *eh++ = DW_CFA_restore_extended; ++ *eh++ = 65; ++ stub_entry->group->eh_size = eh - base; + } +- *eh++ = DW_CFA_restore_extended; +- *eh++ = 65; +- stub_entry->group->eh_size = eh - base; + } + return p; + } +@@ -11372,6 +11402,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + struct ppc_branch_hash_entry *br_entry; + struct bfd_link_info *info; + struct ppc_link_hash_table *htab; ++ bfd *obfd; + bfd_byte *loc; + bfd_byte *p, *relp; + bfd_vma targ, off; +@@ -11379,6 +11410,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + asection *plt; + int num_rel; + int odd; ++ bfd_boolean is_tga; + + /* Massage our args to the form they really have. */ + stub_entry = (struct ppc_stub_hash_entry *) gen_entry; +@@ -11428,6 +11460,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + off = targ - off; + + p = loc; ++ obfd = htab->params->stub_bfd; + if (stub_entry->stub_type == ppc_stub_long_branch_r2off) + { + bfd_vma r2off = get_r2off (info, stub_entry); +@@ -11437,23 +11470,21 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + htab->stub_error = TRUE; + return FALSE; + } +- bfd_put_32 (htab->params->stub_bfd, STD_R2_0R1 + STK_TOC (htab), p); ++ bfd_put_32 (obfd, STD_R2_0R1 + STK_TOC (htab), p); + p += 4; + if (PPC_HA (r2off) != 0) + { +- bfd_put_32 (htab->params->stub_bfd, +- ADDIS_R2_R2 | PPC_HA (r2off), p); ++ bfd_put_32 (obfd, ADDIS_R2_R2 | PPC_HA (r2off), p); + p += 4; + } + if (PPC_LO (r2off) != 0) + { +- bfd_put_32 (htab->params->stub_bfd, +- ADDI_R2_R2 | PPC_LO (r2off), p); ++ bfd_put_32 (obfd, ADDI_R2_R2 | PPC_LO (r2off), p); + p += 4; + } + off -= p - loc; + } +- bfd_put_32 (htab->params->stub_bfd, B_DOT | (off & 0x3fffffc), p); ++ bfd_put_32 (obfd, B_DOT | (off & 0x3fffffc), p); + p += 4; + + if (off + (1 << 25) >= (bfd_vma) (1 << 26)) +@@ -11579,19 +11610,17 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + } + + p = loc; ++ obfd = htab->params->stub_bfd; + if (stub_entry->stub_type != ppc_stub_plt_branch_r2off) + { + if (PPC_HA (off) != 0) + { +- bfd_put_32 (htab->params->stub_bfd, +- ADDIS_R12_R2 | PPC_HA (off), p); ++ bfd_put_32 (obfd, ADDIS_R12_R2 | PPC_HA (off), p); + p += 4; +- bfd_put_32 (htab->params->stub_bfd, +- LD_R12_0R12 | PPC_LO (off), p); ++ bfd_put_32 (obfd, LD_R12_0R12 | PPC_LO (off), p); + } + else +- bfd_put_32 (htab->params->stub_bfd, +- LD_R12_0R2 | PPC_LO (off), p); ++ bfd_put_32 (obfd, LD_R12_0R2 | PPC_LO (off), p); + } + else + { +@@ -11603,36 +11632,32 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + return FALSE; + } + +- bfd_put_32 (htab->params->stub_bfd, STD_R2_0R1 + STK_TOC (htab), p); ++ bfd_put_32 (obfd, STD_R2_0R1 + STK_TOC (htab), p); + p += 4; + if (PPC_HA (off) != 0) + { +- bfd_put_32 (htab->params->stub_bfd, +- ADDIS_R12_R2 | PPC_HA (off), p); ++ bfd_put_32 (obfd, ADDIS_R12_R2 | PPC_HA (off), p); + p += 4; +- bfd_put_32 (htab->params->stub_bfd, +- LD_R12_0R12 | PPC_LO (off), p); ++ bfd_put_32 (obfd, LD_R12_0R12 | PPC_LO (off), p); + } + else +- bfd_put_32 (htab->params->stub_bfd, LD_R12_0R2 | PPC_LO (off), p); ++ bfd_put_32 (obfd, LD_R12_0R2 | PPC_LO (off), p); + + if (PPC_HA (r2off) != 0) + { + p += 4; +- bfd_put_32 (htab->params->stub_bfd, +- ADDIS_R2_R2 | PPC_HA (r2off), p); ++ bfd_put_32 (obfd, ADDIS_R2_R2 | PPC_HA (r2off), p); + } + if (PPC_LO (r2off) != 0) + { + p += 4; +- bfd_put_32 (htab->params->stub_bfd, +- ADDI_R2_R2 | PPC_LO (r2off), p); ++ bfd_put_32 (obfd, ADDI_R2_R2 | PPC_LO (r2off), p); + } + } + p += 4; +- bfd_put_32 (htab->params->stub_bfd, MTCTR_R12, p); ++ bfd_put_32 (obfd, MTCTR_R12, p); + p += 4; +- bfd_put_32 (htab->params->stub_bfd, BCTR, p); ++ bfd_put_32 (obfd, BCTR, p); + p += 4; + break; + +@@ -11646,12 +11671,23 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + off = (stub_entry->stub_offset + + stub_entry->group->stub_sec->output_offset + + stub_entry->group->stub_sec->output_section->vma); ++ obfd = htab->params->stub_bfd; ++ is_tga = ((stub_entry->stub_type == ppc_stub_plt_call_notoc ++ || stub_entry->stub_type == ppc_stub_plt_call_both) ++ && stub_entry->h != NULL ++ && is_tls_get_addr (&stub_entry->h->elf, htab) ++ && htab->params->tls_get_addr_opt); ++ if (is_tga) ++ { ++ p = build_tls_get_addr_head (htab, stub_entry, p); ++ off += p - loc; ++ } + if (stub_entry->stub_type == ppc_stub_long_branch_both + || stub_entry->stub_type == ppc_stub_plt_branch_both + || stub_entry->stub_type == ppc_stub_plt_call_both) + { + off += 4; +- bfd_put_32 (htab->params->stub_bfd, STD_R2_0R1 + STK_TOC (htab), p); ++ bfd_put_32 (obfd, STD_R2_0R1 + STK_TOC (htab), p); + p += 4; + } + if (stub_entry->stub_type >= ppc_stub_plt_call_notoc) +@@ -11684,17 +11720,39 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + if (htab->params->power10_stubs != 0) + { + bfd_boolean load = stub_entry->stub_type >= ppc_stub_plt_call_notoc; +- p = build_power10_offset (htab->params->stub_bfd, p, off, odd, load); ++ p = build_power10_offset (obfd, p, off, odd, load); + } + else + { ++ if (htab->glink_eh_frame != NULL ++ && htab->glink_eh_frame->size != 0) ++ { ++ bfd_byte *base, *eh; ++ unsigned int lr_used, delta; ++ ++ base = (htab->glink_eh_frame->contents ++ + stub_entry->group->eh_base + 17); ++ eh = base + stub_entry->group->eh_size; ++ lr_used = stub_entry->stub_offset + (p - loc) + 8; ++ delta = lr_used - stub_entry->group->lr_restore; ++ stub_entry->group->lr_restore = lr_used + 8; ++ eh = eh_advance (htab->elf.dynobj, eh, delta); ++ *eh++ = DW_CFA_register; ++ *eh++ = 65; ++ *eh++ = 12; ++ *eh++ = DW_CFA_advance_loc + 2; ++ *eh++ = DW_CFA_restore_extended; ++ *eh++ = 65; ++ stub_entry->group->eh_size = eh - base; ++ } ++ + /* The notoc stubs calculate their target (either a PLT entry or + the global entry point of a function) relative to the PC + returned by the "bcl" two instructions past the start of the + sequence emitted by build_offset. The offset is therefore 8 + less than calculated from the start of the sequence. */ + off -= 8; +- p = build_offset (htab->params->stub_bfd, p, off, ++ p = build_offset (obfd, p, off, + stub_entry->stub_type >= ppc_stub_plt_call_notoc); + } + +@@ -11706,17 +11764,19 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + + stub_entry->group->stub_sec->output_offset + + stub_entry->group->stub_sec->output_section->vma + + (p - loc)); +- bfd_put_32 (htab->params->stub_bfd, +- B_DOT | ((targ - from) & 0x3fffffc), p); ++ bfd_put_32 (obfd, B_DOT | ((targ - from) & 0x3fffffc), p); + } + else + { +- bfd_put_32 (htab->params->stub_bfd, MTCTR_R12, p); ++ bfd_put_32 (obfd, MTCTR_R12, p); + p += 4; +- bfd_put_32 (htab->params->stub_bfd, BCTR, p); ++ bfd_put_32 (obfd, BCTR, p); + } + p += 4; + ++ if (is_tga) ++ p = build_tls_get_addr_tail (htab, stub_entry, p, loc); ++ + if (info->emitrelocations) + { + bfd_vma roff = relp - stub_entry->group->stub_sec->contents; +@@ -11747,33 +11807,6 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + return FALSE; + } + } +- +- if (htab->params->power10_stubs == 0 +- && htab->glink_eh_frame != NULL +- && htab->glink_eh_frame->size != 0) +- { +- bfd_byte *base, *eh; +- unsigned int lr_used, delta; +- +- base = (htab->glink_eh_frame->contents +- + stub_entry->group->eh_base + 17); +- eh = base + stub_entry->group->eh_size; +- lr_used = stub_entry->stub_offset + 8; +- if (stub_entry->stub_type == ppc_stub_long_branch_both +- || stub_entry->stub_type == ppc_stub_plt_branch_both +- || stub_entry->stub_type == ppc_stub_plt_call_both) +- lr_used += 4; +- delta = lr_used - stub_entry->group->lr_restore; +- stub_entry->group->lr_restore = lr_used + 8; +- eh = eh_advance (htab->elf.dynobj, eh, delta); +- *eh++ = DW_CFA_register; +- *eh++ = 65; +- *eh++ = 12; +- *eh++ = DW_CFA_advance_loc + 2; +- *eh++ = DW_CFA_restore_extended; +- *eh++ = 65; +- stub_entry->group->eh_size = eh - base; +- } + break; + + case ppc_stub_plt_call: +@@ -11842,12 +11875,20 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + r[0].r_offset += 2; + r[0].r_addend = targ; + } +- if (stub_entry->h != NULL +- && is_tls_get_addr (&stub_entry->h->elf, htab) +- && htab->params->tls_get_addr_opt) +- p = build_tls_get_addr_stub (htab, stub_entry, loc, off, r); +- else +- p = build_plt_stub (htab, stub_entry, loc, off, r); ++ p = loc; ++ obfd = htab->params->stub_bfd; ++ is_tga = (stub_entry->h != NULL ++ && is_tls_get_addr (&stub_entry->h->elf, htab) ++ && htab->params->tls_get_addr_opt); ++ if (is_tga) ++ { ++ p = build_tls_get_addr_head (htab, stub_entry, p); ++ if (r != NULL) ++ r[0].r_offset += p - loc; ++ } ++ p = build_plt_stub (htab, stub_entry, p, off, r); ++ if (is_tga) ++ p = build_tls_get_addr_tail (htab, stub_entry, p, loc); + break; + + case ppc_stub_save_res: +@@ -12143,11 +12184,19 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + + case ppc_stub_plt_call_notoc: + case ppc_stub_plt_call_both: +- off = (stub_entry->stub_offset +- + stub_entry->group->stub_sec->output_offset +- + stub_entry->group->stub_sec->output_section->vma); ++ lr_used = 0; ++ if (stub_entry->h != NULL ++ && is_tls_get_addr (&stub_entry->h->elf, htab) ++ && htab->params->tls_get_addr_opt) ++ { ++ lr_used += 7 * 4; ++ if (!htab->params->no_tls_get_addr_regsave) ++ lr_used += 11 * 4; ++ else if (stub_entry->stub_type == ppc_stub_plt_call_both) ++ lr_used += 2 * 4; ++ } + if (stub_entry->stub_type == ppc_stub_plt_call_both) +- off += 4; ++ lr_used += 4; + targ = stub_entry->plt_ent->plt.offset & ~1; + if (targ >= (bfd_vma) -2) + abort (); +@@ -12163,16 +12212,21 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + plt = htab->pltlocal; + } + targ += plt->output_offset + plt->output_section->vma; ++ off = (stub_entry->stub_offset ++ + stub_entry->group->stub_sec->output_offset ++ + stub_entry->group->stub_sec->output_section->vma ++ + lr_used); + odd = off & 4; + off = targ - off; + + if (htab->params->plt_stub_align != 0) + { +- unsigned pad = plt_stub_pad (htab, stub_entry, off); ++ unsigned pad = plt_stub_pad (htab, stub_entry, off, odd); + + stub_entry->group->stub_sec->size += pad; + stub_entry->stub_offset = stub_entry->group->stub_sec->size; + off -= pad; ++ odd ^= pad & 4; + } + + if (info->emitrelocations) +@@ -12186,15 +12240,13 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + stub_entry->group->stub_sec->flags |= SEC_RELOC; + } + +- size = plt_stub_size (htab, stub_entry, off); ++ size = plt_stub_size (htab, stub_entry, off, odd); + + if (htab->params->power10_stubs == 0) + { + /* After the bcl, lr has been modified so we need to emit + .eh_frame info saying the return address is in r12. */ +- lr_used = stub_entry->stub_offset + 8; +- if (stub_entry->stub_type == ppc_stub_plt_call_both) +- lr_used += 4; ++ lr_used += stub_entry->stub_offset + 8; + /* The eh_frame info will consist of a DW_CFA_advance_loc or + variant, DW_CFA_register, 65, 12, DW_CFA_advance_loc+2, + DW_CFA_restore_extended 65. */ +@@ -12202,6 +12254,30 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + stub_entry->group->eh_size += eh_advance_size (delta) + 6; + stub_entry->group->lr_restore = lr_used + 8; + } ++ if ((stub_entry->stub_type == ppc_stub_plt_call_notoc ++ || stub_entry->stub_type == ppc_stub_plt_call_both) ++ && stub_entry->h != NULL ++ && is_tls_get_addr (&stub_entry->h->elf, htab) ++ && htab->params->tls_get_addr_opt) ++ { ++ if (!htab->params->no_tls_get_addr_regsave) ++ { ++ unsigned int cfa_updt = stub_entry->stub_offset + 18 * 4; ++ delta = cfa_updt - stub_entry->group->lr_restore; ++ stub_entry->group->eh_size += eh_advance_size (delta); ++ stub_entry->group->eh_size += htab->opd_abi ? 36 : 35; ++ stub_entry->group->lr_restore ++ = stub_entry->stub_offset + size - 4; ++ } ++ else if (stub_entry->stub_type == ppc_stub_plt_call_both) ++ { ++ lr_used = stub_entry->stub_offset + size - 20; ++ delta = lr_used - stub_entry->group->lr_restore; ++ stub_entry->group->eh_size += eh_advance_size (delta) + 6; ++ stub_entry->group->lr_restore ++ = stub_entry->stub_offset + size - 4; ++ } ++ } + break; + + case ppc_stub_plt_call: +@@ -12227,7 +12303,7 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + + if (htab->params->plt_stub_align != 0) + { +- unsigned pad = plt_stub_pad (htab, stub_entry, off); ++ unsigned pad = plt_stub_pad (htab, stub_entry, off, 0); + + stub_entry->group->stub_sec->size += pad; + stub_entry->stub_offset = stub_entry->group->stub_sec->size; +@@ -12244,14 +12320,22 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + stub_entry->group->stub_sec->flags |= SEC_RELOC; + } + +- size = plt_stub_size (htab, stub_entry, off); ++ size = plt_stub_size (htab, stub_entry, off, 0); + + if (stub_entry->h != NULL + && is_tls_get_addr (&stub_entry->h->elf, htab) + && htab->params->tls_get_addr_opt + && stub_entry->stub_type == ppc_stub_plt_call_r2save) + { +- if (htab->params->no_tls_get_addr_regsave) ++ if (!htab->params->no_tls_get_addr_regsave) ++ { ++ /* Adjustments to r1 need to be described. */ ++ unsigned int cfa_updt = stub_entry->stub_offset + 18 * 4; ++ delta = cfa_updt - stub_entry->group->lr_restore; ++ stub_entry->group->eh_size += eh_advance_size (delta); ++ stub_entry->group->eh_size += htab->opd_abi ? 36 : 35; ++ } ++ else + { + lr_used = stub_entry->stub_offset + size - 20; + /* The eh_frame info will consist of a DW_CFA_advance_loc +@@ -12260,15 +12344,7 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + delta = lr_used - stub_entry->group->lr_restore; + stub_entry->group->eh_size += eh_advance_size (delta) + 6; + } +- else +- { +- /* Adjustments to r1 need to be described. */ +- unsigned int cfa_updt = stub_entry->stub_offset + 18 * 4; +- delta = cfa_updt - stub_entry->group->lr_restore; +- stub_entry->group->eh_size += eh_advance_size (delta); +- stub_entry->group->eh_size += htab->opd_abi ? 36 : 35; +- } +- stub_entry->group->lr_restore = size - 4; ++ stub_entry->group->lr_restore = stub_entry->stub_offset + size - 4; + } + break; + +@@ -13814,11 +13890,11 @@ ppc64_elf_size_stubs (struct bfd_link_info *info) + /* Augmentation. */ + p += 1; + +- *p++ = DW_CFA_advance_loc + 1; ++ *p++ = DW_CFA_advance_loc + (htab->has_plt_localentry0 ? 3 : 2); + *p++ = DW_CFA_register; + *p++ = 65; + *p++ = htab->opd_abi ? 12 : 0; +- *p++ = DW_CFA_advance_loc + (htab->opd_abi ? 5 : 7); ++ *p++ = DW_CFA_advance_loc + (htab->opd_abi ? 4 : 2); + *p++ = DW_CFA_restore_extended; + *p++ = 65; + p += ((24 + align - 1) & -align) - 24; +@@ -14179,8 +14255,6 @@ write_plt_relocs_for_local_syms (struct bfd_link_info *info) + } + + val = sym->st_value + ent->addend; +- if (ELF_ST_TYPE (sym->st_info) != STT_GNU_IFUNC) +- val += PPC64_LOCAL_ENTRY_OFFSET (sym->st_other); + if (sym_sec != NULL && sym_sec->output_section != NULL) + val += sym_sec->output_offset + sym_sec->output_section->vma; + +@@ -14414,23 +14488,60 @@ ppc64_elf_build_stubs (struct bfd_link_info *info, + } + else + { ++ unsigned int insn; ++ ++ /* 0: ++ . .quad plt0-1f # plt0 entry relative to 1: ++ # ++ # We get here with r12 initially @ a glink branch ++ # Load the address of _dl_runtime_resolve from plt0 and ++ # jump to it, with r0 set to the index of the PLT entry ++ # to be resolved and r11 the link map. ++ __glink_PLTresolve: ++ . std %r2,24(%r1) # optional ++ . mflr %r0 ++ . bcl 20,31,1f ++ 1: ++ . mflr %r11 ++ . mtlr %r0 ++ . ld %r0,(0b-1b)(%r11) ++ . sub %r12,%r12,%r11 ++ . add %r11,%r0,%r11 ++ . addi %r0,%r12,1b-2f ++ . ld %r12,0(%r11) ++ . srdi %r0,%r0,2 ++ . mtctr %r12 ++ . ld %r11,8(%r11) ++ . bctr ++ 2: ++ . b __glink_PLTresolve ++ . ... ++ . b __glink_PLTresolve */ ++ ++ if (htab->has_plt_localentry0) ++ { ++ bfd_put_32 (htab->glink->owner, STD_R2_0R1 + 24, p); ++ p += 4; ++ } + bfd_put_32 (htab->glink->owner, MFLR_R0, p); + p += 4; + bfd_put_32 (htab->glink->owner, BCL_20_31, p); + p += 4; + bfd_put_32 (htab->glink->owner, MFLR_R11, p); + p += 4; +- bfd_put_32 (htab->glink->owner, STD_R2_0R1 + 24, p); +- p += 4; +- bfd_put_32 (htab->glink->owner, LD_R2_0R11 | (-16 & 0xfffc), p); +- p += 4; + bfd_put_32 (htab->glink->owner, MTLR_R0, p); + p += 4; ++ if (htab->has_plt_localentry0) ++ insn = LD_R0_0R11 | (-20 & 0xfffc); ++ else ++ insn = LD_R0_0R11 | (-16 & 0xfffc); ++ bfd_put_32 (htab->glink->owner, insn, p); ++ p += 4; + bfd_put_32 (htab->glink->owner, SUB_R12_R12_R11, p); + p += 4; +- bfd_put_32 (htab->glink->owner, ADD_R11_R2_R11, p); ++ bfd_put_32 (htab->glink->owner, ADD_R11_R0_R11, p); + p += 4; +- bfd_put_32 (htab->glink->owner, ADDI_R0_R12 | (-48 & 0xffff), p); ++ bfd_put_32 (htab->glink->owner, ADDI_R0_R12 | (-44 & 0xffff), p); + p += 4; + bfd_put_32 (htab->glink->owner, LD_R12_0R11, p); + p += 4; +@@ -15880,22 +15991,25 @@ ppc64_elf_relocate_section (bfd *output_bfd, + addend = 0; + reloc_dest = DEST_STUB; + +- if (((stub_entry->stub_type == ppc_stub_plt_call +- && ALWAYS_EMIT_R2SAVE) +- || stub_entry->stub_type == ppc_stub_plt_call_r2save +- || stub_entry->stub_type == ppc_stub_plt_call_both) +- && !(h != NULL +- && is_tls_get_addr (&h->elf, htab) +- && htab->params->tls_get_addr_opt) +- && rel + 1 < relend +- && rel[1].r_offset == rel->r_offset + 4 +- && ELF64_R_TYPE (rel[1].r_info) == R_PPC64_TOCSAVE) +- relocation += 4; +- else if ((stub_entry->stub_type == ppc_stub_long_branch_both +- || stub_entry->stub_type == ppc_stub_plt_branch_both +- || stub_entry->stub_type == ppc_stub_plt_call_both) +- && r_type == R_PPC64_REL24_NOTOC) +- relocation += 4; ++ if ((((stub_entry->stub_type == ppc_stub_plt_call ++ && ALWAYS_EMIT_R2SAVE) ++ || stub_entry->stub_type == ppc_stub_plt_call_r2save ++ || stub_entry->stub_type == ppc_stub_plt_call_both) ++ && rel + 1 < relend ++ && rel[1].r_offset == rel->r_offset + 4 ++ && ELF64_R_TYPE (rel[1].r_info) == R_PPC64_TOCSAVE) ++ || ((stub_entry->stub_type == ppc_stub_long_branch_both ++ || stub_entry->stub_type == ppc_stub_plt_branch_both ++ || stub_entry->stub_type == ppc_stub_plt_call_both) ++ && r_type == R_PPC64_REL24_NOTOC)) ++ { ++ /* Skip over the r2 store at the start of the stub. */ ++ if (!(stub_entry->stub_type >= ppc_stub_plt_call ++ && htab->params->tls_get_addr_opt ++ && h != NULL ++ && is_tls_get_addr (&h->elf, htab))) ++ relocation += 4; ++ } + + if (r_type == R_PPC64_REL24_NOTOC + && (stub_entry->stub_type == ppc_stub_plt_call_notoc +@@ -15944,7 +16058,8 @@ ppc64_elf_relocate_section (bfd *output_bfd, + break; + + case R_PPC64_GOT16_DS: +- if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC) ++ if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC ++ || !htab->do_toc_opt) + break; + from = TOCstart + htab->sec_info[input_section->id].toc_off; + if (relocation + addend - from + 0x8000 < 0x10000 +@@ -15963,7 +16078,8 @@ ppc64_elf_relocate_section (bfd *output_bfd, + + case R_PPC64_GOT16_LO_DS: + case R_PPC64_GOT16_HA: +- if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC) ++ if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC ++ || !htab->do_toc_opt) + break; + from = TOCstart + htab->sec_info[input_section->id].toc_off; + if (relocation + addend - from + 0x80008000ULL < 0x100000000ULL +@@ -15986,34 +16102,38 @@ ppc64_elf_relocate_section (bfd *output_bfd, + break; + + case R_PPC64_GOT_PCREL34: +- if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC) ++ if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC ++ || !htab->do_toc_opt) + break; + from = (rel->r_offset + + input_section->output_section->vma + + input_section->output_offset); +- if (relocation - from + (1ULL << 33) < 1ULL << 34 +- && SYMBOL_REFERENCES_LOCAL (info, &h->elf)) +- { +- offset = rel->r_offset; +- pinsn = bfd_get_32 (input_bfd, contents + offset); +- pinsn <<= 32; +- pinsn |= bfd_get_32 (input_bfd, contents + offset + 4); +- if ((pinsn & ((-1ULL << 50) | (63ULL << 26))) +- == ((1ULL << 58) | (1ULL << 52) | (57ULL << 26) /* pld */)) +- { +- /* Replace with paddi. */ +- pinsn += (2ULL << 56) + (14ULL << 26) - (57ULL << 26); +- r_type = R_PPC64_PCREL34; +- rel->r_info = ELF64_R_INFO (r_symndx, r_type); +- bfd_put_32 (input_bfd, pinsn >> 32, contents + offset); +- bfd_put_32 (input_bfd, pinsn, contents + offset + 4); +- goto pcrelopt; +- } +- } +- break; ++ if (!(relocation - from + (1ULL << 33) < 1ULL << 34 ++ && SYMBOL_REFERENCES_LOCAL (info, &h->elf))) ++ break; ++ ++ offset = rel->r_offset; ++ pinsn = bfd_get_32 (input_bfd, contents + offset); ++ pinsn <<= 32; ++ pinsn |= bfd_get_32 (input_bfd, contents + offset + 4); ++ if ((pinsn & ((-1ULL << 50) | (63ULL << 26))) ++ != ((1ULL << 58) | (1ULL << 52) | (57ULL << 26) /* pld */)) ++ break; ++ ++ /* Replace with paddi. */ ++ pinsn += (2ULL << 56) + (14ULL << 26) - (57ULL << 26); ++ r_type = R_PPC64_PCREL34; ++ rel->r_info = ELF64_R_INFO (r_symndx, r_type); ++ bfd_put_32 (input_bfd, pinsn >> 32, contents + offset); ++ bfd_put_32 (input_bfd, pinsn, contents + offset + 4); ++ /* Fall through. */ + + case R_PPC64_PCREL34: +- if (SYMBOL_REFERENCES_LOCAL (info, &h->elf)) ++ if (!htab->params->no_pcrel_opt ++ && rel + 1 < relend ++ && rel[1].r_offset == rel->r_offset ++ && rel[1].r_info == ELF64_R_INFO (0, R_PPC64_PCREL_OPT) ++ && SYMBOL_REFERENCES_LOCAL (info, &h->elf)) + { + offset = rel->r_offset; + pinsn = bfd_get_32 (input_bfd, contents + offset); +@@ -16023,43 +16143,37 @@ ppc64_elf_relocate_section (bfd *output_bfd, + == ((1ULL << 58) | (2ULL << 56) | (1ULL << 52) + | (14ULL << 26) /* paddi */)) + { +- pcrelopt: +- if (rel + 1 < relend +- && rel[1].r_offset == offset +- && rel[1].r_info == ELF64_R_INFO (0, R_PPC64_PCREL_OPT)) ++ bfd_vma off2 = rel[1].r_addend; ++ if (off2 == 0) ++ /* zero means next insn. */ ++ off2 = 8; ++ off2 += offset; ++ if (off2 + 4 <= input_section->size) + { +- bfd_vma off2 = rel[1].r_addend; +- if (off2 == 0) +- /* zero means next insn. */ +- off2 = 8; +- off2 += offset; +- if (off2 + 4 <= input_section->size) ++ uint64_t pinsn2; ++ bfd_signed_vma addend_off; ++ pinsn2 = bfd_get_32 (input_bfd, contents + off2); ++ pinsn2 <<= 32; ++ if ((pinsn2 & (63ULL << 58)) == 1ULL << 58) + { +- uint64_t pinsn2; +- bfd_signed_vma addend_off; +- pinsn2 = bfd_get_32 (input_bfd, contents + off2); +- pinsn2 <<= 32; ++ if (off2 + 8 > input_section->size) ++ break; ++ pinsn2 |= bfd_get_32 (input_bfd, ++ contents + off2 + 4); ++ } ++ if (xlate_pcrel_opt (&pinsn, &pinsn2, &addend_off)) ++ { ++ addend += addend_off; ++ rel->r_addend = addend; ++ bfd_put_32 (input_bfd, pinsn >> 32, ++ contents + offset); ++ bfd_put_32 (input_bfd, pinsn, ++ contents + offset + 4); ++ bfd_put_32 (input_bfd, pinsn2 >> 32, ++ contents + off2); + if ((pinsn2 & (63ULL << 58)) == 1ULL << 58) +- { +- if (off2 + 8 > input_section->size) +- break; +- pinsn2 |= bfd_get_32 (input_bfd, +- contents + off2 + 4); +- } +- if (xlate_pcrel_opt (&pinsn, &pinsn2, &addend_off)) +- { +- addend += addend_off; +- rel->r_addend = addend; +- bfd_put_32 (input_bfd, pinsn >> 32, +- contents + offset); +- bfd_put_32 (input_bfd, pinsn, +- contents + offset + 4); +- bfd_put_32 (input_bfd, pinsn2 >> 32, +- contents + off2); +- if ((pinsn2 & (63ULL << 58)) == 1ULL << 58) +- bfd_put_32 (input_bfd, pinsn2, +- contents + off2 + 4); +- } ++ bfd_put_32 (input_bfd, pinsn2, ++ contents + off2 + 4); + } + } + } +diff --git a/bfd/elf64-ppc.h b/bfd/elf64-ppc.h +index 547971f8bec..0492fd7fad5 100644 +--- a/bfd/elf64-ppc.h ++++ b/bfd/elf64-ppc.h +@@ -27,6 +27,7 @@ struct ppc64_elf_params + /* Linker call-backs. */ + asection * (*add_stub_section) (const char *, asection *); + void (*layout_sections_again) (void); ++ void (*edit) (void); + + /* Maximum size of a group of input sections that can be handled by + one stub section. A value of +/-1 indicates the bfd back-end +@@ -57,6 +58,9 @@ struct ppc64_elf_params + /* Whether to use power10 instructions in linkage stubs. */ + int power10_stubs; + ++ /* Whether R_PPC64_PCREL_OPT should be ignored. */ ++ int no_pcrel_opt; ++ + /* Whether to canonicalize .opd so that there are no overlapping + .opd entries. */ + int non_overlapping_opd; +@@ -77,7 +81,7 @@ bfd_boolean ppc64_elf_edit_opd + (struct bfd_link_info *); + bfd_boolean ppc64_elf_inline_plt + (struct bfd_link_info *); +-asection *ppc64_elf_tls_setup ++bfd_boolean ppc64_elf_tls_setup + (struct bfd_link_info *); + bfd_boolean ppc64_elf_tls_optimize + (struct bfd_link_info *); +diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c +index 311fb28a905..7eb1afe6144 100644 +--- a/bfd/elf64-x86-64.c ++++ b/bfd/elf64-x86-64.c +@@ -1731,7 +1731,7 @@ elf_x86_64_convert_load_reloc (bfd *abfd, + + if (opcode == 0x8b) + { +- if (abs_symbol && local_ref) ++ if (abs_symbol && local_ref && relocx) + to_reloc_pc32 = FALSE; + + if (to_reloc_pc32) +diff --git a/bfd/elflink.c b/bfd/elflink.c +index 998b72f2281..222a4573b00 100644 +--- a/bfd/elflink.c ++++ b/bfd/elflink.c +@@ -9636,9 +9636,29 @@ elf_link_output_symstrtab (struct elf_final_link_info *flinfo, + { + /* Call _bfd_elf_strtab_offset after _bfd_elf_strtab_finalize + to get the final offset for st_name. */ ++ char *versioned_name = (char *) name; ++ if (h != NULL && h->versioned == versioned && h->def_dynamic) ++ { ++ /* Keep only one '@' for versioned symbols defined in shared ++ objects. */ ++ char *version = strrchr (name, ELF_VER_CHR); ++ char *base_end = strchr (name, ELF_VER_CHR); ++ if (version != base_end) ++ { ++ size_t base_len; ++ size_t len = strlen (name); ++ versioned_name = bfd_alloc (flinfo->output_bfd, len); ++ if (versioned_name == NULL) ++ return 0; ++ base_len = base_end - name; ++ memcpy (versioned_name, name, base_len); ++ memcpy (versioned_name + base_len, version, ++ len - base_len); ++ } ++ } + elfsym->st_name + = (unsigned long) _bfd_elf_strtab_add (flinfo->symstrtab, +- name, FALSE); ++ versioned_name, FALSE); + if (elfsym->st_name == (unsigned long) -1) + return 0; + } +diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c +index e58ddc19cf6..143aae4b5cc 100644 +--- a/bfd/elfxx-x86.c ++++ b/bfd/elfxx-x86.c +@@ -2417,15 +2417,19 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info, + abort (); + if (aprop != NULL && bprop != NULL) + { +- features = 0; +- if (htab->params->ibt) +- features = GNU_PROPERTY_X86_FEATURE_1_IBT; +- if (htab->params->shstk) +- features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK; + number = aprop->u.number; +- /* Add GNU_PROPERTY_X86_FEATURE_1_IBT and +- GNU_PROPERTY_X86_FEATURE_1_SHSTK. */ +- aprop->u.number = (number & bprop->u.number) | features; ++ aprop->u.number = number & bprop->u.number; ++ if (pr_type == GNU_PROPERTY_X86_FEATURE_1_AND) ++ { ++ features = 0; ++ if (htab->params->ibt) ++ features = GNU_PROPERTY_X86_FEATURE_1_IBT; ++ if (htab->params->shstk) ++ features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK; ++ /* Add GNU_PROPERTY_X86_FEATURE_1_IBT and ++ GNU_PROPERTY_X86_FEATURE_1_SHSTK. */ ++ aprop->u.number |= features; ++ } + updated = number != (unsigned int) aprop->u.number; + /* Remove the property if all feature bits are cleared. */ + if (aprop->u.number == 0) +@@ -2437,10 +2441,13 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info, + have them. Set IBT and SHSTK properties for -z ibt and -z + shstk if needed. */ + features = 0; +- if (htab->params->ibt) +- features = GNU_PROPERTY_X86_FEATURE_1_IBT; +- if (htab->params->shstk) +- features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK; ++ if (pr_type == GNU_PROPERTY_X86_FEATURE_1_AND) ++ { ++ if (htab->params->ibt) ++ features = GNU_PROPERTY_X86_FEATURE_1_IBT; ++ if (htab->params->shstk) ++ features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK; ++ } + if (features) + { + if (aprop != NULL) +diff --git a/bfd/version.h b/bfd/version.h +index 617fdb7a5de..7f24847f774 100644 +--- a/bfd/version.h ++++ b/bfd/version.h +@@ -16,7 +16,7 @@ + + In releases, the date is not included in either version strings or + sonames. */ +-#define BFD_VERSION_DATE 20200919 ++#define BFD_VERSION_DATE 20210106 + #define BFD_VERSION @bfd_version@ + #define BFD_VERSION_STRING @bfd_version_package@ @bfd_version_string@ + #define REPORT_BUGS_TO @report_bugs_to@ +diff --git a/binutils/ChangeLog b/binutils/ChangeLog +index 76ba6d9840a..4b6cd9f755e 100644 +--- a/binutils/ChangeLog ++++ b/binutils/ChangeLog +@@ -1,3 +1,142 @@ ++2021-01-01 Alan Modra ++ ++ Apply from master ++ 2020-12-31 Alan Modra ++ PR 27128 ++ * nm.c (print_symname): Append version string to symbol name ++ before printing the lot under control of "form". Append version ++ to demangled names too. ++ ++ 2020-08-22 H.J. Lu ++ PR ld/26382 ++ * nm.c (print_symname): Display only one '@' for undefined ++ versioned symbols. ++ * doc/binutils.texi: Update nm version information. ++ ++ 2020-08-10 H.J. Lu ++ PR binutils/26302 ++ * nm.c (with_symbol_versions): Removed. ++ (long_option_values): Add OPTION_WITH_SYMBOL_VERSIONS. ++ (long_options): Update --with-symbol-versions entry. ++ (print_symbol): Remove the with_symbol_versions check. ++ (main): Add OPTION_WITH_SYMBOL_VERSIONS for backward ++ compatibility. ++ * doc/binutils.texi: Remove --with-symbol-versions. ++ ++2020-11-22 Alan Modra ++ ++ 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/doc/binutils.texi b/binutils/doc/binutils.texi +index f19862655bd..cf8d0ea7f1c 100644 +--- a/binutils/doc/binutils.texi ++++ b/binutils/doc/binutils.texi +@@ -796,7 +796,7 @@ nm [@option{-A}|@option{-o}|@option{--print-file-name}] [@option{-a}|@option{--d + [@option{--plugin} @var{name}] + [@option{--no-recurse-limit}|@option{--recurse-limit}]] + [@option{--size-sort}] [@option{--special-syms}] +- [@option{--synthetic}] [@option{--with-symbol-versions}] [@option{--target=}@var{bfdname}] ++ [@option{--synthetic}] [@option{--target=}@var{bfdname}] + [@var{objfile}@dots{}] + @c man end + @end smallexample +@@ -924,7 +924,13 @@ The symbol type is unknown, or object file format specific. + @end table + + @item +-The symbol name. ++The symbol name. If a symbol has version information associated with it, ++then the version information is displayed as well. If the versioned ++symbol is undefined or hidden from linker, the version string is displayed ++as a suffix to the symbol name, preceded by an @@ character. For example ++@samp{foo@@VER_1}. If the version is the default version to be used when ++resolving unversioned references to the symbol, then it is displayed as a ++suffix preceded by two @@ characters. For example @samp{foo@@@@VER_2}. + @end itemize + + @c man end +@@ -1130,14 +1136,6 @@ Include synthetic symbols in the output. These are special symbols + created by the linker for various purposes. They are not shown by + default since they are not part of the binary's original source code. + +-@item --with-symbol-versions +-Enables the display of symbol version information if any exists. The +-version string is displayed as a suffix to the symbol name, preceeded by +-an @@ character. For example @samp{foo@@VER_1}. If the version is +-the default version to be used when resolving unversioned references +-to the symbol then it is displayed as a suffix preceeded by two @@ +-characters. For example @samp{foo@@@@VER_2}. +- + @item --target=@var{bfdname} + @cindex object code format + Specify an object code format other than your system's default format. +diff --git a/binutils/dwarf.c b/binutils/dwarf.c +index cc13fe067f0..91b61e3fdfe 100644 +--- a/binutils/dwarf.c ++++ b/binutils/dwarf.c +@@ -849,101 +849,208 @@ fetch_indexed_value (dwarf_vma offset, dwarf_vma bytes) + /* FIXME: There are better and more efficient ways to handle + these structures. For now though, I just want something that + is simple to implement. */ ++/* Records a single attribute in an abbrev. */ + typedef struct abbrev_attr + { +- unsigned long attribute; +- unsigned long form; +- bfd_signed_vma implicit_const; +- struct abbrev_attr *next; ++ unsigned long attribute; ++ unsigned long form; ++ bfd_signed_vma implicit_const; ++ struct abbrev_attr * next; + } + abbrev_attr; + ++/* Records a single abbrev. */ + typedef struct abbrev_entry + { +- unsigned long entry; +- unsigned long tag; +- int children; +- struct abbrev_attr *first_attr; +- struct abbrev_attr *last_attr; +- struct abbrev_entry *next; ++ unsigned long number; ++ unsigned long tag; ++ int children; ++ struct abbrev_attr * first_attr; ++ struct abbrev_attr * last_attr; ++ struct abbrev_entry * next; + } + abbrev_entry; + +-static abbrev_entry *first_abbrev = NULL; +-static abbrev_entry *last_abbrev = NULL; ++/* Records a set of abbreviations. */ ++typedef struct abbrev_list ++{ ++ abbrev_entry * first_abbrev; ++ abbrev_entry * last_abbrev; ++ dwarf_vma abbrev_base; ++ dwarf_vma abbrev_offset; ++ struct abbrev_list * next; ++ unsigned char * start_of_next_abbrevs; ++} ++abbrev_list; ++ ++/* Records all the abbrevs found so far. */ ++static struct abbrev_list * abbrev_lists = NULL; ++ ++typedef struct abbrev_map ++{ ++ dwarf_vma start; ++ dwarf_vma end; ++ abbrev_list * list; ++} abbrev_map; ++ ++/* Maps between CU offsets and abbrev sets. */ ++static abbrev_map * cu_abbrev_map = NULL; ++static unsigned long num_abbrev_map_entries = 0; ++static unsigned long next_free_abbrev_map_entry = 0; ++ ++#define INITIAL_NUM_ABBREV_MAP_ENTRIES 8 ++#define ABBREV_MAP_ENTRIES_INCREMENT 8 ++ ++static void ++record_abbrev_list_for_cu (dwarf_vma start, dwarf_vma end, abbrev_list * list) ++{ ++ if (cu_abbrev_map == NULL) ++ { ++ num_abbrev_map_entries = INITIAL_NUM_ABBREV_MAP_ENTRIES; ++ cu_abbrev_map = xmalloc (num_abbrev_map_entries * sizeof (* cu_abbrev_map)); ++ } ++ else if (next_free_abbrev_map_entry == num_abbrev_map_entries) ++ { ++ num_abbrev_map_entries += ABBREV_MAP_ENTRIES_INCREMENT; ++ cu_abbrev_map = xrealloc (cu_abbrev_map, num_abbrev_map_entries * sizeof (* cu_abbrev_map)); ++ } ++ ++ cu_abbrev_map[next_free_abbrev_map_entry].start = start; ++ cu_abbrev_map[next_free_abbrev_map_entry].end = end; ++ cu_abbrev_map[next_free_abbrev_map_entry].list = list; ++ next_free_abbrev_map_entry ++; ++} + + static void +-free_abbrevs (void) ++free_all_abbrevs (void) + { +- abbrev_entry *abbrv; ++ abbrev_list * list; + +- for (abbrv = first_abbrev; abbrv;) ++ for (list = abbrev_lists; list != NULL;) + { +- abbrev_entry *next_abbrev = abbrv->next; +- abbrev_attr *attr; ++ abbrev_list * next = list->next; ++ abbrev_entry * abbrv; + +- for (attr = abbrv->first_attr; attr;) ++ for (abbrv = list->first_abbrev; abbrv != NULL;) + { +- abbrev_attr *next_attr = attr->next; ++ abbrev_entry * next_abbrev = abbrv->next; ++ abbrev_attr * attr; ++ ++ for (attr = abbrv->first_attr; attr;) ++ { ++ abbrev_attr *next_attr = attr->next; + +- free (attr); +- attr = next_attr; ++ free (attr); ++ attr = next_attr; ++ } ++ ++ free (abbrv); ++ abbrv = next_abbrev; + } + +- free (abbrv); +- abbrv = next_abbrev; ++ free (list); ++ list = next; + } + +- last_abbrev = first_abbrev = NULL; ++ abbrev_lists = NULL; ++} ++ ++static abbrev_list * ++new_abbrev_list (dwarf_vma abbrev_base, dwarf_vma abbrev_offset) ++{ ++ abbrev_list * list = (abbrev_list *) xcalloc (sizeof * list, 1); ++ ++ list->abbrev_base = abbrev_base; ++ list->abbrev_offset = abbrev_offset; ++ ++ list->next = abbrev_lists; ++ abbrev_lists = list; ++ ++ return list; ++} ++ ++static abbrev_list * ++find_abbrev_list_by_abbrev_offset (dwarf_vma abbrev_base, ++ dwarf_vma abbrev_offset) ++{ ++ abbrev_list * list; ++ ++ for (list = abbrev_lists; list != NULL; list = list->next) ++ if (list->abbrev_base == abbrev_base ++ && list->abbrev_offset == abbrev_offset) ++ return list; ++ ++ return NULL; ++} ++ ++/* Find the abbreviation map for the CU that includes OFFSET. ++ OFFSET is an absolute offset from the start of the .debug_info section. */ ++/* FIXME: This function is going to slow down readelf & objdump. ++ Consider using a better algorithm to mitigate this effect. */ ++ ++static abbrev_map * ++find_abbrev_map_by_offset (dwarf_vma offset) ++{ ++ unsigned long i; ++ ++ for (i = 0; i < next_free_abbrev_map_entry; i++) ++ if (cu_abbrev_map[i].start <= offset ++ && cu_abbrev_map[i].end > offset) ++ return cu_abbrev_map + i; ++ ++ return NULL; + } + + static void +-add_abbrev (unsigned long number, unsigned long tag, int children) ++add_abbrev (unsigned long number, ++ unsigned long tag, ++ int children, ++ abbrev_list * list) + { +- abbrev_entry *entry; ++ abbrev_entry * entry; + +- entry = (abbrev_entry *) malloc (sizeof (*entry)); +- if (entry == NULL) +- /* ugg */ +- return; ++ entry = (abbrev_entry *) xmalloc (sizeof (*entry)); + +- entry->entry = number; ++ entry->number = number; + entry->tag = tag; + entry->children = children; + entry->first_attr = NULL; + entry->last_attr = NULL; + entry->next = NULL; + +- if (first_abbrev == NULL) +- first_abbrev = entry; ++ assert (list != NULL); ++ ++ if (list->first_abbrev == NULL) ++ list->first_abbrev = entry; + else +- last_abbrev->next = entry; ++ list->last_abbrev->next = entry; + +- last_abbrev = entry; ++ list->last_abbrev = entry; + } + + static void +-add_abbrev_attr (unsigned long attribute, unsigned long form, +- bfd_signed_vma implicit_const) ++add_abbrev_attr (unsigned long attribute, ++ unsigned long form, ++ bfd_signed_vma implicit_const, ++ abbrev_list * list) + { + abbrev_attr *attr; + +- attr = (abbrev_attr *) malloc (sizeof (*attr)); +- if (attr == NULL) +- /* ugg */ +- return; ++ attr = (abbrev_attr *) xmalloc (sizeof (*attr)); + + attr->attribute = attribute; + attr->form = form; + attr->implicit_const = implicit_const; + attr->next = NULL; + +- if (last_abbrev->first_attr == NULL) +- last_abbrev->first_attr = attr; ++ assert (list != NULL && list->last_abbrev != NULL); ++ ++ if (list->last_abbrev->first_attr == NULL) ++ list->last_abbrev->first_attr = attr; + else +- last_abbrev->last_attr->next = attr; ++ list->last_abbrev->last_attr->next = attr; + +- last_abbrev->last_attr = attr; ++ list->last_abbrev->last_attr = attr; + } + + /* Processes the (partial) contents of a .debug_abbrev section. +@@ -952,11 +1059,10 @@ add_abbrev_attr (unsigned long attribute, unsigned long form, + an abbreviation set was found. */ + + static unsigned char * +-process_abbrev_section (unsigned char *start, unsigned char *end) ++process_abbrev_set (unsigned char * start, ++ const unsigned char * end, ++ abbrev_list * list) + { +- if (first_abbrev != NULL) +- return NULL; +- + while (start < end) + { + unsigned long entry; +@@ -966,7 +1072,7 @@ process_abbrev_section (unsigned char *start, unsigned char *end) + + READ_ULEB (entry, start, end); + +- /* A single zero is supposed to end the section according ++ /* A single zero is supposed to end the set according + to the standard. If there's more, then signal that to + the caller. */ + if (start == end) +@@ -980,7 +1086,7 @@ process_abbrev_section (unsigned char *start, unsigned char *end) + + children = *start++; + +- add_abbrev (entry, tag, children); ++ add_abbrev (entry, tag, children, list); + + do + { +@@ -1003,7 +1109,7 @@ process_abbrev_section (unsigned char *start, unsigned char *end) + break; + } + +- add_abbrev_attr (attribute, form, implicit_const); ++ add_abbrev_attr (attribute, form, implicit_const, list); + } + while (attribute != 0); + } +@@ -1868,7 +1974,7 @@ skip_attr_bytes (unsigned long form, + case DW_FORM_ref_addr: + if (dwarf_version == 2) + SAFE_BYTE_GET_AND_INC (uvalue, data, pointer_size, end); +- else if (dwarf_version == 3 || dwarf_version == 4) ++ else if (dwarf_version > 2) + SAFE_BYTE_GET_AND_INC (uvalue, data, offset_size, end); + else + return NULL; +@@ -1919,7 +2025,23 @@ skip_attr_bytes (unsigned long form, + break; + + case DW_FORM_ref8: ++ { ++ dwarf_vma high_bits; ++ ++ SAFE_BYTE_GET64 (data, &high_bits, &uvalue, end); ++ data += 8; ++ if (sizeof (uvalue) > 4) ++ uvalue += high_bits << 32; ++ else if (high_bits != 0) ++ { ++ /* FIXME: What to do ? */ ++ return NULL; ++ } ++ break; ++ } ++ + case DW_FORM_data8: ++ case DW_FORM_ref_sig8: + data += 8; + break; + +@@ -1934,6 +2056,7 @@ skip_attr_bytes (unsigned long form, + case DW_FORM_block: + case DW_FORM_exprloc: + READ_ULEB (uvalue, data, end); ++ data += uvalue; + break; + + case DW_FORM_block1: +@@ -1951,12 +2074,12 @@ skip_attr_bytes (unsigned long form, + data += 4 + uvalue; + break; + +- case DW_FORM_ref_sig8: +- data += 8; +- break; +- + case DW_FORM_indirect: +- /* FIXME: Handle this form. */ ++ READ_ULEB (form, data, end); ++ if (form == DW_FORM_implicit_const) ++ SKIP_ULEB (data, end); ++ return skip_attr_bytes (form, data, end, pointer_size, offset_size, dwarf_version, value_return); ++ + default: + return NULL; + } +@@ -1967,40 +2090,137 @@ skip_attr_bytes (unsigned long form, + return data; + } + +-/* Return IS_SIGNED set to TRUE if the type at +- DATA can be determined to be a signed type. */ ++/* Given form FORM with value UVALUE, locate and return the abbreviation ++ associated with it. */ ++ ++static abbrev_entry * ++get_type_abbrev_from_form (unsigned long form, ++ unsigned long uvalue, ++ dwarf_vma cu_offset, ++ const struct dwarf_section * section, ++ unsigned long * abbrev_num_return, ++ unsigned char ** data_return, ++ unsigned long * cu_offset_return) ++{ ++ unsigned long abbrev_number; ++ abbrev_map * map; ++ abbrev_entry * entry; ++ unsigned char * data; ++ ++ if (abbrev_num_return != NULL) ++ * abbrev_num_return = 0; ++ if (data_return != NULL) ++ * data_return = NULL; ++ ++ switch (form) ++ { ++ case DW_FORM_GNU_ref_alt: ++ /* FIXME: We are unable to handle this form at the moment. */ ++ return NULL; ++ ++ case DW_FORM_ref_addr: ++ if (uvalue >= section->size) ++ { ++ warn (_("Unable to resolve ref_addr form: uvalue %lx > section size %lx (%s)\n"), ++ uvalue, (long) section->size, section->name); ++ return NULL; ++ } ++ break; ++ ++ case DW_FORM_ref1: ++ case DW_FORM_ref2: ++ case DW_FORM_ref4: ++ case DW_FORM_ref8: ++ case DW_FORM_ref_udata: ++ if (uvalue + cu_offset > section->size) ++ { ++ warn (_("Unable to resolve ref form: uvalue %lx + cu_offset %lx > section size %lx\n"), ++ uvalue, (long) cu_offset, (long) section->size); ++ return NULL; ++ } ++ uvalue += cu_offset; ++ break; ++ ++ /* FIXME: Are there other DW_FORMs that can be used by types ? */ ++ ++ default: ++ warn (_("Unexpected form %lx encountered whilst finding abbreviation for type\n"), form); ++ return NULL; ++ } ++ ++ data = (unsigned char *) section->start + uvalue; ++ map = find_abbrev_map_by_offset (uvalue); ++ ++ if (map == NULL) ++ { ++ warn (_("Unable to find abbreviations for CU offset %#lx\n"), uvalue); ++ return NULL; ++ } ++ if (map->list == NULL) ++ { ++ warn (_("Empty abbreviation list encountered for CU offset %lx\n"), uvalue); ++ return NULL; ++ } ++ ++ if (cu_offset_return != NULL) ++ { ++ if (form == DW_FORM_ref_addr) ++ * cu_offset_return = map->start; ++ else ++ * cu_offset_return = cu_offset; ++ } ++ ++ READ_ULEB (abbrev_number, data, section->start + section->size); ++ ++ for (entry = map->list->first_abbrev; entry != NULL; entry = entry->next) ++ if (entry->number == abbrev_number) ++ break; ++ ++ if (abbrev_num_return != NULL) ++ * abbrev_num_return = abbrev_number; ++ ++ if (data_return != NULL) ++ * data_return = data; ++ ++ if (entry == NULL) ++ warn (_("Unable to find entry for abbreviation %lu\n"), abbrev_number); ++ ++ return entry; ++} ++ ++/* Return IS_SIGNED set to TRUE if the type using abbreviation ENTRY ++ can be determined to be a signed type. The data for ENTRY can be ++ found starting at DATA. */ + + static void +-get_type_signedness (unsigned char * start, ++get_type_signedness (abbrev_entry * entry, ++ const struct dwarf_section * section, + unsigned char * data, + unsigned const char * end, ++ dwarf_vma cu_offset, + dwarf_vma pointer_size, + dwarf_vma offset_size, + int dwarf_version, + bfd_boolean * is_signed, +- bfd_boolean is_nested) ++ unsigned int nesting) + { +- unsigned long abbrev_number; +- abbrev_entry * entry; + abbrev_attr * attr; + + * is_signed = FALSE; + +- READ_ULEB (abbrev_number, data, end); +- +- for (entry = first_abbrev; +- entry != NULL && entry->entry != abbrev_number; +- entry = entry->next) +- continue; +- +- if (entry == NULL) +- /* FIXME: Issue a warning ? */ +- return; ++#define MAX_NESTING 20 ++ if (nesting > MAX_NESTING) ++ { ++ /* FIXME: Warn - or is this expected ? ++ NB/ We need to avoid infinite recursion. */ ++ return; ++ } + + for (attr = entry->first_attr; + attr != NULL && attr->attribute; + attr = attr->next) + { ++ unsigned char * orig_data = data; + dwarf_vma uvalue = 0; + + data = skip_attr_bytes (attr->form, data, end, pointer_size, +@@ -2010,25 +2230,38 @@ get_type_signedness (unsigned char * start, + + switch (attr->attribute) + { +-#if 0 /* FIXME: It would be nice to print the name of the type, +- but this would mean updating a lot of binutils tests. */ ++ case DW_AT_linkage_name: + case DW_AT_name: +- if (attr->form == DW_FORM_strp) +- printf ("%s", fetch_indirect_string (uvalue)); ++ if (do_wide) ++ { ++ if (attr->form == DW_FORM_strp) ++ printf (", %s", fetch_indirect_string (uvalue)); ++ else if (attr->form == DW_FORM_string) ++ printf (", %s", orig_data); ++ } + break; +-#endif ++ + case DW_AT_type: + /* Recurse. */ +- if (is_nested) +- { +- /* FIXME: Warn - or is this expected ? +- NB/ We need to avoid infinite recursion. */ +- return; +- } +- if (uvalue >= (size_t) (end - start)) +- return; +- get_type_signedness (start, start + uvalue, end, pointer_size, +- offset_size, dwarf_version, is_signed, TRUE); ++ { ++ abbrev_entry * type_abbrev; ++ unsigned char * type_data; ++ unsigned long type_cu_offset; ++ ++ type_abbrev = get_type_abbrev_from_form (attr->form, ++ uvalue, ++ cu_offset, ++ section, ++ NULL /* abbrev num return */, ++ & type_data, ++ & type_cu_offset); ++ if (type_abbrev == NULL) ++ break; ++ ++ get_type_signedness (type_abbrev, section, type_data, end, type_cu_offset, ++ pointer_size, offset_size, dwarf_version, ++ is_signed, nesting + 1); ++ } + break; + + case DW_AT_encoding: +@@ -2202,11 +2435,10 @@ read_and_display_attr_value (unsigned long attribute, + case DW_FORM_ref_addr: + if (dwarf_version == 2) + SAFE_BYTE_GET_AND_INC (uvalue, data, pointer_size, end); +- else if (dwarf_version == 3 || dwarf_version == 4) ++ else if (dwarf_version > 2) + SAFE_BYTE_GET_AND_INC (uvalue, data, offset_size, end); + else +- error (_("Internal error: DWARF version is not 2, 3 or 4.\n")); +- ++ error (_("Internal error: DW_FORM_ref_addr is not supported in DWARF version 1.\n")); + break; + + case DW_FORM_addr: +@@ -2271,12 +2503,12 @@ read_and_display_attr_value (unsigned long attribute, + { + case DW_FORM_ref_addr: + if (!do_loc) +- printf ("%c<0x%s>", delimiter, dwarf_vmatoa ("x",uvalue)); ++ printf ("%c<0x%s>", delimiter, dwarf_vmatoa ("x", uvalue)); + break; + + case DW_FORM_GNU_ref_alt: + if (!do_loc) +- printf ("%c", 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/nm.c b/binutils/nm.c +index 1b5122d56ab..a5144faba60 100644 +--- a/binutils/nm.c ++++ b/binutils/nm.c +@@ -161,7 +161,6 @@ static int show_version = 0; /* Show the version number. */ + static int show_synthetic = 0; /* Display synthesized symbols too. */ + static int line_numbers = 0; /* Print line numbers for symbols. */ + static int allow_special_symbols = 0; /* Allow special symbols. */ +-static int with_symbol_versions = 0; /* Include symbol version information in the output. */ + + static int demangle_flags = DMGL_ANSI | DMGL_PARAMS; + +@@ -192,7 +191,8 @@ enum long_option_values + OPTION_PLUGIN, + OPTION_SIZE_SORT, + OPTION_RECURSE_LIMIT, +- OPTION_NO_RECURSE_LIMIT ++ OPTION_NO_RECURSE_LIMIT, ++ OPTION_WITH_SYMBOL_VERSIONS + }; + + static struct option long_options[] = +@@ -226,7 +226,8 @@ static struct option long_options[] = + {"defined-only", no_argument, &defined_only, 1}, + {"undefined-only", no_argument, &undefined_only, 1}, + {"version", no_argument, &show_version, 1}, +- {"with-symbol-versions", no_argument, &with_symbol_versions, 1}, ++ {"with-symbol-versions", no_argument, NULL, ++ OPTION_WITH_SYMBOL_VERSIONS}, + {0, no_argument, 0, 0} + }; + +@@ -396,21 +397,17 @@ static void + print_symname (const char *form, struct extended_symbol_info *info, + const char *name, bfd *abfd) + { ++ char *alloc = NULL; ++ + if (name == NULL) + name = info->sinfo->name; + if (do_demangle && *name) + { +- char *res = bfd_demangle (abfd, name, demangle_flags); +- +- if (res != NULL) +- { +- printf (form, res); +- free (res); +- return; +- } ++ alloc = bfd_demangle (abfd, name, demangle_flags); ++ if (alloc != NULL) ++ name = alloc; + } + +- printf (form, name); + if (info != NULL && info->elfinfo) + { + const char *version_string; +@@ -420,8 +417,17 @@ print_symname (const char *form, struct extended_symbol_info *info, + = bfd_get_symbol_version_string (abfd, &info->elfinfo->symbol, + FALSE, &hidden); + if (version_string && version_string[0]) +- printf ("%s%s", hidden ? "@" : "@@", version_string); ++ { ++ const char *at = "@@"; ++ if (hidden || bfd_is_und_section (info->elfinfo->symbol.section)) ++ at = "@"; ++ alloc = reconcat (alloc, name, at, version_string, NULL); ++ if (alloc != NULL) ++ name = alloc; ++ } + } ++ printf (form, name); ++ free (alloc); + } + + static void +@@ -901,22 +907,6 @@ print_symbol (bfd * abfd, + + format->print_symbol_info (&info, abfd); + +- if (with_symbol_versions) +- { +- const char * version_string = NULL; +- bfd_boolean hidden = FALSE; +- +- if ((sym->flags & (BSF_SECTION_SYM | BSF_SYNTHETIC)) == 0) +- version_string = bfd_get_symbol_version_string (abfd, sym, +- TRUE, &hidden); +- +- if (bfd_is_und_section (bfd_asymbol_section (sym))) +- hidden = TRUE; +- +- if (version_string && *version_string != '\0') +- printf (hidden ? "@%s" : "@@%s", version_string); +- } +- + if (line_numbers) + { + static asymbol **syms; +@@ -1761,6 +1751,9 @@ main (int argc, char **argv) + case OPTION_NO_RECURSE_LIMIT: + demangle_flags |= DMGL_NO_RECURSE_LIMIT; + break; ++ case OPTION_WITH_SYMBOL_VERSIONS: ++ /* Ignored for backward compatibility. */ ++ break; + case 'D': + dynamic = 1; + break; +diff --git a/binutils/readelf.c b/binutils/readelf.c +index 6057515a89b..41547a2594b 100644 +--- a/binutils/readelf.c ++++ b/binutils/readelf.c +@@ -12091,9 +12091,9 @@ print_dynamic_symbol (Filedata *filedata, unsigned long si, + int len_avail = 21; + if (! do_wide && version_string != NULL) + { +- char buffer[256]; ++ char buffer[16]; + +- len_avail -= sprintf (buffer, "@%s", version_string); ++ len_avail -= 1 + strlen (version_string); + + if (sym_info == symbol_undefined) + len_avail -= sprintf (buffer," (%d)", vna_other); +diff --git a/binutils/testsuite/binutils-all/dw5.W b/binutils/testsuite/binutils-all/dw5.W +index 2eccb03c5a6..cb949ad49cd 100644 +--- a/binutils/testsuite/binutils-all/dw5.W ++++ b/binutils/testsuite/binutils-all/dw5.W +@@ -3,6 +3,7 @@ Contents of the .debug_info section: + Compilation Unit @ offset 0x0: + Length: 0x160 \(32-bit\) + Version: 5 ++ Unit Type: DW_UT_compile \(1\) + Abbrev Offset: 0x0 + Pointer Size: 8 + <0>: Abbrev Number: 6 \(DW_TAG_compile_unit\) +diff --git a/binutils/testsuite/binutils-all/dwarf-attributes.W b/binutils/testsuite/binutils-all/dwarf-attributes.W +index 3a4e7409889..4e8386ae880 100644 +--- a/binutils/testsuite/binutils-all/dwarf-attributes.W ++++ b/binutils/testsuite/binutils-all/dwarf-attributes.W +@@ -3,6 +3,7 @@ Contents of the .debug_info section: + Compilation Unit @ offset 0x0: + Length: 0x40 \(32-bit\) + Version: 5 ++ Unit Type: DW_UT_compile \(1\) + Abbrev Offset: 0x0 + Pointer Size: 4 + <0>: Abbrev Number: 1 \(User TAG value: 0x5555\) +diff --git a/binutils/testsuite/binutils-all/x86-64/pr26808.dump b/binutils/testsuite/binutils-all/x86-64/pr26808.dump +new file mode 100644 +index 00000000000..f64f9d008f9 +--- /dev/null ++++ b/binutils/testsuite/binutils-all/x86-64/pr26808.dump +@@ -0,0 +1,1440 @@ ++Contents of the .debug_info.dwo section: ++ ++ Compilation Unit @ offset 0x0: ++ Length: 0x178 (32-bit) ++ Version: 4 ++ Abbrev Offset: 0x0 ++ Pointer Size: 8 ++ Section contributions: ++ .debug_abbrev.dwo: 0x0 0x154 ++ .debug_line.dwo: 0x0 0x40 ++ .debug_loc.dwo: 0x0 0x0 ++ .debug_str_offsets.dwo: 0x0 0x14 ++ <0>: 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 00000000000..75cce36f8bc +Binary files /dev/null and b/binutils/testsuite/binutils-all/x86-64/pr26808.dwp.bz2 differ +diff --git a/binutils/testsuite/binutils-all/x86-64/x86-64.exp b/binutils/testsuite/binutils-all/x86-64/x86-64.exp +index 7bd49ab619d..5f02ed35ade 100644 +--- a/binutils/testsuite/binutils-all/x86-64/x86-64.exp ++++ b/binutils/testsuite/binutils-all/x86-64/x86-64.exp +@@ -27,3 +27,34 @@ foreach t $test_list { + verbose [file rootname $t] + run_dump_test [file rootname $t] + } ++ ++set t $srcdir/$subdir/pr26808.dwp.bz2 ++# We need to strip the ".bz2", but can leave the dirname. ++set test $subdir/[file tail $t] ++set testname [file rootname $test] ++verbose $testname ++if {[catch "system \"bzip2 -dc $t > $tempfile\""] != 0} { ++ untested "bzip2 -dc ($testname)" ++} else { ++ send_log "$READELF -wi $tempfile > tmpdir/pr26808.out 2> /dev/null\n" ++ verbose "$READELF -wi $tempfile > tmpdir/pr26808.out 2> /dev/null" 1 ++ set got [catch "system \"$READELF -wi $tempfile > tmpdir/pr26808.out 2> /dev/null\""] ++ ++ if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]]} then { ++ fail $testname ++ } else { ++ send_log "cmp tmpdir/pr26808.out $srcdir/$subdir/pr26808.dump\n" ++ verbose "cmp tmpdir/pr26808.out $srcdir/$subdir/pr26808.dump" 1 ++ set status [remote_exec build cmp "tmpdir/pr26808.out $srcdir/$subdir/pr26808.dump"] ++ set exec_output [lindex $status 1] ++ set exec_output [prune_warnings $exec_output] ++ ++ if [string match "" $exec_output] then { ++ pass "readelf -wi ($testname)" ++ } else { ++ send_log "$exec_output\n" ++ verbose "$exec_output" 1 ++ fail "readelf -wi ($testname)" ++ } ++ } ++} +diff --git a/elfcpp/ChangeLog b/elfcpp/ChangeLog +index efb82c57703..fa1d20e5d9a 100644 +--- a/elfcpp/ChangeLog ++++ b/elfcpp/ChangeLog +@@ -1,3 +1,10 @@ ++2020-11-16 Mark Wielaard ++ ++ 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 1221f37f8a6..d5e06d4d7d3 100644 +--- a/elfcpp/dwarf.h ++++ b/elfcpp/dwarf.h +@@ -81,6 +81,11 @@ namespace elfcpp + #define DW_IDX_DUP(name, value) , name = value + #define DW_END_IDX }; + ++#define DW_FIRST_UT(name, value) enum dwarf_unit_type { \ ++ name = value ++#define DW_UT(name, value) , name = value ++#define DW_END_UT }; ++ + #include "dwarf2.def" + + #undef DW_FIRST_TAG +@@ -117,6 +122,10 @@ namespace elfcpp + #undef DW_IDX_DUP + #undef DW_END_IDX + ++#undef DW_FIRST_UT ++#undef DW_UT ++#undef DW_END_UT ++ + // Frame unwind information. + + enum DW_EH_PE +diff --git a/gas/ChangeLog b/gas/ChangeLog +index 26c703531d9..3ac2f7b72e2 100644 +--- a/gas/ChangeLog ++++ b/gas/ChangeLog +@@ -1,3 +1,171 @@ ++2020-11-15 Mark Wielaard ++ ++ 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 ecb15d23437..12eb13594c9 100644 +--- a/gas/config/tc-aarch64.c ++++ b/gas/config/tc-aarch64.c +@@ -247,12 +247,6 @@ set_fatal_syntax_error (const char *error) + present. */ + #define COND_ALWAYS 0x10 + +-typedef struct +-{ +- const char *template; +- unsigned long value; +-} asm_barrier_opt; +- + typedef struct + { + const char *template; +@@ -3994,7 +3988,7 @@ static int + parse_barrier (char **str) + { + char *p, *q; +- const asm_barrier_opt *o; ++ const struct aarch64_name_value_pair *o; + + p = q = *str; + while (ISALPHA (*q)) +@@ -8936,6 +8930,25 @@ static const struct aarch64_cpu_option_table aarch64_cpus[] = { + | AARCH64_FEATURE_DOTPROD + | AARCH64_FEATURE_PROFILE), + "Neoverse N1"}, ++ {"neoverse-n2", AARCH64_FEATURE (AARCH64_ARCH_V8_5, ++ AARCH64_FEATURE_BFLOAT16 ++ | AARCH64_FEATURE_I8MM ++ | AARCH64_FEATURE_F16 ++ | AARCH64_FEATURE_SVE ++ | AARCH64_FEATURE_SVE2 ++ | AARCH64_FEATURE_SVE2_BITPERM ++ | AARCH64_FEATURE_MEMTAG ++ | AARCH64_FEATURE_RNG), ++ "Neoverse N2"}, ++ {"neoverse-v1", AARCH64_FEATURE (AARCH64_ARCH_V8_4, ++ AARCH64_FEATURE_PROFILE ++ | AARCH64_FEATURE_CVADP ++ | AARCH64_FEATURE_SVE ++ | AARCH64_FEATURE_SSBS ++ | AARCH64_FEATURE_RNG ++ | AARCH64_FEATURE_F16 ++ | AARCH64_FEATURE_BFLOAT16 ++ | AARCH64_FEATURE_I8MM), "Neoverse V1"}, + {"qdf24xx", AARCH64_FEATURE (AARCH64_ARCH_V8, + AARCH64_FEATURE_CRC | AARCH64_FEATURE_CRYPTO + | AARCH64_FEATURE_RDMA), +diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c +index e0d0cbd5463..b02e9fb1c8f 100644 +--- a/gas/config/tc-arm.c ++++ b/gas/config/tc-arm.c +@@ -5936,7 +5936,15 @@ parse_address_main (char **str, int i, int group_relocations, + + if (skip_past_char (&p, '[') == FAIL) + { +- if (skip_past_char (&p, '=') == FAIL) ++ if (group_type == GROUP_MVE ++ && (reg = arm_reg_parse (&p, REG_TYPE_RN)) != FAIL) ++ { ++ /* [r0-r15] expected as argument but receiving r0-r15 without ++ [] brackets. */ ++ inst.error = BAD_SYNTAX; ++ return PARSE_OPERAND_FAIL; ++ } ++ else if (skip_past_char (&p, '=') == FAIL) + { + /* Bare address - translate to PC-relative offset. */ + inst.relocs[0].pc_rel = 1; +@@ -26506,14 +26514,14 @@ static const struct asm_opcode insns[] = + #define ARM_VARIANT & fpu_vfp_ext_v1 + #undef THUMB_VARIANT + #define THUMB_VARIANT & arm_ext_v6t2 +- mnCEF(vmla, _vmla, 3, (RNSDQMQ, oRNSDQMQ, RNSDQ_RNSC_MQ_RR), neon_mac_maybe_scalar), +- mnCEF(vmul, _vmul, 3, (RNSDQMQ, oRNSDQMQ, RNSDQ_RNSC_MQ_RR), neon_mul), + + mcCE(fcpyd, eb00b40, 2, (RVD, RVD), vfp_dp_rd_rm), + + #undef ARM_VARIANT + #define ARM_VARIANT & fpu_vfp_ext_v1xd + ++ mnCEF(vmla, _vmla, 3, (RNSDQMQ, oRNSDQMQ, RNSDQ_RNSC_MQ_RR), neon_mac_maybe_scalar), ++ mnCEF(vmul, _vmul, 3, (RNSDQMQ, oRNSDQMQ, RNSDQ_RNSC_MQ_RR), neon_mul), + MNCE(vmov, 0, 1, (VMOV), neon_mov), + mcCE(fmrs, e100a10, 2, (RR, RVS), vfp_reg_from_sp), + mcCE(fmsr, e000a10, 2, (RVS, RR), vfp_sp_from_reg), +@@ -31587,6 +31595,16 @@ static const struct arm_cpu_option_table arm_cpus[] = + ARM_CPU_OPT ("neoverse-n1", "Neoverse N1", ARM_ARCH_V8_2A, + ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST), + FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_DOTPROD), ++ ARM_CPU_OPT ("neoverse-n2", "Neoverse N2", ARM_ARCH_V8_5A, ++ ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST ++ | ARM_EXT2_BF16 ++ | ARM_EXT2_I8MM), ++ FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_4), ++ ARM_CPU_OPT ("neoverse-v1", "Neoverse V1", ARM_ARCH_V8_4A, ++ ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST ++ | ARM_EXT2_BF16 ++ | ARM_EXT2_I8MM), ++ FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_4), + /* ??? XSCALE is really an architecture. */ + ARM_CPU_OPT ("xscale", NULL, ARM_ARCH_XSCALE, + ARM_ARCH_NONE, +diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c +index 037fe4d18b4..623ac77307e 100644 +--- a/gas/config/tc-i386.c ++++ b/gas/config/tc-i386.c +@@ -7115,6 +7115,23 @@ process_suffix (void) + unsigned int op; + enum { need_word, need_dword, need_qword } need; + ++ /* Check the register operand for the address size prefix if ++ the memory operand has no real registers, like symbol, DISP ++ or symbol(%rip). */ ++ if (i.mem_operands == 1 ++ && i.reg_operands == 1 ++ && i.operands == 2 ++ && i.types[1].bitfield.class == Reg ++ && (flag_code == CODE_32BIT ++ ? i.op[1].regs->reg_type.bitfield.word ++ : i.op[1].regs->reg_type.bitfield.dword) ++ && ((i.base_reg == NULL && i.index_reg == NULL) ++ || (i.base_reg ++ && i.base_reg->reg_num == RegIP ++ && i.base_reg->reg_type.bitfield.qword)) ++ && !add_prefix (ADDR_PREFIX_OPCODE)) ++ return 0; ++ + if (flag_code == CODE_32BIT) + need = i.prefix[ADDR_PREFIX] ? need_word : need_dword; + else if (i.prefix[ADDR_PREFIX]) +diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c +index aa989e7d1c2..9719341c546 100644 +--- a/gas/config/tc-ppc.c ++++ b/gas/config/tc-ppc.c +@@ -3335,6 +3335,15 @@ md_assemble (char *str) + } + + insn = opcode->opcode; ++ if (!target_big_endian ++ && ((insn & ~(1 << 26)) == 46u << 26 ++ || (insn & ~(0xc0 << 1)) == (31u << 26 | 533 << 1))) ++ { ++ /* lmw, stmw, lswi, lswx, stswi, stswx */ ++ as_bad (_("`%s' invalid when little-endian"), str); ++ ppc_clear_labels (); ++ return; ++ } + + str = s; + while (ISSPACE (*str)) +diff --git a/gas/doc/c-aarch64.texi b/gas/doc/c-aarch64.texi +index 86b6efc52bd..f5d26695749 100644 +--- a/gas/doc/c-aarch64.texi ++++ b/gas/doc/c-aarch64.texi +@@ -72,6 +72,8 @@ on the target processor. The following processor names are recognized: + @code{exynos-m1}, + @code{falkor}, + @code{neoverse-n1}, ++@code{neoverse-n2}, ++@code{neoverse-v1}, + @code{neoverse-e1}, + @code{qdf24xx}, + @code{saphira}, +diff --git a/gas/doc/c-arm.texi b/gas/doc/c-arm.texi +index 91803605775..16c94de675c 100644 +--- a/gas/doc/c-arm.texi ++++ b/gas/doc/c-arm.texi +@@ -151,6 +151,8 @@ recognized: + @code{marvell-pj4}, + @code{marvell-whitney}, + @code{neoverse-n1}, ++@code{neoverse-n2}, ++@code{neoverse-v1}, + @code{xgene1}, + @code{xgene2}, + @code{ep9312} (ARM920 with Cirrus Maverick coprocessor), +diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c +index 6899a840eff..1160cafc13e 100644 +--- a/gas/dwarf2dbg.c ++++ b/gas/dwarf2dbg.c +@@ -211,7 +211,6 @@ struct file_entry + { + const char * filename; + unsigned int dir; +- bfd_boolean auto_assigned; + unsigned char md5[NUM_MD5_BYTES]; + }; + +@@ -219,6 +218,7 @@ struct file_entry + static struct file_entry *files; + static unsigned int files_in_use; + static unsigned int files_allocated; ++static unsigned int num_of_auto_assigned; + + /* Table of directories used by .debug_line. */ + static char ** dirs = NULL; +@@ -633,7 +633,7 @@ get_directory_table_entry (const char * dirname, + } + + static bfd_boolean +-assign_file_to_slot (unsigned long i, const char *file, unsigned int dir, bfd_boolean auto_assign) ++assign_file_to_slot (unsigned long i, const char *file, unsigned int dir) + { + if (i >= files_allocated) + { +@@ -653,7 +653,6 @@ assign_file_to_slot (unsigned long i, const char *file, unsigned int dir, bfd_bo + + files[i].filename = file; + files[i].dir = dir; +- files[i].auto_assigned = auto_assign; + memset (files[i].md5, 0, NUM_MD5_BYTES); + + if (files_in_use < i + 1) +@@ -717,9 +716,11 @@ allocate_filenum (const char * pathname) + return i; + } + +- if (!assign_file_to_slot (i, file, dir, TRUE)) ++ if (!assign_file_to_slot (i, file, dir)) + return -1; + ++ num_of_auto_assigned++; ++ + last_used = i; + last_used_dir_len = dir_len; + +@@ -792,30 +793,15 @@ allocate_filename_to_slot (const char * dirname, + } + + fail: +- /* If NUM was previously allocated automatically then +- choose another slot for it, so that we can reuse NUM. */ +- if (files[num].auto_assigned) +- { +- /* Find an unused slot. */ +- for (i = 1; i < files_in_use; ++i) +- if (files[i].filename == NULL) +- break; +- if (! assign_file_to_slot (i, files[num].filename, files[num].dir, TRUE)) +- return FALSE; +- files[num].filename = NULL; +- } +- else +- { +- as_bad (_("file table slot %u is already occupied by a different file (%s%s%s vs %s%s%s)"), +- num, +- dir == NULL ? "" : dir, +- dir == NULL ? "" : "/", +- files[num].filename, +- dirname == NULL ? "" : dirname, +- dirname == NULL ? "" : "/", +- filename); +- return FALSE; +- } ++ as_bad (_("file table slot %u is already occupied by a different file (%s%s%s vs %s%s%s)"), ++ num, ++ dir == NULL ? "" : dir, ++ dir == NULL ? "" : "/", ++ files[num].filename, ++ dirname == NULL ? "" : dirname, ++ dirname == NULL ? "" : "/", ++ filename); ++ return FALSE; + } + + if (dirname == NULL) +@@ -833,7 +819,7 @@ allocate_filename_to_slot (const char * dirname, + d = get_directory_table_entry (dirname, dirlen, num == 0); + i = num; + +- if (! assign_file_to_slot (i, file, d, FALSE)) ++ if (! assign_file_to_slot (i, file, d)) + return FALSE; + + if (with_md5) +@@ -1030,6 +1016,7 @@ dwarf2_directive_filename (void) + char *filename; + const char * dirname = NULL; + int filename_len; ++ unsigned int i; + + /* Continue to accept a bare string and pass it off. */ + SKIP_WHITESPACE (); +@@ -1096,6 +1083,18 @@ dwarf2_directive_filename (void) + return NULL; + } + ++ if (num_of_auto_assigned) ++ { ++ /* Clear slots auto-assigned before the first .file ++ directive was seen. */ ++ if (files_in_use != (num_of_auto_assigned + 1)) ++ abort (); ++ for (i = 1; i < files_in_use; i++) ++ files[i].filename = NULL; ++ files_in_use = 0; ++ num_of_auto_assigned = 0; ++ } ++ + if (! allocate_filename_to_slot (dirname, filename, (unsigned int) num, + with_md5)) + return NULL; +diff --git a/gas/testsuite/gas/aarch64/system.d b/gas/testsuite/gas/aarch64/system.d +index 20d5c204094..c973584af59 100644 +--- a/gas/testsuite/gas/aarch64/system.d ++++ b/gas/testsuite/gas/aarch64/system.d +@@ -190,6 +190,7 @@ Disassembly of section \.text: + .*: d5033edf isb #0xe + .*: d5033fdf isb + .*: d5033fdf isb ++.*: d5033fdf isb + .*: d503309f ssbb + .*: d503349f pssbb + .*: d8000000 prfm pldl1keep, 0 +diff --git a/gas/testsuite/gas/aarch64/system.s b/gas/testsuite/gas/aarch64/system.s +index 9d86f66806a..6f494f885a6 100644 +--- a/gas/testsuite/gas/aarch64/system.s ++++ b/gas/testsuite/gas/aarch64/system.s +@@ -44,6 +44,7 @@ + all_barriers op=isb, from=0, to=15 + + isb ++ isb sy + ssbb + pssbb + +diff --git a/gas/testsuite/gas/arm/mve-vldr-vstr-bad.d b/gas/testsuite/gas/arm/mve-vldr-vstr-bad.d +new file mode 100644 +index 00000000000..8989688f0f3 +--- /dev/null ++++ b/gas/testsuite/gas/arm/mve-vldr-vstr-bad.d +@@ -0,0 +1,5 @@ ++#name: bad MVE VLDR VSTR wrong error message for addressing mode without []. ++#as: -march=armv8.1-m.main+mve.fp -mthumb -mfloat-abi=hard ++#error_output: mve-vldr-vstr-bad.l ++ ++.*: +file format .*arm.* +diff --git a/gas/testsuite/gas/arm/mve-vldr-vstr-bad.l b/gas/testsuite/gas/arm/mve-vldr-vstr-bad.l +new file mode 100644 +index 00000000000..2df3a37ac02 +--- /dev/null ++++ b/gas/testsuite/gas/arm/mve-vldr-vstr-bad.l +@@ -0,0 +1,811 @@ ++[^:]*: Assembler messages: ++[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r0' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r0' ++[^:]*:12: Error: syntax error -- `vstrb.8 q0,r0' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r1' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r1' ++[^:]*:12: Error: syntax error -- `vstrb.8 q0,r1' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r2' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r2' ++[^:]*:12: Error: syntax error -- `vstrb.8 q0,r2' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r4' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r4' ++[^:]*:12: Error: syntax error -- `vstrb.8 q0,r4' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r7' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r7' ++[^:]*:12: Error: syntax error -- `vstrb.8 q0,r7' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r8' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r8' ++[^:]*:12: Error: syntax error -- `vstrb.8 q0,r8' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r10' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r10' ++[^:]*:12: Error: syntax error -- `vstrb.8 q0,r10' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r12' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r12' ++[^:]*:12: Error: syntax error -- `vstrb.8 q0,r12' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r14' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r14' ++[^:]*:12: Error: syntax error -- `vstrb.8 q0,r14' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r0' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r0' ++[^:]*:12: Error: syntax error -- `vstrb.8 q1,r0' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r1' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r1' ++[^:]*:12: Error: syntax error -- `vstrb.8 q1,r1' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r2' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r2' ++[^:]*:12: Error: syntax error -- `vstrb.8 q1,r2' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r4' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r4' ++[^:]*:12: Error: syntax error -- `vstrb.8 q1,r4' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r7' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r7' ++[^:]*:12: Error: syntax error -- `vstrb.8 q1,r7' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r8' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r8' ++[^:]*:12: Error: syntax error -- `vstrb.8 q1,r8' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r10' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r10' ++[^:]*:12: Error: syntax error -- `vstrb.8 q1,r10' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r12' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r12' ++[^:]*:12: Error: syntax error -- `vstrb.8 q1,r12' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r14' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r14' ++[^:]*:12: Error: syntax error -- `vstrb.8 q1,r14' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r0' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r0' ++[^:]*:12: Error: syntax error -- `vstrb.8 q2,r0' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r1' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r1' ++[^:]*:12: Error: syntax error -- `vstrb.8 q2,r1' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r2' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r2' ++[^:]*:12: Error: syntax error -- `vstrb.8 q2,r2' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r4' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r4' ++[^:]*:12: Error: syntax error -- `vstrb.8 q2,r4' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r7' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r7' ++[^:]*:12: Error: syntax error -- `vstrb.8 q2,r7' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r8' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r8' ++[^:]*:12: Error: syntax error -- `vstrb.8 q2,r8' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r10' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r10' ++[^:]*:12: Error: syntax error -- `vstrb.8 q2,r10' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r12' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r12' ++[^:]*:12: Error: syntax error -- `vstrb.8 q2,r12' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r14' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r14' ++[^:]*:12: Error: syntax error -- `vstrb.8 q2,r14' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r0' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r0' ++[^:]*:12: Error: syntax error -- `vstrb.8 q4,r0' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r1' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r1' ++[^:]*:12: Error: syntax error -- `vstrb.8 q4,r1' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r2' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r2' ++[^:]*:12: Error: syntax error -- `vstrb.8 q4,r2' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r4' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r4' ++[^:]*:12: Error: syntax error -- `vstrb.8 q4,r4' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r7' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r7' ++[^:]*:12: Error: syntax error -- `vstrb.8 q4,r7' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r8' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r8' ++[^:]*:12: Error: syntax error -- `vstrb.8 q4,r8' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r10' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r10' ++[^:]*:12: Error: syntax error -- `vstrb.8 q4,r10' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r12' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r12' ++[^:]*:12: Error: syntax error -- `vstrb.8 q4,r12' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r14' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r14' ++[^:]*:12: Error: syntax error -- `vstrb.8 q4,r14' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r0' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r0' ++[^:]*:12: Error: syntax error -- `vstrb.8 q7,r0' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r1' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r1' ++[^:]*:12: Error: syntax error -- `vstrb.8 q7,r1' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r2' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r2' ++[^:]*:12: Error: syntax error -- `vstrb.8 q7,r2' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r4' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r4' ++[^:]*:12: Error: syntax error -- `vstrb.8 q7,r4' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r7' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r7' ++[^:]*:12: Error: syntax error -- `vstrb.8 q7,r7' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r8' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r8' ++[^:]*:12: Error: syntax error -- `vstrb.8 q7,r8' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r10' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r10' ++[^:]*:12: Error: syntax error -- `vstrb.8 q7,r10' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r12' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r12' ++[^:]*:12: Error: syntax error -- `vstrb.8 q7,r12' ++[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r14' ++[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r14' ++[^:]*:12: Error: syntax error -- `vstrb.8 q7,r14' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r0' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r0' ++[^:]*:12: Error: syntax error -- `vstrb.16 q0,r0' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r1' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r1' ++[^:]*:12: Error: syntax error -- `vstrb.16 q0,r1' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r2' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r2' ++[^:]*:12: Error: syntax error -- `vstrb.16 q0,r2' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r4' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r4' ++[^:]*:12: Error: syntax error -- `vstrb.16 q0,r4' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r7' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r7' ++[^:]*:12: Error: syntax error -- `vstrb.16 q0,r7' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r8' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r8' ++[^:]*:12: Error: syntax error -- `vstrb.16 q0,r8' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r10' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r10' ++[^:]*:12: Error: syntax error -- `vstrb.16 q0,r10' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r12' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r12' ++[^:]*:12: Error: syntax error -- `vstrb.16 q0,r12' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r14' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r14' ++[^:]*:12: Error: syntax error -- `vstrb.16 q0,r14' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r0' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r0' ++[^:]*:12: Error: syntax error -- `vstrb.16 q1,r0' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r1' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r1' ++[^:]*:12: Error: syntax error -- `vstrb.16 q1,r1' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r2' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r2' ++[^:]*:12: Error: syntax error -- `vstrb.16 q1,r2' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r4' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r4' ++[^:]*:12: Error: syntax error -- `vstrb.16 q1,r4' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r7' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r7' ++[^:]*:12: Error: syntax error -- `vstrb.16 q1,r7' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r8' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r8' ++[^:]*:12: Error: syntax error -- `vstrb.16 q1,r8' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r10' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r10' ++[^:]*:12: Error: syntax error -- `vstrb.16 q1,r10' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r12' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r12' ++[^:]*:12: Error: syntax error -- `vstrb.16 q1,r12' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r14' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r14' ++[^:]*:12: Error: syntax error -- `vstrb.16 q1,r14' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r0' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r0' ++[^:]*:12: Error: syntax error -- `vstrb.16 q2,r0' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r1' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r1' ++[^:]*:12: Error: syntax error -- `vstrb.16 q2,r1' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r2' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r2' ++[^:]*:12: Error: syntax error -- `vstrb.16 q2,r2' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r4' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r4' ++[^:]*:12: Error: syntax error -- `vstrb.16 q2,r4' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r7' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r7' ++[^:]*:12: Error: syntax error -- `vstrb.16 q2,r7' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r8' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r8' ++[^:]*:12: Error: syntax error -- `vstrb.16 q2,r8' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r10' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r10' ++[^:]*:12: Error: syntax error -- `vstrb.16 q2,r10' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r12' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r12' ++[^:]*:12: Error: syntax error -- `vstrb.16 q2,r12' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r14' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r14' ++[^:]*:12: Error: syntax error -- `vstrb.16 q2,r14' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r0' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r0' ++[^:]*:12: Error: syntax error -- `vstrb.16 q4,r0' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r1' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r1' ++[^:]*:12: Error: syntax error -- `vstrb.16 q4,r1' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r2' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r2' ++[^:]*:12: Error: syntax error -- `vstrb.16 q4,r2' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r4' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r4' ++[^:]*:12: Error: syntax error -- `vstrb.16 q4,r4' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r7' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r7' ++[^:]*:12: Error: syntax error -- `vstrb.16 q4,r7' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r8' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r8' ++[^:]*:12: Error: syntax error -- `vstrb.16 q4,r8' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r10' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r10' ++[^:]*:12: Error: syntax error -- `vstrb.16 q4,r10' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r12' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r12' ++[^:]*:12: Error: syntax error -- `vstrb.16 q4,r12' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r14' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r14' ++[^:]*:12: Error: syntax error -- `vstrb.16 q4,r14' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r0' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r0' ++[^:]*:12: Error: syntax error -- `vstrb.16 q7,r0' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r1' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r1' ++[^:]*:12: Error: syntax error -- `vstrb.16 q7,r1' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r2' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r2' ++[^:]*:12: Error: syntax error -- `vstrb.16 q7,r2' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r4' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r4' ++[^:]*:12: Error: syntax error -- `vstrb.16 q7,r4' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r7' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r7' ++[^:]*:12: Error: syntax error -- `vstrb.16 q7,r7' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r8' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r8' ++[^:]*:12: Error: syntax error -- `vstrb.16 q7,r8' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r10' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r10' ++[^:]*:12: Error: syntax error -- `vstrb.16 q7,r10' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r12' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r12' ++[^:]*:12: Error: syntax error -- `vstrb.16 q7,r12' ++[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r14' ++[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r14' ++[^:]*:12: Error: syntax error -- `vstrb.16 q7,r14' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r0' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r0' ++[^:]*:12: Error: syntax error -- `vstrb.32 q0,r0' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r1' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r1' ++[^:]*:12: Error: syntax error -- `vstrb.32 q0,r1' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r2' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r2' ++[^:]*:12: Error: syntax error -- `vstrb.32 q0,r2' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r4' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r4' ++[^:]*:12: Error: syntax error -- `vstrb.32 q0,r4' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r7' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r7' ++[^:]*:12: Error: syntax error -- `vstrb.32 q0,r7' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r8' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r8' ++[^:]*:12: Error: syntax error -- `vstrb.32 q0,r8' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r10' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r10' ++[^:]*:12: Error: syntax error -- `vstrb.32 q0,r10' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r12' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r12' ++[^:]*:12: Error: syntax error -- `vstrb.32 q0,r12' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r14' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r14' ++[^:]*:12: Error: syntax error -- `vstrb.32 q0,r14' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r0' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r0' ++[^:]*:12: Error: syntax error -- `vstrb.32 q1,r0' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r1' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r1' ++[^:]*:12: Error: syntax error -- `vstrb.32 q1,r1' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r2' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r2' ++[^:]*:12: Error: syntax error -- `vstrb.32 q1,r2' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r4' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r4' ++[^:]*:12: Error: syntax error -- `vstrb.32 q1,r4' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r7' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r7' ++[^:]*:12: Error: syntax error -- `vstrb.32 q1,r7' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r8' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r8' ++[^:]*:12: Error: syntax error -- `vstrb.32 q1,r8' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r10' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r10' ++[^:]*:12: Error: syntax error -- `vstrb.32 q1,r10' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r12' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r12' ++[^:]*:12: Error: syntax error -- `vstrb.32 q1,r12' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r14' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r14' ++[^:]*:12: Error: syntax error -- `vstrb.32 q1,r14' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r0' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r0' ++[^:]*:12: Error: syntax error -- `vstrb.32 q2,r0' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r1' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r1' ++[^:]*:12: Error: syntax error -- `vstrb.32 q2,r1' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r2' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r2' ++[^:]*:12: Error: syntax error -- `vstrb.32 q2,r2' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r4' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r4' ++[^:]*:12: Error: syntax error -- `vstrb.32 q2,r4' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r7' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r7' ++[^:]*:12: Error: syntax error -- `vstrb.32 q2,r7' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r8' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r8' ++[^:]*:12: Error: syntax error -- `vstrb.32 q2,r8' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r10' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r10' ++[^:]*:12: Error: syntax error -- `vstrb.32 q2,r10' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r12' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r12' ++[^:]*:12: Error: syntax error -- `vstrb.32 q2,r12' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r14' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r14' ++[^:]*:12: Error: syntax error -- `vstrb.32 q2,r14' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r0' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r0' ++[^:]*:12: Error: syntax error -- `vstrb.32 q4,r0' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r1' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r1' ++[^:]*:12: Error: syntax error -- `vstrb.32 q4,r1' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r2' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r2' ++[^:]*:12: Error: syntax error -- `vstrb.32 q4,r2' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r4' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r4' ++[^:]*:12: Error: syntax error -- `vstrb.32 q4,r4' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r7' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r7' ++[^:]*:12: Error: syntax error -- `vstrb.32 q4,r7' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r8' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r8' ++[^:]*:12: Error: syntax error -- `vstrb.32 q4,r8' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r10' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r10' ++[^:]*:12: Error: syntax error -- `vstrb.32 q4,r10' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r12' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r12' ++[^:]*:12: Error: syntax error -- `vstrb.32 q4,r12' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r14' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r14' ++[^:]*:12: Error: syntax error -- `vstrb.32 q4,r14' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r0' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r0' ++[^:]*:12: Error: syntax error -- `vstrb.32 q7,r0' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r1' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r1' ++[^:]*:12: Error: syntax error -- `vstrb.32 q7,r1' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r2' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r2' ++[^:]*:12: Error: syntax error -- `vstrb.32 q7,r2' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r4' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r4' ++[^:]*:12: Error: syntax error -- `vstrb.32 q7,r4' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r7' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r7' ++[^:]*:12: Error: syntax error -- `vstrb.32 q7,r7' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r8' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r8' ++[^:]*:12: Error: syntax error -- `vstrb.32 q7,r8' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r10' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r10' ++[^:]*:12: Error: syntax error -- `vstrb.32 q7,r10' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r12' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r12' ++[^:]*:12: Error: syntax error -- `vstrb.32 q7,r12' ++[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r14' ++[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r14' ++[^:]*:12: Error: syntax error -- `vstrb.32 q7,r14' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r0' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r0' ++[^:]*:22: Error: syntax error -- `vstrh.16 q0,r0' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r1' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r1' ++[^:]*:22: Error: syntax error -- `vstrh.16 q0,r1' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r2' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r2' ++[^:]*:22: Error: syntax error -- `vstrh.16 q0,r2' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r4' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r4' ++[^:]*:22: Error: syntax error -- `vstrh.16 q0,r4' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r7' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r7' ++[^:]*:22: Error: syntax error -- `vstrh.16 q0,r7' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r8' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r8' ++[^:]*:22: Error: syntax error -- `vstrh.16 q0,r8' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r10' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r10' ++[^:]*:22: Error: syntax error -- `vstrh.16 q0,r10' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r12' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r12' ++[^:]*:22: Error: syntax error -- `vstrh.16 q0,r12' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r14' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r14' ++[^:]*:22: Error: syntax error -- `vstrh.16 q0,r14' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r0' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r0' ++[^:]*:22: Error: syntax error -- `vstrh.16 q1,r0' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r1' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r1' ++[^:]*:22: Error: syntax error -- `vstrh.16 q1,r1' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r2' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r2' ++[^:]*:22: Error: syntax error -- `vstrh.16 q1,r2' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r4' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r4' ++[^:]*:22: Error: syntax error -- `vstrh.16 q1,r4' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r7' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r7' ++[^:]*:22: Error: syntax error -- `vstrh.16 q1,r7' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r8' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r8' ++[^:]*:22: Error: syntax error -- `vstrh.16 q1,r8' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r10' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r10' ++[^:]*:22: Error: syntax error -- `vstrh.16 q1,r10' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r12' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r12' ++[^:]*:22: Error: syntax error -- `vstrh.16 q1,r12' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r14' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r14' ++[^:]*:22: Error: syntax error -- `vstrh.16 q1,r14' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r0' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r0' ++[^:]*:22: Error: syntax error -- `vstrh.16 q2,r0' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r1' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r1' ++[^:]*:22: Error: syntax error -- `vstrh.16 q2,r1' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r2' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r2' ++[^:]*:22: Error: syntax error -- `vstrh.16 q2,r2' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r4' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r4' ++[^:]*:22: Error: syntax error -- `vstrh.16 q2,r4' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r7' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r7' ++[^:]*:22: Error: syntax error -- `vstrh.16 q2,r7' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r8' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r8' ++[^:]*:22: Error: syntax error -- `vstrh.16 q2,r8' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r10' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r10' ++[^:]*:22: Error: syntax error -- `vstrh.16 q2,r10' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r12' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r12' ++[^:]*:22: Error: syntax error -- `vstrh.16 q2,r12' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r14' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r14' ++[^:]*:22: Error: syntax error -- `vstrh.16 q2,r14' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r0' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r0' ++[^:]*:22: Error: syntax error -- `vstrh.16 q4,r0' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r1' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r1' ++[^:]*:22: Error: syntax error -- `vstrh.16 q4,r1' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r2' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r2' ++[^:]*:22: Error: syntax error -- `vstrh.16 q4,r2' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r4' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r4' ++[^:]*:22: Error: syntax error -- `vstrh.16 q4,r4' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r7' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r7' ++[^:]*:22: Error: syntax error -- `vstrh.16 q4,r7' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r8' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r8' ++[^:]*:22: Error: syntax error -- `vstrh.16 q4,r8' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r10' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r10' ++[^:]*:22: Error: syntax error -- `vstrh.16 q4,r10' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r12' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r12' ++[^:]*:22: Error: syntax error -- `vstrh.16 q4,r12' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r14' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r14' ++[^:]*:22: Error: syntax error -- `vstrh.16 q4,r14' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r0' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r0' ++[^:]*:22: Error: syntax error -- `vstrh.16 q7,r0' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r1' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r1' ++[^:]*:22: Error: syntax error -- `vstrh.16 q7,r1' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r2' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r2' ++[^:]*:22: Error: syntax error -- `vstrh.16 q7,r2' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r4' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r4' ++[^:]*:22: Error: syntax error -- `vstrh.16 q7,r4' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r7' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r7' ++[^:]*:22: Error: syntax error -- `vstrh.16 q7,r7' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r8' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r8' ++[^:]*:22: Error: syntax error -- `vstrh.16 q7,r8' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r10' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r10' ++[^:]*:22: Error: syntax error -- `vstrh.16 q7,r10' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r12' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r12' ++[^:]*:22: Error: syntax error -- `vstrh.16 q7,r12' ++[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r14' ++[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r14' ++[^:]*:22: Error: syntax error -- `vstrh.16 q7,r14' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r0' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r0' ++[^:]*:22: Error: syntax error -- `vstrh.32 q0,r0' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r1' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r1' ++[^:]*:22: Error: syntax error -- `vstrh.32 q0,r1' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r2' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r2' ++[^:]*:22: Error: syntax error -- `vstrh.32 q0,r2' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r4' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r4' ++[^:]*:22: Error: syntax error -- `vstrh.32 q0,r4' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r7' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r7' ++[^:]*:22: Error: syntax error -- `vstrh.32 q0,r7' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r8' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r8' ++[^:]*:22: Error: syntax error -- `vstrh.32 q0,r8' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r10' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r10' ++[^:]*:22: Error: syntax error -- `vstrh.32 q0,r10' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r12' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r12' ++[^:]*:22: Error: syntax error -- `vstrh.32 q0,r12' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r14' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r14' ++[^:]*:22: Error: syntax error -- `vstrh.32 q0,r14' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r0' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r0' ++[^:]*:22: Error: syntax error -- `vstrh.32 q1,r0' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r1' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r1' ++[^:]*:22: Error: syntax error -- `vstrh.32 q1,r1' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r2' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r2' ++[^:]*:22: Error: syntax error -- `vstrh.32 q1,r2' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r4' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r4' ++[^:]*:22: Error: syntax error -- `vstrh.32 q1,r4' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r7' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r7' ++[^:]*:22: Error: syntax error -- `vstrh.32 q1,r7' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r8' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r8' ++[^:]*:22: Error: syntax error -- `vstrh.32 q1,r8' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r10' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r10' ++[^:]*:22: Error: syntax error -- `vstrh.32 q1,r10' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r12' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r12' ++[^:]*:22: Error: syntax error -- `vstrh.32 q1,r12' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r14' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r14' ++[^:]*:22: Error: syntax error -- `vstrh.32 q1,r14' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r0' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r0' ++[^:]*:22: Error: syntax error -- `vstrh.32 q2,r0' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r1' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r1' ++[^:]*:22: Error: syntax error -- `vstrh.32 q2,r1' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r2' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r2' ++[^:]*:22: Error: syntax error -- `vstrh.32 q2,r2' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r4' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r4' ++[^:]*:22: Error: syntax error -- `vstrh.32 q2,r4' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r7' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r7' ++[^:]*:22: Error: syntax error -- `vstrh.32 q2,r7' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r8' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r8' ++[^:]*:22: Error: syntax error -- `vstrh.32 q2,r8' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r10' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r10' ++[^:]*:22: Error: syntax error -- `vstrh.32 q2,r10' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r12' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r12' ++[^:]*:22: Error: syntax error -- `vstrh.32 q2,r12' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r14' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r14' ++[^:]*:22: Error: syntax error -- `vstrh.32 q2,r14' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r0' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r0' ++[^:]*:22: Error: syntax error -- `vstrh.32 q4,r0' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r1' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r1' ++[^:]*:22: Error: syntax error -- `vstrh.32 q4,r1' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r2' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r2' ++[^:]*:22: Error: syntax error -- `vstrh.32 q4,r2' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r4' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r4' ++[^:]*:22: Error: syntax error -- `vstrh.32 q4,r4' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r7' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r7' ++[^:]*:22: Error: syntax error -- `vstrh.32 q4,r7' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r8' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r8' ++[^:]*:22: Error: syntax error -- `vstrh.32 q4,r8' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r10' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r10' ++[^:]*:22: Error: syntax error -- `vstrh.32 q4,r10' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r12' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r12' ++[^:]*:22: Error: syntax error -- `vstrh.32 q4,r12' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r14' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r14' ++[^:]*:22: Error: syntax error -- `vstrh.32 q4,r14' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r0' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r0' ++[^:]*:22: Error: syntax error -- `vstrh.32 q7,r0' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r1' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r1' ++[^:]*:22: Error: syntax error -- `vstrh.32 q7,r1' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r2' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r2' ++[^:]*:22: Error: syntax error -- `vstrh.32 q7,r2' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r4' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r4' ++[^:]*:22: Error: syntax error -- `vstrh.32 q7,r4' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r7' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r7' ++[^:]*:22: Error: syntax error -- `vstrh.32 q7,r7' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r8' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r8' ++[^:]*:22: Error: syntax error -- `vstrh.32 q7,r8' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r10' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r10' ++[^:]*:22: Error: syntax error -- `vstrh.32 q7,r10' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r12' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r12' ++[^:]*:22: Error: syntax error -- `vstrh.32 q7,r12' ++[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r14' ++[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r14' ++[^:]*:22: Error: syntax error -- `vstrh.32 q7,r14' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r0' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r0' ++[^:]*:30: Error: syntax error -- `vstrw.32 q0,r0' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r1' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r1' ++[^:]*:30: Error: syntax error -- `vstrw.32 q0,r1' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r2' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r2' ++[^:]*:30: Error: syntax error -- `vstrw.32 q0,r2' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r4' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r4' ++[^:]*:30: Error: syntax error -- `vstrw.32 q0,r4' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r7' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r7' ++[^:]*:30: Error: syntax error -- `vstrw.32 q0,r7' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r8' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r8' ++[^:]*:30: Error: syntax error -- `vstrw.32 q0,r8' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r10' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r10' ++[^:]*:30: Error: syntax error -- `vstrw.32 q0,r10' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r12' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r12' ++[^:]*:30: Error: syntax error -- `vstrw.32 q0,r12' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r14' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r14' ++[^:]*:30: Error: syntax error -- `vstrw.32 q0,r14' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r0' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r0' ++[^:]*:30: Error: syntax error -- `vstrw.32 q1,r0' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r1' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r1' ++[^:]*:30: Error: syntax error -- `vstrw.32 q1,r1' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r2' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r2' ++[^:]*:30: Error: syntax error -- `vstrw.32 q1,r2' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r4' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r4' ++[^:]*:30: Error: syntax error -- `vstrw.32 q1,r4' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r7' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r7' ++[^:]*:30: Error: syntax error -- `vstrw.32 q1,r7' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r8' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r8' ++[^:]*:30: Error: syntax error -- `vstrw.32 q1,r8' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r10' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r10' ++[^:]*:30: Error: syntax error -- `vstrw.32 q1,r10' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r12' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r12' ++[^:]*:30: Error: syntax error -- `vstrw.32 q1,r12' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r14' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r14' ++[^:]*:30: Error: syntax error -- `vstrw.32 q1,r14' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r0' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r0' ++[^:]*:30: Error: syntax error -- `vstrw.32 q2,r0' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r1' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r1' ++[^:]*:30: Error: syntax error -- `vstrw.32 q2,r1' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r2' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r2' ++[^:]*:30: Error: syntax error -- `vstrw.32 q2,r2' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r4' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r4' ++[^:]*:30: Error: syntax error -- `vstrw.32 q2,r4' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r7' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r7' ++[^:]*:30: Error: syntax error -- `vstrw.32 q2,r7' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r8' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r8' ++[^:]*:30: Error: syntax error -- `vstrw.32 q2,r8' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r10' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r10' ++[^:]*:30: Error: syntax error -- `vstrw.32 q2,r10' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r12' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r12' ++[^:]*:30: Error: syntax error -- `vstrw.32 q2,r12' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r14' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r14' ++[^:]*:30: Error: syntax error -- `vstrw.32 q2,r14' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r0' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r0' ++[^:]*:30: Error: syntax error -- `vstrw.32 q4,r0' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r1' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r1' ++[^:]*:30: Error: syntax error -- `vstrw.32 q4,r1' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r2' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r2' ++[^:]*:30: Error: syntax error -- `vstrw.32 q4,r2' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r4' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r4' ++[^:]*:30: Error: syntax error -- `vstrw.32 q4,r4' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r7' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r7' ++[^:]*:30: Error: syntax error -- `vstrw.32 q4,r7' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r8' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r8' ++[^:]*:30: Error: syntax error -- `vstrw.32 q4,r8' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r10' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r10' ++[^:]*:30: Error: syntax error -- `vstrw.32 q4,r10' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r12' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r12' ++[^:]*:30: Error: syntax error -- `vstrw.32 q4,r12' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r14' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r14' ++[^:]*:30: Error: syntax error -- `vstrw.32 q4,r14' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r0' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r0' ++[^:]*:30: Error: syntax error -- `vstrw.32 q7,r0' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r1' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r1' ++[^:]*:30: Error: syntax error -- `vstrw.32 q7,r1' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r2' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r2' ++[^:]*:30: Error: syntax error -- `vstrw.32 q7,r2' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r4' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r4' ++[^:]*:30: Error: syntax error -- `vstrw.32 q7,r4' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r7' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r7' ++[^:]*:30: Error: syntax error -- `vstrw.32 q7,r7' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r8' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r8' ++[^:]*:30: Error: syntax error -- `vstrw.32 q7,r8' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r10' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r10' ++[^:]*:30: Error: syntax error -- `vstrw.32 q7,r10' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r12' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r12' ++[^:]*:30: Error: syntax error -- `vstrw.32 q7,r12' ++[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r14' ++[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r14' ++[^:]*:30: Error: syntax error -- `vstrw.32 q7,r14' +diff --git a/gas/testsuite/gas/arm/mve-vldr-vstr-bad.s b/gas/testsuite/gas/arm/mve-vldr-vstr-bad.s +new file mode 100644 +index 00000000000..c72c1296d2f +--- /dev/null ++++ b/gas/testsuite/gas/arm/mve-vldr-vstr-bad.s +@@ -0,0 +1,30 @@ ++.syntax unified ++.thumb ++ ++.irp op1, 8, 16, 32 ++.irp op2, q0, q1, q2, q4, q7 ++.irp op3, r0, r1, r2, r4, r7, r8, r10, r12, r14 ++vldrb.s\op1 \op2, \op3 ++vldrb.u\op1 \op2, \op3 ++vstrb.\op1 \op2, \op3 ++.endr ++.endr ++.endr ++ ++.irp op1, 16, 32 ++.irp op2, q0, q1, q2, q4, q7 ++.irp op3, r0, r1, r2, r4, r7, r8, r10, r12, r14 ++vldrh.s\op1 \op2, \op3 ++vldrh.u\op1 \op2, \op3 ++vstrh.\op1 \op2, \op3 ++.endr ++.endr ++.endr ++ ++.irp op2, q0, q1, q2, q4, q7 ++.irp op3, r0, r1, r2, r4, r7, r8, r10, r12, r14 ++vldrw.s32 \op2, \op3 ++vldrw.u32 \op2, \op3 ++vstrw.32 \op2, \op3 ++.endr ++.endr +diff --git a/gas/testsuite/gas/arm/pr26858.d b/gas/testsuite/gas/arm/pr26858.d +new file mode 100644 +index 00000000000..dbe4d7122ee +--- /dev/null ++++ b/gas/testsuite/gas/arm/pr26858.d +@@ -0,0 +1,8 @@ ++# name: PR26858 ++# objdump: -dr --prefix-addresses --show-raw-insn ++ ++.*: +file format .*arm.* ++ ++Disassembly of section .text: ++[^>]*> ee266a87 vmul.f32 s12, s13, s14 ++[^>]*> ee000a81 vmla.f32 s0, s1, s2 +diff --git a/gas/testsuite/gas/arm/pr26858.s b/gas/testsuite/gas/arm/pr26858.s +new file mode 100644 +index 00000000000..5a450e7bde7 +--- /dev/null ++++ b/gas/testsuite/gas/arm/pr26858.s +@@ -0,0 +1,6 @@ ++.syntax unified ++.arch armv8-r ++.arm ++.fpu fpv5-sp-d16 ++vmul.f32 s12, s13, s14 ++vmla.f32 s0, s1, s2 +diff --git a/gas/testsuite/gas/elf/dwarf-5-cu.d b/gas/testsuite/gas/elf/dwarf-5-cu.d +index 839b4b7c77b..7db20a330b8 100644 +--- a/gas/testsuite/gas/elf/dwarf-5-cu.d ++++ b/gas/testsuite/gas/elf/dwarf-5-cu.d +@@ -6,6 +6,7 @@ + Compilation Unit @ offset 0x0: + Length: 0x.* + Version: 5 ++ Unit Type: DW_UT_compile \(1\) + Abbrev Offset: 0x0 + Pointer Size: . + #pass +diff --git a/gas/testsuite/gas/i386/dwarf4-line-1.d b/gas/testsuite/gas/i386/dwarf4-line-1.d +new file mode 100644 +index 00000000000..4f8321e9bfd +--- /dev/null ++++ b/gas/testsuite/gas/i386/dwarf4-line-1.d +@@ -0,0 +1,50 @@ ++#as: -gdwarf-4 ++#readelf: -wl ++#name: DWARF4 .debug_line 1 ++ ++Raw dump of debug contents of section \.z?debug_line: ++ ++ Offset: 0x0 ++ Length: .* ++ DWARF Version: 4 ++ Prologue Length: .* ++ Minimum Instruction Length: 1 ++ Maximum Ops per Instruction: 1 ++ Initial value of 'is_stmt': 1 ++ Line Base: -5 ++ Line Range: 14 ++ Opcode Base: 13 ++ ++ Opcodes: ++ Opcode 1 has 0 args ++ Opcode 2 has 1 arg ++ Opcode 3 has 1 arg ++ Opcode 4 has 1 arg ++ Opcode 5 has 1 arg ++ Opcode 6 has 0 args ++ Opcode 7 has 0 args ++ Opcode 8 has 0 args ++ Opcode 9 has 1 arg ++ Opcode 10 has 0 args ++ Opcode 11 has 0 args ++ Opcode 12 has 1 arg ++ ++ The Directory Table \(offset 0x.*\): ++ 1 .*/gas/testsuite/gas/i386 ++ ++ The File Name Table \(offset 0x.*\): ++ Entry Dir Time Size Name ++ 1 0 0 0 foo.c ++ 2 0 0 0 foo.h ++ ++ Line Number Statements: ++ \[0x.*\] Extended opcode 2: set Address to 0x0 ++ \[0x.*\] Advance Line by 81 to 82 ++ \[0x.*\] Copy ++ \[0x.*\] Set File Name to entry 2 in the File Name Table ++ \[0x.*\] Advance Line by -73 to 9 ++ \[0x.*\] Special opcode 19: advance Address by 1 to 0x1 and Line by 0 to 9 ++ \[0x.*\] Advance PC by 3 to 0x4 ++ \[0x.*\] Extended opcode 1: End of Sequence ++ ++ +diff --git a/gas/testsuite/gas/i386/dwarf4-line-1.s b/gas/testsuite/gas/i386/dwarf4-line-1.s +new file mode 100644 +index 00000000000..e558fdc0507 +--- /dev/null ++++ b/gas/testsuite/gas/i386/dwarf4-line-1.s +@@ -0,0 +1,14 @@ ++ .file "foo.c" ++ .text ++bar: ++#APP ++# 82 "foo.h" 1 ++ nop ++# 0 "" 2 ++#NO_APP ++ ret ++foo: ++ .file 1 "foo.c" ++ nop ++ .file 2 "foo.h" ++ ret +diff --git a/gas/testsuite/gas/i386/dwarf5-line-1.d b/gas/testsuite/gas/i386/dwarf5-line-1.d +new file mode 100644 +index 00000000000..7d602d0594f +--- /dev/null ++++ b/gas/testsuite/gas/i386/dwarf5-line-1.d +@@ -0,0 +1,50 @@ ++#as: -gdwarf-5 ++#readelf: -wl ++#name: DWARF5 .debug_line 1 ++ ++Raw dump of debug contents of section \.z?debug_line: ++ ++ Offset: 0x0 ++ Length: .* ++ DWARF Version: 5 ++ Address size \(bytes\): .* ++ Segment selector \(bytes\): 0 ++ Prologue Length: .* ++ Minimum Instruction Length: 1 ++ Maximum Ops per Instruction: 1 ++ Initial value of 'is_stmt': 1 ++ Line Base: -5 ++ Line Range: 14 ++ Opcode Base: 13 ++ ++ Opcodes: ++ Opcode 1 has 0 args ++ Opcode 2 has 1 arg ++ Opcode 3 has 1 arg ++ Opcode 4 has 1 arg ++ Opcode 5 has 1 arg ++ Opcode 6 has 0 args ++ Opcode 7 has 0 args ++ Opcode 8 has 0 args ++ Opcode 9 has 1 arg ++ Opcode 10 has 0 args ++ Opcode 11 has 0 args ++ Opcode 12 has 1 arg ++ ++ The Directory Table \(offset 0x.*, lines 2, columns 1\): ++ Entry Name ++ 0 \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386 ++ 1 \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386 ++ ++ The File Name Table \(offset 0x.*, lines 2, columns 3\): ++ Entry Dir MD5 Name ++ 0 0 0xbbd69fc03ce253b2dbaab2522dd519ae \(indirect line string, offset: 0x.*\): core.c ++ 1 0 0x00000000000000000000000000000000 \(indirect line string, offset: 0x.*\): types.h ++ ++ Line Number Statements: ++ \[0x.*\] Extended opcode 2: set Address to 0x0 ++ \[0x.*\] Special opcode 8: advance Address by 0 to 0x0 and Line by 3 to 4 ++ \[0x.*\] Advance PC by 1 to 0x1 ++ \[0x.*\] Extended opcode 1: End of Sequence ++ ++ +diff --git a/gas/testsuite/gas/i386/dwarf5-line-1.s b/gas/testsuite/gas/i386/dwarf5-line-1.s +new file mode 100644 +index 00000000000..6e343ad0d36 +--- /dev/null ++++ b/gas/testsuite/gas/i386/dwarf5-line-1.s +@@ -0,0 +1,6 @@ ++ .text ++ .global kretprobe_trampoline ++kretprobe_trampoline: ++ ret ++ .file 0 "core.c" md5 0xbbd69fc03ce253b2dbaab2522dd519ae ++ .file 1 "types.h" +diff --git a/gas/testsuite/gas/i386/dwarf5-line-2.d b/gas/testsuite/gas/i386/dwarf5-line-2.d +new file mode 100644 +index 00000000000..302a2d8fcc4 +--- /dev/null ++++ b/gas/testsuite/gas/i386/dwarf5-line-2.d +@@ -0,0 +1,49 @@ ++#as: -gdwarf-5 ++#readelf: -wl ++#name: DWARF5 .debug_line 2 ++ ++Raw dump of debug contents of section \.z?debug_line: ++ ++ Offset: 0x0 ++ Length: .* ++ DWARF Version: 5 ++ Address size \(bytes\): .* ++ Segment selector \(bytes\): 0 ++ Prologue Length: .* ++ Minimum Instruction Length: 1 ++ Maximum Ops per Instruction: 1 ++ Initial value of 'is_stmt': 1 ++ Line Base: -5 ++ Line Range: 14 ++ Opcode Base: 13 ++ ++ Opcodes: ++ Opcode 1 has 0 args ++ Opcode 2 has 1 arg ++ Opcode 3 has 1 arg ++ Opcode 4 has 1 arg ++ Opcode 5 has 1 arg ++ Opcode 6 has 0 args ++ Opcode 7 has 0 args ++ Opcode 8 has 0 args ++ Opcode 9 has 1 arg ++ Opcode 10 has 0 args ++ Opcode 11 has 0 args ++ Opcode 12 has 1 arg ++ ++ The Directory Table \(offset 0x.*, lines 2, columns 1\): ++ Entry Name ++ 0 \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386 ++ 1 \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386 ++ ++ The File Name Table \(offset 0x.*, lines 1, columns 3\): ++ Entry Dir MD5 Name ++ 0 0 0xbbd69fc03ce253b2dbaab2522dd519ae \(indirect line string, offset: 0x.*\): core.c ++ ++ Line Number Statements: ++ \[0x.*\] Extended opcode 2: set Address to 0x0 ++ \[0x.*\] Special opcode 8: advance Address by 0 to 0x0 and Line by 3 to 4 ++ \[0x.*\] Advance PC by 1 to 0x1 ++ \[0x.*\] Extended opcode 1: End of Sequence ++ ++ +diff --git a/gas/testsuite/gas/i386/dwarf5-line-2.s b/gas/testsuite/gas/i386/dwarf5-line-2.s +new file mode 100644 +index 00000000000..4af7d7061c9 +--- /dev/null ++++ b/gas/testsuite/gas/i386/dwarf5-line-2.s +@@ -0,0 +1,5 @@ ++ .text ++ .global kretprobe_trampoline ++kretprobe_trampoline: ++ ret ++ .file 0 "core.c" md5 0xbbd69fc03ce253b2dbaab2522dd519ae +diff --git a/gas/testsuite/gas/i386/dwarf5-line-3.d b/gas/testsuite/gas/i386/dwarf5-line-3.d +new file mode 100644 +index 00000000000..6f4ebf04718 +--- /dev/null ++++ b/gas/testsuite/gas/i386/dwarf5-line-3.d +@@ -0,0 +1,49 @@ ++#as: -g -gdwarf-5 ++#readelf: -wl ++#name: DWARF5 .debug_line 2 ++ ++Raw dump of debug contents of section \.z?debug_line: ++ ++ Offset: 0x0 ++ Length: .* ++ DWARF Version: 5 ++ Address size \(bytes\): .* ++ Segment selector \(bytes\): 0 ++ Prologue Length: .* ++ Minimum Instruction Length: 1 ++ Maximum Ops per Instruction: 1 ++ Initial value of 'is_stmt': 1 ++ Line Base: -5 ++ Line Range: 14 ++ Opcode Base: 13 ++ ++ Opcodes: ++ Opcode 1 has 0 args ++ Opcode 2 has 1 arg ++ Opcode 3 has 1 arg ++ Opcode 4 has 1 arg ++ Opcode 5 has 1 arg ++ Opcode 6 has 0 args ++ Opcode 7 has 0 args ++ Opcode 8 has 0 args ++ Opcode 9 has 1 arg ++ Opcode 10 has 0 args ++ Opcode 11 has 0 args ++ Opcode 12 has 1 arg ++ ++ The Directory Table \(offset 0x.*, lines 1, columns 1\): ++ Entry Name ++ 0 \(indirect line string, offset: 0x.*\): .* ++ ++ The File Name Table \(offset 0x.*, lines 2, columns 2\): ++ Entry Dir Name ++ 0 0 \(indirect line string, offset: 0x.*\): dwarf5-line-2.S ++ 1 0 \(indirect line string, offset: 0x.*\): dwarf5-line-2.S ++ ++ Line Number Statements: ++ \[0x.*\] Extended opcode 2: set Address to 0x0 ++ \[0x.*\] Special opcode 7: advance Address by 0 to 0x0 and Line by 2 to 3 ++ \[0x.*\] Advance PC by 1 to 0x1 ++ \[0x.*\] Extended opcode 1: End of Sequence ++ ++ +diff --git a/gas/testsuite/gas/i386/dwarf5-line-3.s b/gas/testsuite/gas/i386/dwarf5-line-3.s +new file mode 100644 +index 00000000000..52e259d1033 +--- /dev/null ++++ b/gas/testsuite/gas/i386/dwarf5-line-3.s +@@ -0,0 +1,10 @@ ++# 1 "foo.S" ++# 1 "" ++# 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 00000000000..04e8706d291 +--- /dev/null ++++ b/gas/testsuite/gas/i386/enqcmd-16bit.d +@@ -0,0 +1,21 @@ ++#as: -I${srcdir}/$subdir ++#objdump: -dw -Mi8086 ++#name: i386 16-bit ENQCMD[S] insns ++ ++.*: +file format .* ++ ++Disassembly of section .text: ++ ++0+ <_start>: ++ +[a-f0-9]+: 67 0f 38 f9 01 movdiri %eax,\(%ecx\) ++ +[a-f0-9]+: 67 66 0f 38 f8 01 movdir64b \(%ecx\),%eax ++ +[a-f0-9]+: 66 0f 38 f8 04 movdir64b \(%si\),%ax ++ +[a-f0-9]+: 66 0f 38 f8 0e 00 00 movdir64b 0x0,%cx ++ +[a-f0-9]+: 66 0f 38 f8 0e 34 12 movdir64b 0x1234,%cx ++ +[a-f0-9]+: 67 0f 38 f9 01 movdiri %eax,\(%ecx\) ++ +[a-f0-9]+: 67 0f 38 f9 01 movdiri %eax,\(%ecx\) ++ +[a-f0-9]+: 67 66 0f 38 f8 01 movdir64b \(%ecx\),%eax ++ +[a-f0-9]+: 66 0f 38 f8 04 movdir64b \(%si\),%ax ++ +[a-f0-9]+: 66 0f 38 f8 0e 00 00 movdir64b 0x0,%cx ++ +[a-f0-9]+: 66 0f 38 f8 0e 34 12 movdir64b 0x1234,%cx ++#pass +diff --git a/gas/testsuite/gas/i386/enqcmd-16bit.s b/gas/testsuite/gas/i386/enqcmd-16bit.s +new file mode 100644 +index 00000000000..1f21cec3634 +--- /dev/null ++++ b/gas/testsuite/gas/i386/enqcmd-16bit.s +@@ -0,0 +1,4 @@ ++# Check ENQCMD[S] 16-bit instructions ++ ++ .code16 ++.include "movdir.s" +diff --git a/gas/testsuite/gas/i386/enqcmd-intel.d b/gas/testsuite/gas/i386/enqcmd-intel.d +index b38c3ed6ee1..e1d30dacd70 100644 +--- a/gas/testsuite/gas/i386/enqcmd-intel.d ++++ b/gas/testsuite/gas/i386/enqcmd-intel.d +@@ -8,13 +8,21 @@ + + Disassembly of section \.text: + +-00000000 <_start>: +-[ ]*[a-f0-9]+:[ ]*f2 0f 38 f8 01[ ]*enqcmd eax,\[ecx\] +-[ ]*[a-f0-9]+:[ ]*67 f2 0f 38 f8 04[ ]*enqcmd ax,\[si\] +-[ ]*[a-f0-9]+:[ ]*f3 0f 38 f8 01[ ]*enqcmds eax,\[ecx\] +-[ ]*[a-f0-9]+:[ ]*67 f3 0f 38 f8 04[ ]*enqcmds ax,\[si\] +-[ ]*[a-f0-9]+:[ ]*f2 0f 38 f8 01[ ]*enqcmd eax,\[ecx\] +-[ ]*[a-f0-9]+:[ ]*67 f2 0f 38 f8 04[ ]*enqcmd ax,\[si\] +-[ ]*[a-f0-9]+:[ ]*f3 0f 38 f8 01[ ]*enqcmds eax,\[ecx\] +-[ ]*[a-f0-9]+:[ ]*67 f3 0f 38 f8 04[ ]*enqcmds ax,\[si\] ++0+ <_start>: ++ +[a-f0-9]+: f2 0f 38 f8 01 enqcmd eax,\[ecx\] ++ +[a-f0-9]+: 67 f2 0f 38 f8 04 enqcmd ax,\[si\] ++ +[a-f0-9]+: f3 0f 38 f8 01 enqcmds eax,\[ecx\] ++ +[a-f0-9]+: 67 f3 0f 38 f8 04 enqcmds ax,\[si\] ++ +[a-f0-9]+: 67 f2 0f 38 f8 0e 00 00 enqcmd cx,ds:0x0 ++ +[a-f0-9]+: 67 f2 0f 38 f8 0e 34 12 enqcmd cx,ds:0x1234 ++ +[a-f0-9]+: 67 f3 0f 38 f8 0e 00 00 enqcmds cx,ds:0x0 ++ +[a-f0-9]+: 67 f3 0f 38 f8 0e 34 12 enqcmds cx,ds:0x1234 ++ +[a-f0-9]+: f2 0f 38 f8 01 enqcmd eax,\[ecx\] ++ +[a-f0-9]+: 67 f2 0f 38 f8 04 enqcmd ax,\[si\] ++ +[a-f0-9]+: f3 0f 38 f8 01 enqcmds eax,\[ecx\] ++ +[a-f0-9]+: 67 f3 0f 38 f8 04 enqcmds ax,\[si\] ++ +[a-f0-9]+: 67 f2 0f 38 f8 0e 00 00 enqcmd cx,ds:0x0 ++ +[a-f0-9]+: 67 f2 0f 38 f8 0e 34 12 enqcmd cx,ds:0x1234 ++ +[a-f0-9]+: 67 f3 0f 38 f8 0e 00 00 enqcmds cx,ds:0x0 ++ +[a-f0-9]+: 67 f3 0f 38 f8 0e 34 12 enqcmds cx,ds:0x1234 + #pass +diff --git a/gas/testsuite/gas/i386/enqcmd.d b/gas/testsuite/gas/i386/enqcmd.d +index c601185ba32..99b9c0a7299 100644 +--- a/gas/testsuite/gas/i386/enqcmd.d ++++ b/gas/testsuite/gas/i386/enqcmd.d +@@ -8,13 +8,21 @@ + + Disassembly of section \.text: + +-00000000 <_start>: +-[ ]*[a-f0-9]+:[ ]*f2 0f 38 f8 01[ ]*enqcmd \(%ecx\),%eax +-[ ]*[a-f0-9]+:[ ]*67 f2 0f 38 f8 04[ ]*enqcmd \(%si\),%ax +-[ ]*[a-f0-9]+:[ ]*f3 0f 38 f8 01[ ]*enqcmds \(%ecx\),%eax +-[ ]*[a-f0-9]+:[ ]*67 f3 0f 38 f8 04[ ]*enqcmds \(%si\),%ax +-[ ]*[a-f0-9]+:[ ]*f2 0f 38 f8 01[ ]*enqcmd \(%ecx\),%eax +-[ ]*[a-f0-9]+:[ ]*67 f2 0f 38 f8 04[ ]*enqcmd \(%si\),%ax +-[ ]*[a-f0-9]+:[ ]*f3 0f 38 f8 01[ ]*enqcmds \(%ecx\),%eax +-[ ]*[a-f0-9]+:[ ]*67 f3 0f 38 f8 04[ ]*enqcmds \(%si\),%ax ++0+ <_start>: ++ +[a-f0-9]+: f2 0f 38 f8 01 enqcmd \(%ecx\),%eax ++ +[a-f0-9]+: 67 f2 0f 38 f8 04 enqcmd \(%si\),%ax ++ +[a-f0-9]+: f3 0f 38 f8 01 enqcmds \(%ecx\),%eax ++ +[a-f0-9]+: 67 f3 0f 38 f8 04 enqcmds \(%si\),%ax ++ +[a-f0-9]+: 67 f2 0f 38 f8 0e 00 00 enqcmd 0x0,%cx ++ +[a-f0-9]+: 67 f2 0f 38 f8 0e 34 12 enqcmd 0x1234,%cx ++ +[a-f0-9]+: 67 f3 0f 38 f8 0e 00 00 enqcmds 0x0,%cx ++ +[a-f0-9]+: 67 f3 0f 38 f8 0e 34 12 enqcmds 0x1234,%cx ++ +[a-f0-9]+: f2 0f 38 f8 01 enqcmd \(%ecx\),%eax ++ +[a-f0-9]+: 67 f2 0f 38 f8 04 enqcmd \(%si\),%ax ++ +[a-f0-9]+: f3 0f 38 f8 01 enqcmds \(%ecx\),%eax ++ +[a-f0-9]+: 67 f3 0f 38 f8 04 enqcmds \(%si\),%ax ++ +[a-f0-9]+: 67 f2 0f 38 f8 0e 00 00 enqcmd 0x0,%cx ++ +[a-f0-9]+: 67 f2 0f 38 f8 0e 34 12 enqcmd 0x1234,%cx ++ +[a-f0-9]+: 67 f3 0f 38 f8 0e 00 00 enqcmds 0x0,%cx ++ +[a-f0-9]+: 67 f3 0f 38 f8 0e 34 12 enqcmds 0x1234,%cx + #pass +diff --git a/gas/testsuite/gas/i386/enqcmd.s b/gas/testsuite/gas/i386/enqcmd.s +index 0a23b25a6ff..f7195fa7236 100644 +--- a/gas/testsuite/gas/i386/enqcmd.s ++++ b/gas/testsuite/gas/i386/enqcmd.s +@@ -7,9 +7,17 @@ _start: + enqcmd (%si),%ax + enqcmds (%ecx),%eax + enqcmds (%si),%ax ++ enqcmd foo, %cx ++ enqcmd 0x1234, %cx ++ enqcmds foo, %cx ++ enqcmds 0x1234, %cx + + .intel_syntax noprefix + enqcmd eax,[ecx] + enqcmd ax,[si] + enqcmds eax,[ecx] + enqcmds ax,[si] ++ enqcmd cx,ds:foo ++ enqcmd cx,ds:0x1234 ++ enqcmds cx,ds:foo ++ enqcmds cx,ds:0x1234 +diff --git a/gas/testsuite/gas/i386/evex-no-scale-64.d b/gas/testsuite/gas/i386/evex-no-scale-64.d +index 6c9f68faf23..33623656eef 100644 +--- a/gas/testsuite/gas/i386/evex-no-scale-64.d ++++ b/gas/testsuite/gas/i386/evex-no-scale-64.d +@@ -10,5 +10,5 @@ Disassembly of section .text: + +[a-f0-9]+: 62 f1 7c 48 28 04 05 40 00 00 00 vmovaps 0x40\(,%rax,1\),%zmm0 + +[a-f0-9]+: 62 f1 7c 48 28 04 25 40 00 00 00 vmovaps 0x40,%zmm0 + +[a-f0-9]+: 67 62 f1 7c 48 28 04 05 40 00 00 00 vmovaps 0x40\(,%eax,1\),%zmm0 +- +[a-f0-9]+: 67 62 f1 7c 48 28 04 25 40 00 00 00 vmovaps 0x40,%zmm0 ++ +[a-f0-9]+: 67 62 f1 7c 48 28 04 25 40 00 00 00 vmovaps 0x40\(,%eiz,1\),%zmm0 + +[a-f0-9]+: 62 f1 7c 48 28 04 25 40 00 00 00 vmovaps 0x40,%zmm0 +diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp +index 6563aae246c..3039c36a30a 100644 +--- a/gas/testsuite/gas/i386/i386.exp ++++ b/gas/testsuite/gas/i386/i386.exp +@@ -475,9 +475,11 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]] + run_dump_test "cldemote-intel" + run_dump_test "movdir" + run_dump_test "movdir-intel" ++ run_dump_test "movdir-16bit" + run_list_test "movdir64b-reg" + run_dump_test "enqcmd" + run_dump_test "enqcmd-intel" ++ run_dump_test "enqcmd-16bit" + run_list_test "enqcmd-inval" + run_dump_test "serialize" + run_dump_test "tsxldtrk" +@@ -594,6 +596,10 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]] + run_dump_test "dwarf2-line-2" + run_dump_test "dwarf2-line-3" + run_dump_test "dwarf2-line-4" ++ run_dump_test "dwarf4-line-1" ++ run_dump_test "dwarf5-line-1" ++ run_dump_test "dwarf5-line-2" ++ run_dump_test "dwarf5-line-3" + + run_dump_test "dw2-compress-2" + run_dump_test "dw2-compressed-2" +diff --git a/gas/testsuite/gas/i386/movdir-16bit.d b/gas/testsuite/gas/i386/movdir-16bit.d +new file mode 100644 +index 00000000000..ac5d82507f1 +--- /dev/null ++++ b/gas/testsuite/gas/i386/movdir-16bit.d +@@ -0,0 +1,21 @@ ++#as: -I${srcdir}/$subdir ++#objdump: -dw -Mi8086 ++#name: i386 16-bit MOVDIR[I,64B] insns ++ ++.*: +file format .* ++ ++Disassembly of section .text: ++ ++0+ <_start>: ++ +[a-f0-9]+: 67 0f 38 f9 01 movdiri %eax,\(%ecx\) ++ +[a-f0-9]+: 67 66 0f 38 f8 01 movdir64b \(%ecx\),%eax ++ +[a-f0-9]+: 66 0f 38 f8 04 movdir64b \(%si\),%ax ++ +[a-f0-9]+: 66 0f 38 f8 0e 00 00 movdir64b 0x0,%cx ++ +[a-f0-9]+: 66 0f 38 f8 0e 34 12 movdir64b 0x1234,%cx ++ +[a-f0-9]+: 67 0f 38 f9 01 movdiri %eax,\(%ecx\) ++ +[a-f0-9]+: 67 0f 38 f9 01 movdiri %eax,\(%ecx\) ++ +[a-f0-9]+: 67 66 0f 38 f8 01 movdir64b \(%ecx\),%eax ++ +[a-f0-9]+: 66 0f 38 f8 04 movdir64b \(%si\),%ax ++ +[a-f0-9]+: 66 0f 38 f8 0e 00 00 movdir64b 0x0,%cx ++ +[a-f0-9]+: 66 0f 38 f8 0e 34 12 movdir64b 0x1234,%cx ++#pass +diff --git a/gas/testsuite/gas/i386/movdir-16bit.s b/gas/testsuite/gas/i386/movdir-16bit.s +new file mode 100644 +index 00000000000..27f5fda5a58 +--- /dev/null ++++ b/gas/testsuite/gas/i386/movdir-16bit.s +@@ -0,0 +1,4 @@ ++# Check MOVDIR[I,64B] 16-bit instructions ++ ++ .code16 ++.include "movdir.s" +diff --git a/gas/testsuite/gas/i386/movdir-intel.d b/gas/testsuite/gas/i386/movdir-intel.d +index 04f58a7892e..56f4fa929a7 100644 +--- a/gas/testsuite/gas/i386/movdir-intel.d ++++ b/gas/testsuite/gas/i386/movdir-intel.d +@@ -8,19 +8,16 @@ + + Disassembly of section \.text: + +-00000000 <_start>: +-[ ]*[a-f0-9]+:[ ]*0f 38 f9 01[ ]*movdiri DWORD PTR \[ecx\],eax +-[ ]*[a-f0-9]+:[ ]*66 0f 38 f8 01[ ]*movdir64b eax,\[ecx\] +-[ ]*[a-f0-9]+:[ ]*67 66 0f 38 f8 04[ ]*movdir64b ax,\[si\] +-[ ]*[a-f0-9]+:[ ]*0f 38 f9 01[ ]*movdiri DWORD PTR \[ecx\],eax +-[ ]*[a-f0-9]+:[ ]*0f 38 f9 01[ ]*movdiri DWORD PTR \[ecx\],eax +-[ ]*[a-f0-9]+:[ ]*66 0f 38 f8 01[ ]*movdir64b eax,\[ecx\] +-[ ]*[a-f0-9]+:[ ]*67 66 0f 38 f8 04[ ]*movdir64b ax,\[si\] +-[ ]*[a-f0-9]+:[ ]*67 0f 38 f9 01[ ]*movdiri DWORD PTR \[bx\+di\],eax +-[ ]*[a-f0-9]+:[ ]*67 66 0f 38 f8 01[ ]*movdir64b ax,\[bx\+di\] +-[ ]*[a-f0-9]+:[ ]*66 0f 38 f8 04 67[ ]*movdir64b eax,\[edi\+eiz\*2\] +-[ ]*[a-f0-9]+:[ ]*0f 38 f9 01[ ]*movdiri DWORD PTR \[ecx\],eax +-[ ]*[a-f0-9]+:[ ]*67 0f 38 f9 01[ ]*movdiri DWORD PTR \[bx\+di\],eax +-[ ]*[a-f0-9]+:[ ]*67 66 0f 38 f8 01[ ]*movdir64b ax,\[bx\+di\] +-[ ]*[a-f0-9]+:[ ]*66 0f 38 f8 04 90[ ]*movdir64b eax,\[eax\+edx\*4\] ++0+ <_start>: ++ +[a-f0-9]+: 0f 38 f9 01 movdiri DWORD PTR \[ecx\],eax ++ +[a-f0-9]+: 66 0f 38 f8 01 movdir64b eax,\[ecx\] ++ +[a-f0-9]+: 67 66 0f 38 f8 04 movdir64b ax,\[si\] ++ +[a-f0-9]+: 67 66 0f 38 f8 0e 00 00 movdir64b cx,ds:0x0 ++ +[a-f0-9]+: 67 66 0f 38 f8 0e 34 12 movdir64b cx,ds:0x1234 ++ +[a-f0-9]+: 0f 38 f9 01 movdiri DWORD PTR \[ecx\],eax ++ +[a-f0-9]+: 0f 38 f9 01 movdiri DWORD PTR \[ecx\],eax ++ +[a-f0-9]+: 66 0f 38 f8 01 movdir64b eax,\[ecx\] ++ +[a-f0-9]+: 67 66 0f 38 f8 04 movdir64b ax,\[si\] ++ +[a-f0-9]+: 67 66 0f 38 f8 0e 00 00 movdir64b cx,ds:0x0 ++ +[a-f0-9]+: 67 66 0f 38 f8 0e 34 12 movdir64b cx,ds:0x1234 + #pass +diff --git a/gas/testsuite/gas/i386/movdir.d b/gas/testsuite/gas/i386/movdir.d +index 192dad9920e..a8f324bddec 100644 +--- a/gas/testsuite/gas/i386/movdir.d ++++ b/gas/testsuite/gas/i386/movdir.d +@@ -8,19 +8,16 @@ + + Disassembly of section \.text: + +-00000000 <_start>: +-[ ]*[a-f0-9]+:[ ]*0f 38 f9 01[ ]*movdiri %eax,\(%ecx\) +-[ ]*[a-f0-9]+:[ ]*66 0f 38 f8 01[ ]*movdir64b \(%ecx\),%eax +-[ ]*[a-f0-9]+:[ ]*67 66 0f 38 f8 04[ ]*movdir64b \(%si\),%ax +-[ ]*[a-f0-9]+:[ ]*0f 38 f9 01[ ]*movdiri %eax,\(%ecx\) +-[ ]*[a-f0-9]+:[ ]*0f 38 f9 01[ ]*movdiri %eax,\(%ecx\) +-[ ]*[a-f0-9]+:[ ]*66 0f 38 f8 01[ ]*movdir64b \(%ecx\),%eax +-[ ]*[a-f0-9]+:[ ]*67 66 0f 38 f8 04[ ]*movdir64b \(%si\),%ax +-[ ]*[a-f0-9]+:[ ]*67 0f 38 f9 01[ ]*movdiri %eax,\(%bx,%di\) +-[ ]*[a-f0-9]+:[ ]*67 66 0f 38 f8 01[ ]*movdir64b \(%bx,%di\),%ax +-[ ]*[a-f0-9]+:[ ]*66 0f 38 f8 04 67[ ]*movdir64b \(%edi,%eiz,2\),%eax +-[ ]*[a-f0-9]+:[ ]*0f 38 f9 01[ ]*movdiri %eax,\(%ecx\) +-[ ]*[a-f0-9]+:[ ]*67 0f 38 f9 01[ ]*movdiri %eax,\(%bx,%di\) +-[ ]*[a-f0-9]+:[ ]*67 66 0f 38 f8 01[ ]*movdir64b \(%bx,%di\),%ax +-[ ]*[a-f0-9]+:[ ]*66 0f 38 f8 04 90[ ]*movdir64b \(%eax,%edx,4\),%eax ++0+ <_start>: ++ +[a-f0-9]+: 0f 38 f9 01 movdiri %eax,\(%ecx\) ++ +[a-f0-9]+: 66 0f 38 f8 01 movdir64b \(%ecx\),%eax ++ +[a-f0-9]+: 67 66 0f 38 f8 04 movdir64b \(%si\),%ax ++ +[a-f0-9]+: 67 66 0f 38 f8 0e 00 00 movdir64b 0x0,%cx ++ +[a-f0-9]+: 67 66 0f 38 f8 0e 34 12 movdir64b 0x1234,%cx ++ +[a-f0-9]+: 0f 38 f9 01 movdiri %eax,\(%ecx\) ++ +[a-f0-9]+: 0f 38 f9 01 movdiri %eax,\(%ecx\) ++ +[a-f0-9]+: 66 0f 38 f8 01 movdir64b \(%ecx\),%eax ++ +[a-f0-9]+: 67 66 0f 38 f8 04 movdir64b \(%si\),%ax ++ +[a-f0-9]+: 67 66 0f 38 f8 0e 00 00 movdir64b 0x0,%cx ++ +[a-f0-9]+: 67 66 0f 38 f8 0e 34 12 movdir64b 0x1234,%cx + #pass +diff --git a/gas/testsuite/gas/i386/movdir.s b/gas/testsuite/gas/i386/movdir.s +index 29c381ca23c..00c57db141a 100644 +--- a/gas/testsuite/gas/i386/movdir.s ++++ b/gas/testsuite/gas/i386/movdir.s +@@ -3,19 +3,16 @@ + .allow_index_reg + .text + _start: +- .rept 2 + movdiri %eax, (%ecx) + movdir64b (%ecx),%eax + movdir64b (%si),%ax ++ movdir64b foo, %cx ++ movdir64b 0x1234, %cx + + .intel_syntax noprefix + movdiri [ecx], eax + movdiri dword ptr [ecx], eax + movdir64b eax,[ecx] + movdir64b ax,[si] +- +- .att_syntax prefix +- .code16 +- .endr +- +- nop ++ movdir64b cx,ds:foo ++ movdir64b cx,ds:0x1234 +diff --git a/gas/testsuite/gas/i386/x86-64-addr32-intel.d b/gas/testsuite/gas/i386/x86-64-addr32-intel.d +index 7a25d40162c..0988457b34c 100644 +--- a/gas/testsuite/gas/i386/x86-64-addr32-intel.d ++++ b/gas/testsuite/gas/i386/x86-64-addr32-intel.d +@@ -11,15 +11,15 @@ Disassembly of section .text: + [ ]*[a-f0-9]+: 67 48 8d 80 00 00 00 00[ ]+lea[ ]+rax,\[eax\+0x0\].* + [ ]*[a-f0-9]+: 67 49 8d 80 00 00 00 00[ ]+lea[ ]+rax,\[r8d\+0x0\].* + [ ]*[a-f0-9]+: 67 48 8d 05 00 00 00 00[ ]+lea[ ]+rax,\[eip\+0x0\].* +-[ ]*[a-f0-9]+: 67 48 8d 04 25 00 00 00 00 lea[ ]+rax,ds:0x0 .* ++[ ]*[a-f0-9]+: 67 48 8d 04 25 00 00 00 00 lea[ ]+rax,\[eiz\*1\+0x0\].* + [ ]*[a-f0-9]+: 67 a0 98 08 60 00 addr32 mov al,ds:0x600898 + [ ]*[a-f0-9]+: 67 66 a1 98 08 60 00 addr32 mov ax,ds:0x600898 + [ ]*[a-f0-9]+: 67 a1 98 08 60 00 addr32 mov eax,ds:0x600898 + [ ]*[a-f0-9]+: 67 48 a1 98 08 60 00 addr32 mov rax,ds:0x600898 + [ ]*[a-f0-9]+: 67 48 a1 98 08 80 00 addr32 mov rax,ds:0x800898 +-[ ]*[a-f0-9]+: 67 48 8b 1c 25 98 08 80 00 mov[ ]+rbx,QWORD PTR ds:0x800898 ++[ ]*[a-f0-9]+: 67 48 8b 1c 25 98 08 80 00 mov[ ]+rbx,QWORD PTR \[eiz\*1\+0x800898\] + [ ]*[a-f0-9]+: 67 48 a1 ef cd ab 89 addr32 mov rax,ds:0x89abcdef +-[ ]*[a-f0-9]+: 67 48 8b 1c 25 ef cd ab 89 mov[ ]+rbx,QWORD PTR ds:0x89abcdef ++[ ]*[a-f0-9]+: 67 48 8b 1c 25 ef cd ab 89 mov[ ]+rbx,QWORD PTR \[eiz\*1\+0x89abcdef\] + [ ]*[a-f0-9]+: 67 48 b8 ef cd ab 89 00 00 00 00 addr32 movabs rax,0x89abcdef + [ ]*[a-f0-9]+: 67 48 bb ef cd ab 89 00 00 00 00 addr32 movabs rbx,0x89abcdef + [ ]*[a-f0-9]+: 67 a2 98 08 60 00 addr32 mov ds:0x600898,al +@@ -27,9 +27,9 @@ Disassembly of section .text: + [ ]*[a-f0-9]+: 67 a3 98 08 60 00 addr32 mov ds:0x600898,eax + [ ]*[a-f0-9]+: 67 48 a3 98 08 60 00 addr32 mov ds:0x600898,rax + [ ]*[a-f0-9]+: 67 48 a3 98 08 80 00 addr32 mov ds:0x800898,rax +-[ ]*[a-f0-9]+: 67 48 89 1c 25 98 08 80 00 mov[ ]+QWORD PTR ds:0x800898,rbx ++[ ]*[a-f0-9]+: 67 48 89 1c 25 98 08 80 00 mov[ ]+QWORD PTR \[eiz\*1\+0x800898\],rbx + [ ]*[a-f0-9]+: 67 48 a3 ef cd ab 89 addr32 mov ds:0x89abcdef,rax +-[ ]*[a-f0-9]+: 67 48 89 1c 25 ef cd ab 89 mov[ ]+QWORD PTR ds:0x89abcdef,rbx +-[ ]*[a-f0-9]+: 67 89 04 25 11 22 33 ff mov[ ]+DWORD PTR ds:0xff332211,eax ++[ ]*[a-f0-9]+: 67 48 89 1c 25 ef cd ab 89 mov[ ]+QWORD PTR \[eiz\*1\+0x89abcdef\],rbx ++[ ]*[a-f0-9]+: 67 89 04 25 11 22 33 ff mov[ ]+DWORD PTR \[eiz\*1\+0xff332211\],eax + [ ]*[a-f0-9]+: 67 89 04 65 11 22 33 ff mov[ ]+DWORD PTR \[eiz\*2\+0xff332211\],eax + #pass +diff --git a/gas/testsuite/gas/i386/x86-64-addr32.d b/gas/testsuite/gas/i386/x86-64-addr32.d +index c513f0dd8e1..d9481a7439e 100644 +--- a/gas/testsuite/gas/i386/x86-64-addr32.d ++++ b/gas/testsuite/gas/i386/x86-64-addr32.d +@@ -10,15 +10,15 @@ Disassembly of section .text: + [ ]*[a-f0-9]+: 67 48 8d 80 00 00 00 00[ ]+lea[ ]+0x0\(%eax\),%rax.* + [ ]*[a-f0-9]+: 67 49 8d 80 00 00 00 00[ ]+lea[ ]+0x0\(%r8d\),%rax.* + [ ]*[a-f0-9]+: 67 48 8d 05 00 00 00 00[ ]+lea[ ]+0x0\(%eip\),%rax.* +-[ ]*[a-f0-9]+: 67 48 8d 04 25 00 00 00 00[ ]+lea[ ]+0x0,%rax.* ++[ ]*[a-f0-9]+: 67 48 8d 04 25 00 00 00 00[ ]+lea[ ]+0x0\(,%eiz,1\),%rax.* + [ ]*[a-f0-9]+: 67 a0 98 08 60 00 addr32 mov 0x600898,%al + [ ]*[a-f0-9]+: 67 66 a1 98 08 60 00 addr32 mov 0x600898,%ax + [ ]*[a-f0-9]+: 67 a1 98 08 60 00 addr32 mov 0x600898,%eax + [ ]*[a-f0-9]+: 67 48 a1 98 08 60 00 addr32 mov 0x600898,%rax + [ ]*[a-f0-9]+: 67 48 a1 98 08 80 00 addr32 mov 0x800898,%rax +-[ ]*[a-f0-9]+: 67 48 8b 1c 25 98 08 80 00 mov[ ]+0x800898,%rbx ++[ ]*[a-f0-9]+: 67 48 8b 1c 25 98 08 80 00 mov[ ]+0x800898\(,%eiz,1\),%rbx + [ ]*[a-f0-9]+: 67 48 a1 ef cd ab 89 addr32 mov 0x89abcdef,%rax +-[ ]*[a-f0-9]+: 67 48 8b 1c 25 ef cd ab 89 mov[ ]+0x89abcdef,%rbx ++[ ]*[a-f0-9]+: 67 48 8b 1c 25 ef cd ab 89 mov[ ]+0x89abcdef\(,%eiz,1\),%rbx + [ ]*[a-f0-9]+: 67 48 b8 ef cd ab 89 00 00 00 00 addr32 movabs \$0x89abcdef,%rax + [ ]*[a-f0-9]+: 67 48 bb ef cd ab 89 00 00 00 00 addr32 movabs \$0x89abcdef,%rbx + [ ]*[a-f0-9]+: 67 a2 98 08 60 00 addr32 mov %al,0x600898 +@@ -26,9 +26,9 @@ Disassembly of section .text: + [ ]*[a-f0-9]+: 67 a3 98 08 60 00 addr32 mov %eax,0x600898 + [ ]*[a-f0-9]+: 67 48 a3 98 08 60 00 addr32 mov %rax,0x600898 + [ ]*[a-f0-9]+: 67 48 a3 98 08 80 00 addr32 mov %rax,0x800898 +-[ ]*[a-f0-9]+: 67 48 89 1c 25 98 08 80 00 mov[ ]+%rbx,0x800898 ++[ ]*[a-f0-9]+: 67 48 89 1c 25 98 08 80 00 mov[ ]+%rbx,0x800898\(,%eiz,1\) + [ ]*[a-f0-9]+: 67 48 a3 ef cd ab 89 addr32 mov %rax,0x89abcdef +-[ ]*[a-f0-9]+: 67 48 89 1c 25 ef cd ab 89 mov[ ]+%rbx,0x89abcdef +-[ ]*[a-f0-9]+: 67 89 04 25 11 22 33 ff mov[ ]+%eax,0xff332211 ++[ ]*[a-f0-9]+: 67 48 89 1c 25 ef cd ab 89 mov[ ]+%rbx,0x89abcdef\(,%eiz,1\) ++[ ]*[a-f0-9]+: 67 89 04 25 11 22 33 ff mov[ ]+%eax,0xff332211\(,%eiz,1\) + [ ]*[a-f0-9]+: 67 89 04 65 11 22 33 ff mov[ ]+%eax,0xff332211\(,%eiz,2\) + #pass +diff --git a/gas/testsuite/gas/i386/x86-64-enqcmd-intel.d b/gas/testsuite/gas/i386/x86-64-enqcmd-intel.d +index e483d570b92..d8dc7facba3 100644 +--- a/gas/testsuite/gas/i386/x86-64-enqcmd-intel.d ++++ b/gas/testsuite/gas/i386/x86-64-enqcmd-intel.d +@@ -9,12 +9,32 @@ + Disassembly of section \.text: + + 0+ <_start>: +-[ ]*[a-f0-9]+:[ ]*f2 0f 38 f8 01[ ]*enqcmd rax,\[rcx\] +-[ ]*[a-f0-9]+:[ ]*67 f2 0f 38 f8 01[ ]*enqcmd eax,\[ecx\] +-[ ]*[a-f0-9]+:[ ]*f3 0f 38 f8 01[ ]*enqcmds rax,\[rcx\] +-[ ]*[a-f0-9]+:[ ]*67 f3 0f 38 f8 01[ ]*enqcmds eax,\[ecx\] +-[ ]*[a-f0-9]+:[ ]*f2 0f 38 f8 01[ ]*enqcmd rax,\[rcx\] +-[ ]*[a-f0-9]+:[ ]*67 f2 0f 38 f8 01[ ]*enqcmd eax,\[ecx\] +-[ ]*[a-f0-9]+:[ ]*f3 0f 38 f8 01[ ]*enqcmds rax,\[rcx\] +-[ ]*[a-f0-9]+:[ ]*67 f3 0f 38 f8 01[ ]*enqcmds eax,\[ecx\] ++ +[a-f0-9]+: f2 0f 38 f8 01 enqcmd rax,\[rcx\] ++ +[a-f0-9]+: 67 f2 0f 38 f8 01 enqcmd eax,\[ecx\] ++ +[a-f0-9]+: f3 0f 38 f8 01 enqcmds rax,\[rcx\] ++ +[a-f0-9]+: 67 f3 0f 38 f8 01 enqcmds eax,\[ecx\] ++ +[a-f0-9]+: f2 0f 38 f8 0d 00 00 00 00 enqcmd rcx,\[rip\+0x0\] #.* ++ +[a-f0-9]+: 67 f2 0f 38 f8 0d 00 00 00 00 enqcmd ecx,\[eip\+0x0\] #.* ++ +[a-f0-9]+: 67 f2 0f 38 f8 0d 00 00 00 00 enqcmd ecx,\[eip\+0x0\] #.* ++ +[a-f0-9]+: f3 0f 38 f8 0d 00 00 00 00 enqcmds rcx,\[rip\+0x0\] #.* ++ +[a-f0-9]+: 67 f3 0f 38 f8 0d 00 00 00 00 enqcmds ecx,\[eip\+0x0\] #.* ++ +[a-f0-9]+: 67 f3 0f 38 f8 0d 00 00 00 00 enqcmds ecx,\[eip\+0x0\] #.* ++ +[a-f0-9]+: 67 f2 0f 38 f8 0c 25 00 00 00 00 enqcmd ecx,\[eiz\*1\+0x0\] ++ +[a-f0-9]+: 67 f2 0f 38 f8 0c 25 78 56 34 12 enqcmd ecx,\[eiz\*1\+0x12345678\] ++ +[a-f0-9]+: 67 f3 0f 38 f8 0c 25 00 00 00 00 enqcmds ecx,\[eiz\*1\+0x0\] ++ +[a-f0-9]+: 67 f3 0f 38 f8 0c 25 78 56 34 12 enqcmds ecx,\[eiz\*1\+0x12345678\] ++ +[a-f0-9]+: f2 0f 38 f8 01 enqcmd rax,\[rcx\] ++ +[a-f0-9]+: 67 f2 0f 38 f8 01 enqcmd eax,\[ecx\] ++ +[a-f0-9]+: f3 0f 38 f8 01 enqcmds rax,\[rcx\] ++ +[a-f0-9]+: 67 f3 0f 38 f8 01 enqcmds eax,\[ecx\] ++ +[a-f0-9]+: f2 0f 38 f8 0d 00 00 00 00 enqcmd rcx,\[rip\+0x0\] #.* ++ +[a-f0-9]+: 67 f2 0f 38 f8 0d 00 00 00 00 enqcmd ecx,\[eip\+0x0\] #.* ++ +[a-f0-9]+: 67 f2 0f 38 f8 0d 00 00 00 00 enqcmd ecx,\[eip\+0x0\] #.* ++ +[a-f0-9]+: f3 0f 38 f8 0d 00 00 00 00 enqcmds rcx,\[rip\+0x0\] #.* ++ +[a-f0-9]+: 67 f3 0f 38 f8 0d 00 00 00 00 enqcmds ecx,\[eip\+0x0\] #.* ++ +[a-f0-9]+: 67 f3 0f 38 f8 0d 00 00 00 00 enqcmds ecx,\[eip\+0x0\] #.* ++ +[a-f0-9]+: 67 f2 0f 38 f8 0c 25 00 00 00 00 enqcmd ecx,\[eiz\*1\+0x0\] ++ +[a-f0-9]+: 67 f2 0f 38 f8 0c 25 78 56 34 12 enqcmd ecx,\[eiz\*1\+0x12345678\] ++ +[a-f0-9]+: 67 f3 0f 38 f8 0c 25 00 00 00 00 enqcmds ecx,\[eiz\*1\+0x0\] ++ +[a-f0-9]+: 67 f3 0f 38 f8 0c 25 78 56 34 12 enqcmds ecx,\[eiz\*1\+0x12345678\] + #pass +diff --git a/gas/testsuite/gas/i386/x86-64-enqcmd.d b/gas/testsuite/gas/i386/x86-64-enqcmd.d +index 337febf320f..e6f627ff09a 100644 +--- a/gas/testsuite/gas/i386/x86-64-enqcmd.d ++++ b/gas/testsuite/gas/i386/x86-64-enqcmd.d +@@ -9,12 +9,32 @@ + Disassembly of section \.text: + + 0+ <_start>: +-[ ]*[a-f0-9]+:[ ]*f2 0f 38 f8 01[ ]*enqcmd \(%rcx\),%rax +-[ ]*[a-f0-9]+:[ ]*67 f2 0f 38 f8 01[ ]*enqcmd \(%ecx\),%eax +-[ ]*[a-f0-9]+:[ ]*f3 0f 38 f8 01[ ]*enqcmds \(%rcx\),%rax +-[ ]*[a-f0-9]+:[ ]*67 f3 0f 38 f8 01[ ]*enqcmds \(%ecx\),%eax +-[ ]*[a-f0-9]+:[ ]*f2 0f 38 f8 01[ ]*enqcmd \(%rcx\),%rax +-[ ]*[a-f0-9]+:[ ]*67 f2 0f 38 f8 01[ ]*enqcmd \(%ecx\),%eax +-[ ]*[a-f0-9]+:[ ]*f3 0f 38 f8 01[ ]*enqcmds \(%rcx\),%rax +-[ ]*[a-f0-9]+:[ ]*67 f3 0f 38 f8 01[ ]*enqcmds \(%ecx\),%eax ++ +[a-f0-9]+: f2 0f 38 f8 01 enqcmd \(%rcx\),%rax ++ +[a-f0-9]+: 67 f2 0f 38 f8 01 enqcmd \(%ecx\),%eax ++ +[a-f0-9]+: f3 0f 38 f8 01 enqcmds \(%rcx\),%rax ++ +[a-f0-9]+: 67 f3 0f 38 f8 01 enqcmds \(%ecx\),%eax ++ +[a-f0-9]+: f2 0f 38 f8 0d 00 00 00 00 enqcmd 0x0\(%rip\),%rcx #.* ++ +[a-f0-9]+: 67 f2 0f 38 f8 0d 00 00 00 00 enqcmd 0x0\(%eip\),%ecx #.* ++ +[a-f0-9]+: 67 f2 0f 38 f8 0d 00 00 00 00 enqcmd 0x0\(%eip\),%ecx #.* ++ +[a-f0-9]+: f3 0f 38 f8 0d 00 00 00 00 enqcmds 0x0\(%rip\),%rcx #.* ++ +[a-f0-9]+: 67 f3 0f 38 f8 0d 00 00 00 00 enqcmds 0x0\(%eip\),%ecx #.* ++ +[a-f0-9]+: 67 f3 0f 38 f8 0d 00 00 00 00 enqcmds 0x0\(%eip\),%ecx #.* ++ +[a-f0-9]+: 67 f2 0f 38 f8 0c 25 00 00 00 00 enqcmd 0x0\(,%eiz,1\),%ecx ++ +[a-f0-9]+: 67 f2 0f 38 f8 0c 25 78 56 34 12 enqcmd 0x12345678\(,%eiz,1\),%ecx ++ +[a-f0-9]+: 67 f3 0f 38 f8 0c 25 00 00 00 00 enqcmds 0x0\(,%eiz,1\),%ecx ++ +[a-f0-9]+: 67 f3 0f 38 f8 0c 25 78 56 34 12 enqcmds 0x12345678\(,%eiz,1\),%ecx ++ +[a-f0-9]+: f2 0f 38 f8 01 enqcmd \(%rcx\),%rax ++ +[a-f0-9]+: 67 f2 0f 38 f8 01 enqcmd \(%ecx\),%eax ++ +[a-f0-9]+: f3 0f 38 f8 01 enqcmds \(%rcx\),%rax ++ +[a-f0-9]+: 67 f3 0f 38 f8 01 enqcmds \(%ecx\),%eax ++ +[a-f0-9]+: f2 0f 38 f8 0d 00 00 00 00 enqcmd 0x0\(%rip\),%rcx #.* ++ +[a-f0-9]+: 67 f2 0f 38 f8 0d 00 00 00 00 enqcmd 0x0\(%eip\),%ecx #.* ++ +[a-f0-9]+: 67 f2 0f 38 f8 0d 00 00 00 00 enqcmd 0x0\(%eip\),%ecx #.* ++ +[a-f0-9]+: f3 0f 38 f8 0d 00 00 00 00 enqcmds 0x0\(%rip\),%rcx #.* ++ +[a-f0-9]+: 67 f3 0f 38 f8 0d 00 00 00 00 enqcmds 0x0\(%eip\),%ecx #.* ++ +[a-f0-9]+: 67 f3 0f 38 f8 0d 00 00 00 00 enqcmds 0x0\(%eip\),%ecx #.* ++ +[a-f0-9]+: 67 f2 0f 38 f8 0c 25 00 00 00 00 enqcmd 0x0\(,%eiz,1\),%ecx ++ +[a-f0-9]+: 67 f2 0f 38 f8 0c 25 78 56 34 12 enqcmd 0x12345678\(,%eiz,1\),%ecx ++ +[a-f0-9]+: 67 f3 0f 38 f8 0c 25 00 00 00 00 enqcmds 0x0\(,%eiz,1\),%ecx ++ +[a-f0-9]+: 67 f3 0f 38 f8 0c 25 78 56 34 12 enqcmds 0x12345678\(,%eiz,1\),%ecx + #pass +diff --git a/gas/testsuite/gas/i386/x86-64-enqcmd.s b/gas/testsuite/gas/i386/x86-64-enqcmd.s +index f790b28fc20..a03a5ffc5f3 100644 +--- a/gas/testsuite/gas/i386/x86-64-enqcmd.s ++++ b/gas/testsuite/gas/i386/x86-64-enqcmd.s +@@ -7,9 +7,29 @@ _start: + enqcmd (%ecx),%eax + enqcmds (%rcx),%rax + enqcmds (%ecx),%eax ++ enqcmd foo(%rip),%rcx ++ enqcmd foo(%rip),%ecx ++ enqcmd foo(%eip),%ecx ++ enqcmds foo(%rip),%rcx ++ enqcmds foo(%rip),%ecx ++ enqcmds foo(%eip),%ecx ++ enqcmd foo, %ecx ++ enqcmd 0x12345678, %ecx ++ enqcmds foo, %ecx ++ enqcmds 0x12345678, %ecx + + .intel_syntax noprefix + enqcmd rax,[rcx] + enqcmd eax,[ecx] + enqcmds rax,[rcx] + enqcmds eax,[ecx] ++ enqcmd rcx,[rip+foo] ++ enqcmd ecx,[rip+foo] ++ enqcmd ecx,[eip+foo] ++ enqcmds rcx,[rip+foo] ++ enqcmds ecx,[rip+foo] ++ enqcmds ecx,[eip+foo] ++ enqcmd ecx,ds:foo ++ enqcmd ecx,ds:0x12345678 ++ enqcmds ecx,ds:foo ++ enqcmds ecx,ds:0x12345678 +diff --git a/gas/testsuite/gas/i386/x86-64-movdir-intel.d b/gas/testsuite/gas/i386/x86-64-movdir-intel.d +index 0f3a5abd610..a35bc6ca5d8 100644 +--- a/gas/testsuite/gas/i386/x86-64-movdir-intel.d ++++ b/gas/testsuite/gas/i386/x86-64-movdir-intel.d +@@ -9,13 +9,23 @@ + Disassembly of section \.text: + + 0+ <_start>: +-[ ]*[a-f0-9]+:[ ]*48 0f 38 f9 01[ ]*movdiri QWORD PTR \[rcx\],rax +-[ ]*[a-f0-9]+:[ ]*66 0f 38 f8 01[ ]*movdir64b rax,\[rcx\] +-[ ]*[a-f0-9]+:[ ]*67 66 0f 38 f8 01[ ]*movdir64b eax,\[ecx] +-[ ]*[a-f0-9]+:[ ]*0f 38 f9 01[ ]*movdiri DWORD PTR \[rcx\],eax +-[ ]*[a-f0-9]+:[ ]*48 0f 38 f9 01[ ]*movdiri QWORD PTR \[rcx\],rax +-[ ]*[a-f0-9]+:[ ]*0f 38 f9 01[ ]*movdiri DWORD PTR \[rcx\],eax +-[ ]*[a-f0-9]+:[ ]*48 0f 38 f9 01[ ]*movdiri QWORD PTR \[rcx\],rax +-[ ]*[a-f0-9]+:[ ]*66 0f 38 f8 01[ ]*movdir64b rax,\[rcx\] +-[ ]*[a-f0-9]+:[ ]*67 66 0f 38 f8 01[ ]*movdir64b eax,\[ecx\] ++ +[a-f0-9]+: 48 0f 38 f9 01 movdiri QWORD PTR \[rcx\],rax ++ +[a-f0-9]+: 66 0f 38 f8 01 movdir64b rax,\[rcx\] ++ +[a-f0-9]+: 67 66 0f 38 f8 01 movdir64b eax,\[ecx\] ++ +[a-f0-9]+: 66 0f 38 f8 0d 00 00 00 00 movdir64b rcx,\[rip\+0x0\] #.* ++ +[a-f0-9]+: 67 66 0f 38 f8 0d 00 00 00 00 movdir64b ecx,\[eip\+0x0\] #.* ++ +[a-f0-9]+: 67 66 0f 38 f8 0d 00 00 00 00 movdir64b ecx,\[eip\+0x0\] #.* ++ +[a-f0-9]+: 67 66 0f 38 f8 0c 25 00 00 00 00 movdir64b ecx,\[eiz\*1\+0x0\] ++ +[a-f0-9]+: 67 66 0f 38 f8 0c 25 78 56 34 12 movdir64b ecx,\[eiz\*1\+0x12345678\] ++ +[a-f0-9]+: 0f 38 f9 01 movdiri DWORD PTR \[rcx\],eax ++ +[a-f0-9]+: 48 0f 38 f9 01 movdiri QWORD PTR \[rcx\],rax ++ +[a-f0-9]+: 0f 38 f9 01 movdiri DWORD PTR \[rcx\],eax ++ +[a-f0-9]+: 48 0f 38 f9 01 movdiri QWORD PTR \[rcx\],rax ++ +[a-f0-9]+: 66 0f 38 f8 01 movdir64b rax,\[rcx\] ++ +[a-f0-9]+: 67 66 0f 38 f8 01 movdir64b eax,\[ecx\] ++ +[a-f0-9]+: 66 0f 38 f8 0d 00 00 00 00 movdir64b rcx,\[rip\+0x0\] #.* ++ +[a-f0-9]+: 67 66 0f 38 f8 0d 00 00 00 00 movdir64b ecx,\[eip\+0x0\] #.* ++ +[a-f0-9]+: 67 66 0f 38 f8 0d 00 00 00 00 movdir64b ecx,\[eip\+0x0\] #.* ++ +[a-f0-9]+: 67 66 0f 38 f8 0c 25 00 00 00 00 movdir64b ecx,\[eiz\*1\+0x0\] ++ +[a-f0-9]+: 67 66 0f 38 f8 0c 25 78 56 34 12 movdir64b ecx,\[eiz\*1\+0x12345678\] + #pass +diff --git a/gas/testsuite/gas/i386/x86-64-movdir.d b/gas/testsuite/gas/i386/x86-64-movdir.d +index 2deab8928e6..d65787177dc 100644 +--- a/gas/testsuite/gas/i386/x86-64-movdir.d ++++ b/gas/testsuite/gas/i386/x86-64-movdir.d +@@ -9,13 +9,23 @@ + Disassembly of section \.text: + + 0+ <_start>: +-[ ]*[a-f0-9]+:[ ]*48 0f 38 f9 01[ ]*movdiri %rax,\(%rcx\) +-[ ]*[a-f0-9]+:[ ]*66 0f 38 f8 01[ ]*movdir64b \(%rcx\),%rax +-[ ]*[a-f0-9]+:[ ]*67 66 0f 38 f8 01[ ]*movdir64b \(%ecx\),%eax +-[ ]*[a-f0-9]+:[ ]*0f 38 f9 01[ ]*movdiri %eax,\(%rcx\) +-[ ]*[a-f0-9]+:[ ]*48 0f 38 f9 01[ ]*movdiri %rax,\(%rcx\) +-[ ]*[a-f0-9]+:[ ]*0f 38 f9 01[ ]*movdiri %eax,\(%rcx\) +-[ ]*[a-f0-9]+:[ ]*48 0f 38 f9 01[ ]*movdiri %rax,\(%rcx\) +-[ ]*[a-f0-9]+:[ ]*66 0f 38 f8 01[ ]*movdir64b \(%rcx\),%rax +-[ ]*[a-f0-9]+:[ ]*67 66 0f 38 f8 01[ ]*movdir64b \(%ecx\),%eax ++ +[a-f0-9]+: 48 0f 38 f9 01 movdiri %rax,\(%rcx\) ++ +[a-f0-9]+: 66 0f 38 f8 01 movdir64b \(%rcx\),%rax ++ +[a-f0-9]+: 67 66 0f 38 f8 01 movdir64b \(%ecx\),%eax ++ +[a-f0-9]+: 66 0f 38 f8 0d 00 00 00 00 movdir64b 0x0\(%rip\),%rcx #.* ++ +[a-f0-9]+: 67 66 0f 38 f8 0d 00 00 00 00 movdir64b 0x0\(%eip\),%ecx #.* ++ +[a-f0-9]+: 67 66 0f 38 f8 0d 00 00 00 00 movdir64b 0x0\(%eip\),%ecx #.* ++ +[a-f0-9]+: 67 66 0f 38 f8 0c 25 00 00 00 00 movdir64b 0x0\(,%eiz,1\),%ecx ++ +[a-f0-9]+: 67 66 0f 38 f8 0c 25 78 56 34 12 movdir64b 0x12345678\(,%eiz,1\),%ecx ++ +[a-f0-9]+: 0f 38 f9 01 movdiri %eax,\(%rcx\) ++ +[a-f0-9]+: 48 0f 38 f9 01 movdiri %rax,\(%rcx\) ++ +[a-f0-9]+: 0f 38 f9 01 movdiri %eax,\(%rcx\) ++ +[a-f0-9]+: 48 0f 38 f9 01 movdiri %rax,\(%rcx\) ++ +[a-f0-9]+: 66 0f 38 f8 01 movdir64b \(%rcx\),%rax ++ +[a-f0-9]+: 67 66 0f 38 f8 01 movdir64b \(%ecx\),%eax ++ +[a-f0-9]+: 66 0f 38 f8 0d 00 00 00 00 movdir64b 0x0\(%rip\),%rcx #.* ++ +[a-f0-9]+: 67 66 0f 38 f8 0d 00 00 00 00 movdir64b 0x0\(%eip\),%ecx #.* ++ +[a-f0-9]+: 67 66 0f 38 f8 0d 00 00 00 00 movdir64b 0x0\(%eip\),%ecx #.* ++ +[a-f0-9]+: 67 66 0f 38 f8 0c 25 00 00 00 00 movdir64b 0x0\(,%eiz,1\),%ecx ++ +[a-f0-9]+: 67 66 0f 38 f8 0c 25 78 56 34 12 movdir64b 0x12345678\(,%eiz,1\),%ecx + #pass +diff --git a/gas/testsuite/gas/i386/x86-64-movdir.s b/gas/testsuite/gas/i386/x86-64-movdir.s +index 6f9032dc4b3..ad69bb13223 100644 +--- a/gas/testsuite/gas/i386/x86-64-movdir.s ++++ b/gas/testsuite/gas/i386/x86-64-movdir.s +@@ -6,6 +6,11 @@ _start: + movdiri %rax, (%rcx) + movdir64b (%rcx),%rax + movdir64b (%ecx),%eax ++ movdir64b foo(%rip),%rcx ++ movdir64b foo(%rip),%ecx ++ movdir64b foo(%eip),%ecx ++ movdir64b foo, %ecx ++ movdir64b 0x12345678, %ecx + + .intel_syntax noprefix + movdiri [rcx],eax +@@ -14,3 +19,8 @@ _start: + movdiri qword ptr [rcx],rax + movdir64b rax,[rcx] + movdir64b eax,[ecx] ++ movdir64b rcx,[rip+foo] ++ movdir64b ecx,[rip+foo] ++ movdir64b ecx,[eip+foo] ++ movdir64b ecx,ds:foo ++ movdir64b ecx,ds:0x12345678 +diff --git a/gas/testsuite/gas/ppc/476.d b/gas/testsuite/gas/ppc/476.d +index 7818b86b134..0b75d75ae2d 100644 +--- a/gas/testsuite/gas/ppc/476.d ++++ b/gas/testsuite/gas/ppc/476.d +@@ -7,491 +7,485 @@ + Disassembly of section \.text: + + 0+00 : +- 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 da6fb7152f4..db5d9e153b6 100644 +--- a/gas/testsuite/gas/ppc/476.s ++++ b/gas/testsuite/gas/ppc/476.s +@@ -226,9 +226,6 @@ ppc476: + lhzu 14,2(1) + lhzux 20,22,24 + lhzx 23,24,25 +- lmw 3,-16(1) +- lswi 5,4,16 +- lswx 3,4,5 + lwarx 3,4,5 + lwarx 3,4,5,0 + lwarx 3,4,5,1 +@@ -433,9 +430,6 @@ ppc476: + sthu 18,12(1) + sthux 21,22,23 + sthx 12,13,14 +- stmw 6,-16(1) +- stswi 3,4,16 +- stswx 3,4,5 + stw 6,-16(7) + stwbrx 3,4,5 + stwcx. 3,4,5 +diff --git a/gas/testsuite/gas/ppc/a2.d b/gas/testsuite/gas/ppc/a2.d +index fa7211943ae..517ec1c368e 100644 +--- a/gas/testsuite/gas/ppc/a2.d ++++ b/gas/testsuite/gas/ppc/a2.d +@@ -9,577 +9,569 @@ + Disassembly of section \.text: + + 0+00 : +- 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 6893ae8cfef..c3d23ea3def 100644 +--- a/gas/testsuite/gas/ppc/a2.s ++++ b/gas/testsuite/gas/ppc/a2.s +@@ -295,10 +295,6 @@ start: + lhzu 10,2(11) + lhzux 10,11,12 + lhzx 10,11,12 +- lmw 20,16(10) +- lswi 10,11,1 +- lswi 12,11,32 +- lswx 10,11,12 + lwa 10,-4(11) + lwa 10,4(11) + lwarx 10,11,12,0 +@@ -486,10 +482,6 @@ start: + sthu 10,2(11) + sthux 10,11,12 + sthx 10,11,12 +- stmw 20,16(10) +- stswi 10,11,1 +- stswi 10,11,32 +- stswx 10,11,12 + stwbrx 10,11,12 + stwcx. 10,11,12 + stwepx 10,11,12 +diff --git a/gas/testsuite/gas/ppc/be.d b/gas/testsuite/gas/ppc/be.d +new file mode 100644 +index 00000000000..9255ddbadf4 +--- /dev/null ++++ b/gas/testsuite/gas/ppc/be.d +@@ -0,0 +1,17 @@ ++#objdump: -d -Mcom ++#as: -mcom -be ++#name: BE only instructions ++ ++.* ++ ++Disassembly of section \.text: ++ ++0+00 : ++.*: ba 8a 00 10 lmw r20,16\(r10\) ++.*: 7d 4b 0c aa lswi r10,r11,1 ++.*: 7d 8b 04 aa lswi r12,r11,32 ++.*: 7d 4b 64 2a lswx r10,r11,r12 ++.*: be 8a 00 10 stmw r20,16\(r10\) ++.*: 7d 4b 0d aa stswi r10,r11,1 ++.*: 7d 4b 05 aa stswi r10,r11,32 ++.*: 7d 4b 65 2a stswx r10,r11,r12 +diff --git a/gas/testsuite/gas/ppc/be.s b/gas/testsuite/gas/ppc/be.s +new file mode 100644 +index 00000000000..dbbcbb63311 +--- /dev/null ++++ b/gas/testsuite/gas/ppc/be.s +@@ -0,0 +1,10 @@ ++ .text ++start: ++ lmw 20,16(10) ++ lswi 10,11,1 ++ lswi 12,11,32 ++ lswx 10,11,12 ++ stmw 20,16(10) ++ stswi 10,11,1 ++ stswi 10,11,32 ++ stswx 10,11,12 +diff --git a/gas/testsuite/gas/ppc/int128.d b/gas/testsuite/gas/ppc/int128.d +index c9f14d3360d..d7410345ad7 100644 +--- a/gas/testsuite/gas/ppc/int128.d ++++ b/gas/testsuite/gas/ppc/int128.d +@@ -20,7 +20,7 @@ Disassembly of section \.text: + .*: (13 9d f7 0b|0b f7 9d 13) vmodsq v28,v29,v30 + .*: (13 e0 0e 0b|0b 0e e0 13) vmoduq v31,v0,v1 + .*: (10 5b 1e 02|02 1e 5b 10) vextsd2q v2,v3 +-.*: (10 04 29 01|01 29 04 10) vcmpuq v4,v5 ++.*: (10 04 29 01|01 29 04 10) vcmpuq cr0,v4,v5 + .*: (10 86 39 41|41 39 86 10) vcmpsq cr1,v6,v7 + .*: (11 09 51 c7|c7 51 09 11) vcmpequq v8,v9,v10 + .*: (11 6c 6d c7|c7 6d 6c 11) vcmpequq. v11,v12,v13 +diff --git a/gas/testsuite/gas/ppc/int128.s b/gas/testsuite/gas/ppc/int128.s +index 4dce648c36f..4561cfe9ee6 100644 +--- a/gas/testsuite/gas/ppc/int128.s ++++ b/gas/testsuite/gas/ppc/int128.s +@@ -12,7 +12,7 @@ _start: + vmodsq 28,29,30 + vmoduq 31,0,1 + vextsd2q 2,3 +- vcmpuq 4,5 ++ vcmpuq 0,4,5 + vcmpsq 1,6,7 + vcmpequq 8,9,10 + vcmpequq. 11,12,13 +diff --git a/gas/testsuite/gas/ppc/le_error.d b/gas/testsuite/gas/ppc/le_error.d +new file mode 100644 +index 00000000000..765004655e5 +--- /dev/null ++++ b/gas/testsuite/gas/ppc/le_error.d +@@ -0,0 +1,3 @@ ++#as: -mcom -le ++#source: be.s ++#error_output: le_error.l +diff --git a/gas/testsuite/gas/ppc/le_error.l b/gas/testsuite/gas/ppc/le_error.l +new file mode 100644 +index 00000000000..dd0021b972c +--- /dev/null ++++ b/gas/testsuite/gas/ppc/le_error.l +@@ -0,0 +1,9 @@ ++.*Assembler messages: ++.*invalid when little-endian ++.*invalid when little-endian ++.*invalid when little-endian ++.*invalid when little-endian ++.*invalid when little-endian ++.*invalid when little-endian ++.*invalid when little-endian ++.*invalid when little-endian +diff --git a/gas/testsuite/gas/ppc/power8.d b/gas/testsuite/gas/ppc/power8.d +index dfd3345461d..df3f5d410db 100644 +--- a/gas/testsuite/gas/ppc/power8.d ++++ b/gas/testsuite/gas/ppc/power8.d +@@ -7,151 +7,151 @@ + Disassembly of section \.text: + + 0+00 : +- 0: (7c 05 07 1d|1d 07 05 7c) tabort\. r5 +- 4: (7c e8 86 1d|1d 86 e8 7c) tabortwc\. 7,r8,r16 +- 8: (7e 8b 56 5d|5d 56 8b 7e) tabortdc\. 20,r11,r10 +- c: (7e 2a 9e 9d|9d 9e 2a 7e) tabortwci\. 17,r10,-13 +- 10: (7f a3 de dd|dd de a3 7f) tabortdci\. 29,r3,-5 +- 14: (7c 00 05 1d|1d 05 00 7c) tbegin\. +- 18: (7f 80 05 9c|9c 05 80 7f) tcheck cr7 +- 1c: (7c 00 05 5d|5d 05 00 7c) tend\. +- 20: (7c 00 05 5d|5d 05 00 7c) tend\. +- 24: (7e 00 05 5d|5d 05 00 7e) tendall\. +- 28: (7e 00 05 5d|5d 05 00 7e) tendall\. +- 2c: (7c 18 07 5d|5d 07 18 7c) treclaim\. r24 +- 30: (7c 00 07 dd|dd 07 00 7c) trechkpt\. +- 34: (7c 00 05 dd|dd 05 00 7c) tsuspend\. +- 38: (7c 00 05 dd|dd 05 00 7c) tsuspend\. +- 3c: (7c 20 05 dd|dd 05 20 7c) tresume\. +- 40: (7c 20 05 dd|dd 05 20 7c) tresume\. +- 44: (60 42 00 00|00 00 42 60) ori r2,r2,0 +- 48: (60 00 00 00|00 00 00 60) nop +- 4c: (60 42 00 00|00 00 42 60) ori r2,r2,0 +- 50: (4c 00 01 24|24 01 00 4c) rfebb 0 +- 54: (4c 00 09 24|24 09 00 4c) rfebb +- 58: (4c 00 09 24|24 09 00 4c) rfebb +- 5c: (4d d5 04 60|60 04 d5 4d) bgttar- cr5 +- 60: (4c c7 04 61|61 04 c7 4c) bnstarl- cr1 +- 64: (4d ec 04 60|60 04 ec 4d) blttar\+ cr3 +- 68: (4c e2 04 61|61 04 e2 4c) bnetarl\+ +- 6c: (4c 88 0c 60|60 0c 88 4c) bctar 4,4\*cr2\+lt,1 +- 70: (4c 87 14 61|61 14 87 4c) bctarl 4,4\*cr1\+so,2 +- 74: (7c 00 00 3c|3c 00 00 7c) waitasec +- 78: (7c 00 41 1c|1c 41 00 7c) msgsndp r8 +- 7c: (7c 20 01 26|26 01 20 7c) mtsle 1 +- 80: (7c 00 d9 5c|5c d9 00 7c) msgclrp r27 +- 84: (7d 4a 61 6d|6d 61 4a 7d) stqcx\. r10,r10,r12 +- 88: (7f 80 39 6d|6d 39 80 7f) stqcx\. r28,0,r7 +- 8c: (7f 13 5a 28|28 5a 13 7f) lqarx r24,r19,r11 +- 90: (7e c0 5a 28|28 5a c0 7e) lqarx r22,0,r11 +- 94: (7e 80 32 5c|5c 32 80 7e) mfbhrbe r20,6 +- 98: (7f b1 83 29|29 83 b1 7f) pbt\. r29,r17,r16 +- 9c: (7d c0 3b 29|29 3b c0 7d) pbt\. r14,0,r7 +- a0: (7c 00 03 5c|5c 03 00 7c) clrbhrb +- a4: (11 6a 05 ed|ed 05 6a 11) vpermxor v11,v10,v0,v23 +- a8: (13 02 39 3c|3c 39 02 13) vaddeuqm v24,v2,v7,v4 +- ac: (11 4a 40 bd|bd 40 4a 11) vaddecuq v10,v10,v8,v2 +- b0: (10 af 44 fe|fe 44 af 10) vsubeuqm v5,v15,v8,v19 +- b4: (11 9f 87 7f|7f 87 9f 11) vsubecuq v12,v31,v16,v29 +- b8: (12 9d 68 88|88 68 9d 12) vmulouw v20,v29,v13 +- bc: (13 a0 d0 89|89 d0 a0 13) vmuluwm v29,v0,v26 +- c0: (11 15 e0 c0|c0 e0 15 11) vaddudm v8,v21,v28 +- c4: (10 3a 08 c2|c2 08 3a 10) vmaxud v1,v26,v1 +- c8: (12 83 08 c4|c4 08 83 12) vrld v20,v3,v1 +- cc: (10 93 58 c7|c7 58 93 10) vcmpequd v4,v19,v11 +- d0: (12 ee f1 00|00 f1 ee 12) vadduqm v23,v14,v30 +- d4: (11 08 69 40|40 69 08 11) vaddcuq v8,v8,v13 +- d8: (13 9b 21 88|88 21 9b 13) vmulosw v28,v27,v4 +- dc: (10 64 21 c2|c2 21 64 10) vmaxsd v3,v4,v4 +- e0: (10 13 aa 88|88 aa 13 10) vmuleuw v0,v19,v21 +- e4: (13 14 9a c2|c2 9a 14 13) vminud v24,v20,v19 +- e8: (10 1c 7a c7|c7 7a 1c 10) vcmpgtud v0,v28,v15 +- ec: (12 a0 13 88|88 13 a0 12) vmulesw v21,v0,v2 +- f0: (11 3a 4b c2|c2 4b 3a 11) vminsd v9,v26,v9 +- f4: (13 3d 5b c4|c4 5b 3d 13) vsrad v25,v29,v11 +- f8: (11 7c 5b c7|c7 5b 7c 11) vcmpgtsd v11,v28,v11 +- fc: (10 a8 d6 01|01 d6 a8 10) bcdadd\. v5,v8,v26,1 +- 100: (10 83 64 08|08 64 83 10) vpmsumb v4,v3,v12 +- 104: (13 5f ae 41|41 ae 5f 13) bcdsub\. v26,v31,v21,1 +- 108: (10 b1 84 48|48 84 b1 10) vpmsumh v5,v17,v16 +- 10c: (12 f1 a4 4e|4e a4 f1 12) vpkudum v23,v17,v20 +- 110: (13 15 ec 88|88 ec 15 13) vpmsumw v24,v21,v29 +- 114: (11 36 6c c8|c8 6c 36 11) vpmsumd v9,v22,v13 +- 118: (12 53 94 ce|ce 94 53 12) vpkudus v18,v19,v18 +- 11c: (13 d0 b5 00|00 b5 d0 13) vsubuqm v30,v16,v22 +- 120: (11 cb 3d 08|08 3d cb 11) vcipher v14,v11,v7 +- 124: (11 42 b5 09|09 b5 42 11) vcipherlast v10,v2,v22 +- 128: (12 e0 6d 0c|0c 6d e0 12) vgbbd v23,v13 +- 12c: (12 19 85 40|40 85 19 12) vsubcuq v16,v25,v16 +- 130: (13 e1 2d 44|44 2d e1 13) vorc v31,v1,v5 +- 134: (10 91 fd 48|48 fd 91 10) vncipher v4,v17,v31 +- 138: (13 02 dd 49|49 dd 02 13) vncipherlast v24,v2,v27 +- 13c: (12 f5 bd 4c|4c bd f5 12) vbpermq v23,v21,v23 +- 140: (13 72 4d 4e|4e 4d 72 13) vpksdus v27,v18,v9 +- 144: (13 7d dd 84|84 dd 7d 13) vnand v27,v29,v27 +- 148: (12 73 c5 c4|c4 c5 73 12) vsld v19,v19,v24 +- 14c: (10 ad 05 c8|c8 05 ad 10) vsbox v5,v13 +- 150: (13 23 3d ce|ce 3d 23 13) vpksdss v25,v3,v7 +- 154: (13 88 04 c7|c7 04 88 13) vcmpequd\. v28,v8,v0 +- 158: (13 40 d6 4e|4e d6 40 13) vupkhsw v26,v26 +- 15c: (10 a7 36 82|82 36 a7 10) vshasigmaw v5,v7,0,6 +- 160: (13 95 76 84|84 76 95 13) veqv v28,v21,v14 +- 164: (10 28 9e 8c|8c 9e 28 10) vmrgow v1,v8,v19 +- 168: (10 0a 56 c2|c2 56 0a 10) vshasigmad v0,v10,0,10 +- 16c: (10 bb 76 c4|c4 76 bb 10) vsrd v5,v27,v14 +- 170: (11 60 6e ce|ce 6e 60 11) vupklsw v11,v13 +- 174: (11 c0 87 02|02 87 c0 11) vclzb v14,v16 +- 178: (12 80 df 03|03 df 80 12) vpopcntb v20,v27 +- 17c: (13 80 5f 42|42 5f 80 13) vclzh v28,v11 +- 180: (13 00 4f 43|43 4f 00 13) vpopcnth v24,v9 +- 184: (13 60 ff 82|82 ff 60 13) vclzw v27,v31 +- 188: (12 20 9f 83|83 9f 20 12) vpopcntw v17,v19 +- 18c: (11 80 ef c2|c2 ef 80 11) vclzd v12,v29 +- 190: (12 e0 b7 c3|c3 b7 e0 12) vpopcntd v23,v22 +- 194: (13 14 ee c7|c7 ee 14 13) vcmpgtud\. v24,v20,v29 +- 198: (11 26 df c7|c7 df 26 11) vcmpgtsd\. v9,v6,v27 +- 19c: (7f ce d0 19|19 d0 ce 7f) lxsiwzx vs62,r14,r26 +- 1a0: (7d 00 c8 19|19 c8 00 7d) lxsiwzx vs40,0,r25 +- 1a4: (7f 20 d0 98|98 d0 20 7f) lxsiwax vs25,0,r26 +- 1a8: (7c 60 18 98|98 18 60 7c) lxsiwax vs3,0,r3 +- 1ac: (7f cc 00 67|67 00 cc 7f) mfvsrd r12,vs62 +- 1b0: (7d 94 00 e6|e6 00 94 7d) mffprwz r20,f12 +- 1b4: (7d c9 71 18|18 71 c9 7d) stxsiwx vs14,r9,r14 +- 1b8: (7e a0 41 18|18 41 a0 7e) stxsiwx vs21,0,r8 +- 1bc: (7e 0b 01 67|67 01 0b 7e) mtvsrd vs48,r11 +- 1c0: (7f f7 01 a7|a7 01 f7 7f) mtvrwa v31,r23 +- 1c4: (7e 1a 01 e6|e6 01 1a 7e) mtfprwz f16,r26 +- 1c8: (7d b3 6c 18|18 6c b3 7d) lxsspx vs13,r19,r13 +- 1cc: (7e 40 6c 18|18 6c 40 7e) lxsspx vs18,0,r13 +- 1d0: (7d 62 25 19|19 25 62 7d) stxsspx vs43,r2,r4 +- 1d4: (7e e0 5d 19|19 5d e0 7e) stxsspx vs55,0,r11 +- 1d8: (f2 d0 c8 05|05 c8 d0 f2) xsaddsp vs54,vs48,vs25 +- 1dc: (f1 d2 08 0c|0c 08 d2 f1) xsmaddasp vs14,vs50,vs1 +- 1e0: (f3 56 50 42|42 50 56 f3) xssubsp vs26,vs22,vs42 +- 1e4: (f3 75 a0 4e|4e a0 75 f3) xsmaddmsp vs27,vs53,vs52 +- 1e8: (f1 00 d8 2a|2a d8 00 f1) xsrsqrtesp vs8,vs59 +- 1ec: (f1 80 48 2e|2e 48 80 f1) xssqrtsp vs12,vs41 +- 1f0: (f3 2b 00 83|83 00 2b f3) xsmulsp vs57,vs11,vs32 +- 1f4: (f0 d4 d0 89|89 d0 d4 f0) xsmsubasp vs38,vs20,vs26 +- 1f8: (f3 53 30 c0|c0 30 53 f3) xsdivsp vs26,vs19,vs6 +- 1fc: (f0 65 b8 cf|cf b8 65 f0) xsmsubmsp vs35,vs37,vs55 +- 200: (f3 60 40 69|69 40 60 f3) xsresp vs59,vs8 +- 204: (f1 81 0c 0f|0f 0c 81 f1) xsnmaddasp vs44,vs33,vs33 +- 208: (f2 3e f4 4c|4c f4 3e f2) xsnmaddmsp vs17,vs62,vs30 +- 20c: (f2 d4 fc 8d|8d fc d4 f2) xsnmsubasp vs54,vs52,vs31 +- 210: (f0 a5 d4 cb|cb d4 a5 f0) xsnmsubmsp vs37,vs5,vs58 +- 214: (f3 d6 65 56|56 65 d6 f3) xxlorc vs30,vs54,vs44 +- 218: (f2 2e ed 91|91 ed 2e f2) xxlnand vs49,vs14,vs29 +- 21c: (f3 d6 f5 d1|d1 f5 d6 f3) xxleqv vs62,vs22,vs30 +- 220: (f3 80 b4 2f|2f b4 80 f3) xscvdpspn vs60,vs54 +- 224: (f2 c0 6c 66|66 6c c0 f2) xsrsp vs22,vs45 +- 228: (f3 40 dc a2|a2 dc 40 f3) xscvuxdsp vs26,vs59 +- 22c: (f0 c0 8c e3|e3 8c c0 f0) xscvsxdsp vs38,vs49 +- 230: (f3 60 d5 2d|2d d5 60 f3) xscvspdpn vs59,vs26 +- 234: (ff 0e 16 8c|8c 16 0e ff) fmrgow f24,f14,f2 +- 238: (fe c7 2f 8c|8c 2f c7 fe) fmrgew f22,f7,f5 +- 23c: (7c 00 71 9c|9c 71 00 7c) msgsnd r14 +- 240: (7c 00 b9 dc|dc b9 00 7c) msgclr r23 ++.*: (7c 05 07 1d|1d 07 05 7c) tabort\. r5 ++.*: (7c e8 86 1d|1d 86 e8 7c) tabortwc\. 7,r8,r16 ++.*: (7e 8b 56 5d|5d 56 8b 7e) tabortdc\. 20,r11,r10 ++.*: (7e 2a 9e 9d|9d 9e 2a 7e) tabortwci\. 17,r10,-13 ++.*: (7f a3 de dd|dd de a3 7f) tabortdci\. 29,r3,-5 ++.*: (7c 00 05 1d|1d 05 00 7c) tbegin\. ++.*: (7f 80 05 9c|9c 05 80 7f) tcheck cr7 ++.*: (7c 00 05 5d|5d 05 00 7c) tend\. ++.*: (7c 00 05 5d|5d 05 00 7c) tend\. ++.*: (7e 00 05 5d|5d 05 00 7e) tendall\. ++.*: (7e 00 05 5d|5d 05 00 7e) tendall\. ++.*: (7c 18 07 5d|5d 07 18 7c) treclaim\. r24 ++.*: (7c 00 07 dd|dd 07 00 7c) trechkpt\. ++.*: (7c 00 05 dd|dd 05 00 7c) tsuspend\. ++.*: (7c 00 05 dd|dd 05 00 7c) tsuspend\. ++.*: (7c 20 05 dd|dd 05 20 7c) tresume\. ++.*: (7c 20 05 dd|dd 05 20 7c) tresume\. ++.*: (60 42 00 00|00 00 42 60) ori r2,r2,0 ++.*: (60 00 00 00|00 00 00 60) nop ++.*: (60 42 00 00|00 00 42 60) ori r2,r2,0 ++.*: (4c 00 01 24|24 01 00 4c) rfebb 0 ++.*: (4c 00 09 24|24 09 00 4c) rfebb ++.*: (4c 00 09 24|24 09 00 4c) rfebb ++.*: (4d d5 04 60|60 04 d5 4d) bgttar- cr5 ++.*: (4c c7 04 61|61 04 c7 4c) bnstarl- cr1 ++.*: (4d ec 04 60|60 04 ec 4d) blttar\+ cr3 ++.*: (4c e2 04 61|61 04 e2 4c) bnetarl\+ ++.*: (4c 88 0c 60|60 0c 88 4c) bctar 4,4\*cr2\+lt,1 ++.*: (4c 87 14 61|61 14 87 4c) bctarl 4,4\*cr1\+so,2 ++.*: (7c 00 00 3c|3c 00 00 7c) waitasec ++.*: (7c 00 41 1c|1c 41 00 7c) msgsndp r8 ++.*: (7c 20 01 26|26 01 20 7c) mtsle 1 ++.*: (7c 00 d9 5c|5c d9 00 7c) msgclrp r27 ++.*: (7d 4a 61 6d|6d 61 4a 7d) stqcx\. r10,r10,r12 ++.*: (7f 80 39 6d|6d 39 80 7f) stqcx\. r28,0,r7 ++.*: (7f 13 5a 28|28 5a 13 7f) lqarx r24,r19,r11 ++.*: (7e c0 5a 28|28 5a c0 7e) lqarx r22,0,r11 ++.*: (7e 80 32 5c|5c 32 80 7e) mfbhrbe r20,6 ++.*: (7f b1 83 29|29 83 b1 7f) pbt\. r29,r17,r16 ++.*: (7d c0 3b 29|29 3b c0 7d) pbt\. r14,0,r7 ++.*: (7c 00 03 5c|5c 03 00 7c) clrbhrb ++.*: (11 6a 05 ed|ed 05 6a 11) vpermxor v11,v10,v0,v23 ++.*: (13 02 39 3c|3c 39 02 13) vaddeuqm v24,v2,v7,v4 ++.*: (11 4a 40 bd|bd 40 4a 11) vaddecuq v10,v10,v8,v2 ++.*: (10 af 44 fe|fe 44 af 10) vsubeuqm v5,v15,v8,v19 ++.*: (11 9f 87 7f|7f 87 9f 11) vsubecuq v12,v31,v16,v29 ++.*: (12 9d 68 88|88 68 9d 12) vmulouw v20,v29,v13 ++.*: (13 a0 d0 89|89 d0 a0 13) vmuluwm v29,v0,v26 ++.*: (11 15 e0 c0|c0 e0 15 11) vaddudm v8,v21,v28 ++.*: (10 3a 08 c2|c2 08 3a 10) vmaxud v1,v26,v1 ++.*: (12 83 08 c4|c4 08 83 12) vrld v20,v3,v1 ++.*: (10 93 58 c7|c7 58 93 10) vcmpequd v4,v19,v11 ++.*: (12 ee f1 00|00 f1 ee 12) vadduqm v23,v14,v30 ++.*: (11 08 69 40|40 69 08 11) vaddcuq v8,v8,v13 ++.*: (13 9b 21 88|88 21 9b 13) vmulosw v28,v27,v4 ++.*: (10 64 21 c2|c2 21 64 10) vmaxsd v3,v4,v4 ++.*: (10 13 aa 88|88 aa 13 10) vmuleuw v0,v19,v21 ++.*: (13 14 9a c2|c2 9a 14 13) vminud v24,v20,v19 ++.*: (10 1c 7a c7|c7 7a 1c 10) vcmpgtud v0,v28,v15 ++.*: (12 a0 13 88|88 13 a0 12) vmulesw v21,v0,v2 ++.*: (11 3a 4b c2|c2 4b 3a 11) vminsd v9,v26,v9 ++.*: (13 3d 5b c4|c4 5b 3d 13) vsrad v25,v29,v11 ++.*: (11 7c 5b c7|c7 5b 7c 11) vcmpgtsd v11,v28,v11 ++.*: (10 a8 d6 01|01 d6 a8 10) bcdadd\. v5,v8,v26,1 ++.*: (10 83 64 08|08 64 83 10) vpmsumb v4,v3,v12 ++.*: (13 5f ae 41|41 ae 5f 13) bcdsub\. v26,v31,v21,1 ++.*: (10 b1 84 48|48 84 b1 10) vpmsumh v5,v17,v16 ++.*: (12 f1 a4 4e|4e a4 f1 12) vpkudum v23,v17,v20 ++.*: (13 15 ec 88|88 ec 15 13) vpmsumw v24,v21,v29 ++.*: (11 36 6c c8|c8 6c 36 11) vpmsumd v9,v22,v13 ++.*: (12 53 94 ce|ce 94 53 12) vpkudus v18,v19,v18 ++.*: (13 d0 b5 00|00 b5 d0 13) vsubuqm v30,v16,v22 ++.*: (11 cb 3d 08|08 3d cb 11) vcipher v14,v11,v7 ++.*: (11 42 b5 09|09 b5 42 11) vcipherlast v10,v2,v22 ++.*: (12 e0 6d 0c|0c 6d e0 12) vgbbd v23,v13 ++.*: (12 19 85 40|40 85 19 12) vsubcuq v16,v25,v16 ++.*: (13 e1 2d 44|44 2d e1 13) vorc v31,v1,v5 ++.*: (10 91 fd 48|48 fd 91 10) vncipher v4,v17,v31 ++.*: (13 02 dd 49|49 dd 02 13) vncipherlast v24,v2,v27 ++.*: (12 f5 bd 4c|4c bd f5 12) vbpermq v23,v21,v23 ++.*: (13 72 4d 4e|4e 4d 72 13) vpksdus v27,v18,v9 ++.*: (13 7d dd 84|84 dd 7d 13) vnand v27,v29,v27 ++.*: (12 73 c5 c4|c4 c5 73 12) vsld v19,v19,v24 ++.*: (10 ad 05 c8|c8 05 ad 10) vsbox v5,v13 ++.*: (13 23 3d ce|ce 3d 23 13) vpksdss v25,v3,v7 ++.*: (13 88 04 c7|c7 04 88 13) vcmpequd\. v28,v8,v0 ++.*: (13 40 d6 4e|4e d6 40 13) vupkhsw v26,v26 ++.*: (10 a7 36 82|82 36 a7 10) vshasigmaw v5,v7,0,6 ++.*: (13 95 76 84|84 76 95 13) veqv v28,v21,v14 ++.*: (10 28 9e 8c|8c 9e 28 10) vmrgow v1,v8,v19 ++.*: (10 0a 56 c2|c2 56 0a 10) vshasigmad v0,v10,0,10 ++.*: (10 bb 76 c4|c4 76 bb 10) vsrd v5,v27,v14 ++.*: (11 60 6e ce|ce 6e 60 11) vupklsw v11,v13 ++.*: (11 c0 87 02|02 87 c0 11) vclzb v14,v16 ++.*: (12 80 df 03|03 df 80 12) vpopcntb v20,v27 ++.*: (13 80 5f 42|42 5f 80 13) vclzh v28,v11 ++.*: (13 00 4f 43|43 4f 00 13) vpopcnth v24,v9 ++.*: (13 60 ff 82|82 ff 60 13) vclzw v27,v31 ++.*: (12 20 9f 83|83 9f 20 12) vpopcntw v17,v19 ++.*: (11 80 ef c2|c2 ef 80 11) vclzd v12,v29 ++.*: (12 e0 b7 c3|c3 b7 e0 12) vpopcntd v23,v22 ++.*: (13 14 ee c7|c7 ee 14 13) vcmpgtud\. v24,v20,v29 ++.*: (11 26 df c7|c7 df 26 11) vcmpgtsd\. v9,v6,v27 ++.*: (7f ce d0 19|19 d0 ce 7f) lxsiwzx vs62,r14,r26 ++.*: (7d 00 c8 19|19 c8 00 7d) lxsiwzx vs40,0,r25 ++.*: (7f 20 d0 98|98 d0 20 7f) lxsiwax vs25,0,r26 ++.*: (7c 60 18 98|98 18 60 7c) lxsiwax vs3,0,r3 ++.*: (7f cc 00 67|67 00 cc 7f) (mfvrd r12,v30|mfvsrd r12,vs62) ++.*: (7d 94 00 e6|e6 00 94 7d) (mffprwz r20,f12|mfvsrwz r20,vs12) ++.*: (7d c9 71 18|18 71 c9 7d) stxsiwx vs14,r9,r14 ++.*: (7e a0 41 18|18 41 a0 7e) stxsiwx vs21,0,r8 ++.*: (7e 0b 01 67|67 01 0b 7e) (mtvrd v16,r11|mtvsrd vs48,r11) ++.*: (7f f7 01 a7|a7 01 f7 7f) (mtvrwa v31,r23|mtvsrwa vs63,r23) ++.*: (7e 1a 01 e6|e6 01 1a 7e) (mtfprwz f16,r26|mtvsrwz vs16,r26) ++.*: (7d b3 6c 18|18 6c b3 7d) lxsspx vs13,r19,r13 ++.*: (7e 40 6c 18|18 6c 40 7e) lxsspx vs18,0,r13 ++.*: (7d 62 25 19|19 25 62 7d) stxsspx vs43,r2,r4 ++.*: (7e e0 5d 19|19 5d e0 7e) stxsspx vs55,0,r11 ++.*: (f2 d0 c8 05|05 c8 d0 f2) xsaddsp vs54,vs48,vs25 ++.*: (f1 d2 08 0c|0c 08 d2 f1) xsmaddasp vs14,vs50,vs1 ++.*: (f3 56 50 42|42 50 56 f3) xssubsp vs26,vs22,vs42 ++.*: (f3 75 a0 4e|4e a0 75 f3) xsmaddmsp vs27,vs53,vs52 ++.*: (f1 00 d8 2a|2a d8 00 f1) xsrsqrtesp vs8,vs59 ++.*: (f1 80 48 2e|2e 48 80 f1) xssqrtsp vs12,vs41 ++.*: (f3 2b 00 83|83 00 2b f3) xsmulsp vs57,vs11,vs32 ++.*: (f0 d4 d0 89|89 d0 d4 f0) xsmsubasp vs38,vs20,vs26 ++.*: (f3 53 30 c0|c0 30 53 f3) xsdivsp vs26,vs19,vs6 ++.*: (f0 65 b8 cf|cf b8 65 f0) xsmsubmsp vs35,vs37,vs55 ++.*: (f3 60 40 69|69 40 60 f3) xsresp vs59,vs8 ++.*: (f1 81 0c 0f|0f 0c 81 f1) xsnmaddasp vs44,vs33,vs33 ++.*: (f2 3e f4 4c|4c f4 3e f2) xsnmaddmsp vs17,vs62,vs30 ++.*: (f2 d4 fc 8d|8d fc d4 f2) xsnmsubasp vs54,vs52,vs31 ++.*: (f0 a5 d4 cb|cb d4 a5 f0) xsnmsubmsp vs37,vs5,vs58 ++.*: (f3 d6 65 56|56 65 d6 f3) xxlorc vs30,vs54,vs44 ++.*: (f2 2e ed 91|91 ed 2e f2) xxlnand vs49,vs14,vs29 ++.*: (f3 d6 f5 d1|d1 f5 d6 f3) xxleqv vs62,vs22,vs30 ++.*: (f3 80 b4 2f|2f b4 80 f3) xscvdpspn vs60,vs54 ++.*: (f2 c0 6c 66|66 6c c0 f2) xsrsp vs22,vs45 ++.*: (f3 40 dc a2|a2 dc 40 f3) xscvuxdsp vs26,vs59 ++.*: (f0 c0 8c e3|e3 8c c0 f0) xscvsxdsp vs38,vs49 ++.*: (f3 60 d5 2d|2d d5 60 f3) xscvspdpn vs59,vs26 ++.*: (ff 0e 16 8c|8c 16 0e ff) fmrgow f24,f14,f2 ++.*: (fe c7 2f 8c|8c 2f c7 fe) fmrgew f22,f7,f5 ++.*: (7c 00 71 9c|9c 71 00 7c) msgsnd r14 ++.*: (7c 00 b9 dc|dc b9 00 7c) msgclr r23 + .*: (7d 00 2e 99|99 2e 00 7d) lxvd2x vs40,0,r5 + .*: (7d 00 2e 99|99 2e 00 7d) lxvd2x vs40,0,r5 + .*: (7d 54 36 98|98 36 54 7d) lxvd2x vs10,r20,r6 +@@ -310,4 +310,6 @@ Disassembly of section \.text: + .*: (4d 89 04 61|61 04 89 4d) bgttarl cr2 + .*: (4d 89 04 61|61 04 89 4d) bgttarl cr2 + .*: (4d 89 1c 61|61 1c 89 4d) bctarl 12,4\*cr2\+gt,3 ++.*: (7f 5a d3 78|78 d3 5a 7f) miso ++.*: (7f 5a d3 78|78 d3 5a 7f) miso + #pass +diff --git a/gas/testsuite/gas/ppc/power8.s b/gas/testsuite/gas/ppc/power8.s +index beb1c5e81c5..52a3e8ea69f 100644 +--- a/gas/testsuite/gas/ppc/power8.s ++++ b/gas/testsuite/gas/ppc/power8.s +@@ -302,3 +302,5 @@ power8: + bctarl 0b01100,4*cr2+gt + bctarl 0b01100,4*cr2+gt,0 + bctarl 0b01100,4*cr2+gt,3 ++ or 26,26,26 ++ miso +diff --git a/gas/testsuite/gas/ppc/power9.d b/gas/testsuite/gas/ppc/power9.d +index 4e7156d46d9..45a8f495aeb 100644 +--- a/gas/testsuite/gas/ppc/power9.d ++++ b/gas/testsuite/gas/ppc/power9.d +@@ -399,4 +399,8 @@ Disassembly of section \.text: + .*: (7c 20 20 ac|ac 20 20 7c) dcbfl 0,r4 + .*: (7c 60 28 ac|ac 28 60 7c) dcbflp 0,r5 + .*: (7c 60 28 ac|ac 28 60 7c) dcbflp 0,r5 ++.*: (63 ff 00 00|00 00 ff 63) exser ++.*: (63 ff 00 00|00 00 ff 63) exser ++.*: (7c 00 18 9c|9c 18 00 7c) msgsndu r3 ++.*: (7c 00 d8 dc|dc d8 00 7c) msgclru r27 + #pass +diff --git a/gas/testsuite/gas/ppc/power9.s b/gas/testsuite/gas/ppc/power9.s +index 69053819ffe..2d412b9e66a 100644 +--- a/gas/testsuite/gas/ppc/power9.s ++++ b/gas/testsuite/gas/ppc/power9.s +@@ -390,3 +390,7 @@ power9: + dcbf 0,4,1 + dcbflp 0,5 + dcbf 0,5,3 ++ ori 31,31,0 ++ exser ++ msgsndu 3 ++ msgclru 27 +diff --git a/gas/testsuite/gas/ppc/ppc.exp b/gas/testsuite/gas/ppc/ppc.exp +index 48c4ce62f31..f2a7b44cdd3 100644 +--- a/gas/testsuite/gas/ppc/ppc.exp ++++ b/gas/testsuite/gas/ppc/ppc.exp +@@ -76,6 +76,8 @@ if { [istarget powerpc64*-*-*] || [istarget *-*-elf64*]} then { + run_dump_test "common" + run_dump_test "476" + run_dump_test "a2" ++run_dump_test "be" ++run_dump_test "le_error" + run_dump_test "pr21303" + run_dump_test "vle" + run_dump_test "vle-reloc" +diff --git a/gas/testsuite/gas/ppc/vsx2.d b/gas/testsuite/gas/ppc/vsx2.d +index e7ea585262a..4f0b25bd474 100644 +--- a/gas/testsuite/gas/ppc/vsx2.d ++++ b/gas/testsuite/gas/ppc/vsx2.d +@@ -7,59 +7,59 @@ + Disassembly of section \.text: + + 0+00 : +- 0: (7f ce d0 19|19 d0 ce 7f) lxsiwzx vs62,r14,r26 +- 4: (7d 00 c8 19|19 c8 00 7d) lxsiwzx vs40,0,r25 +- 8: (7f 20 d0 98|98 d0 20 7f) lxsiwax vs25,0,r26 +- c: (7c 60 18 98|98 18 60 7c) lxsiwax vs3,0,r3 +- 10: (7f cc 00 66|66 00 cc 7f) mfvsrd r12,vs30 +- 14: (7f cc 00 66|66 00 cc 7f) mfvsrd r12,vs30 +- 18: (7f cc 00 67|67 00 cc 7f) mfvsrd r12,vs62 +- 1c: (7f cc 00 67|67 00 cc 7f) mfvsrd r12,vs62 +- 20: (7d 94 00 e6|e6 00 94 7d) mffprwz r20,f12 +- 24: (7d 94 00 e6|e6 00 94 7d) mffprwz r20,f12 +- 28: (7d 95 00 e7|e7 00 95 7d) mfvrwz r21,v12 +- 2c: (7d 95 00 e7|e7 00 95 7d) mfvrwz r21,v12 +- 30: (7d c9 71 18|18 71 c9 7d) stxsiwx vs14,r9,r14 +- 34: (7e a0 41 18|18 41 a0 7e) stxsiwx vs21,0,r8 +- 38: (7d 7c 01 66|66 01 7c 7d) mtvsrd vs11,r28 +- 3c: (7d 7c 01 66|66 01 7c 7d) mtvsrd vs11,r28 +- 40: (7d 7d 01 67|67 01 7d 7d) mtvsrd vs43,r29 +- 44: (7d 7d 01 67|67 01 7d 7d) mtvsrd vs43,r29 +- 48: (7f 16 01 a6|a6 01 16 7f) mtfprwa f24,r22 +- 4c: (7f 16 01 a6|a6 01 16 7f) mtfprwa f24,r22 +- 50: (7f 37 01 a7|a7 01 37 7f) mtvrwa v25,r23 +- 54: (7f 37 01 a7|a7 01 37 7f) mtvrwa v25,r23 +- 58: (7f 5b 01 e6|e6 01 5b 7f) mtfprwz f26,r27 +- 5c: (7f 5b 01 e6|e6 01 5b 7f) mtfprwz f26,r27 +- 60: (7f 7c 01 e7|e7 01 7c 7f) mtvrwz v27,r28 +- 64: (7f 7c 01 e7|e7 01 7c 7f) mtvrwz v27,r28 +- 68: (7d b3 6c 18|18 6c b3 7d) lxsspx vs13,r19,r13 +- 6c: (7e 40 6c 18|18 6c 40 7e) lxsspx vs18,0,r13 +- 70: (7d 62 25 19|19 25 62 7d) stxsspx vs43,r2,r4 +- 74: (7e e0 5d 19|19 5d e0 7e) stxsspx vs55,0,r11 +- 78: (f2 d0 c8 05|05 c8 d0 f2) xsaddsp vs54,vs48,vs25 +- 7c: (f1 d2 08 0c|0c 08 d2 f1) xsmaddasp vs14,vs50,vs1 +- 80: (f3 56 50 42|42 50 56 f3) xssubsp vs26,vs22,vs42 +- 84: (f3 75 a0 4e|4e a0 75 f3) xsmaddmsp vs27,vs53,vs52 +- 88: (f1 00 d8 2a|2a d8 00 f1) xsrsqrtesp vs8,vs59 +- 8c: (f1 80 48 2e|2e 48 80 f1) xssqrtsp vs12,vs41 +- 90: (f3 2b 00 83|83 00 2b f3) xsmulsp vs57,vs11,vs32 +- 94: (f0 d4 d0 89|89 d0 d4 f0) xsmsubasp vs38,vs20,vs26 +- 98: (f3 53 30 c0|c0 30 53 f3) xsdivsp vs26,vs19,vs6 +- 9c: (f0 65 b8 cf|cf b8 65 f0) xsmsubmsp vs35,vs37,vs55 +- a0: (f3 60 40 69|69 40 60 f3) xsresp vs59,vs8 +- a4: (f1 81 0c 0f|0f 0c 81 f1) xsnmaddasp vs44,vs33,vs33 +- a8: (f2 3e f4 4c|4c f4 3e f2) xsnmaddmsp vs17,vs62,vs30 +- ac: (f2 d4 fc 8d|8d fc d4 f2) xsnmsubasp vs54,vs52,vs31 +- b0: (f0 a5 d4 cb|cb d4 a5 f0) xsnmsubmsp vs37,vs5,vs58 +- b4: (f3 d6 65 56|56 65 d6 f3) xxlorc vs30,vs54,vs44 +- b8: (f2 2e ed 91|91 ed 2e f2) xxlnand vs49,vs14,vs29 +- bc: (f3 d6 f5 d1|d1 f5 d6 f3) xxleqv vs62,vs22,vs30 +- c0: (f3 80 b4 2f|2f b4 80 f3) xscvdpspn vs60,vs54 +- c4: (f2 c0 6c 66|66 6c c0 f2) xsrsp vs22,vs45 +- c8: (f3 40 dc a2|a2 dc 40 f3) xscvuxdsp vs26,vs59 +- cc: (f0 c0 8c e3|e3 8c c0 f0) xscvsxdsp vs38,vs49 +- d0: (f3 60 d5 2d|2d d5 60 f3) xscvspdpn vs59,vs26 +- d4: (ff 0e 16 8c|8c 16 0e ff) fmrgow f24,f14,f2 +- d8: (fe c7 2f 8c|8c 2f c7 fe) fmrgew f22,f7,f5 ++.*: (7f ce d0 19|19 d0 ce 7f) lxsiwzx vs62,r14,r26 ++.*: (7d 00 c8 19|19 c8 00 7d) lxsiwzx vs40,0,r25 ++.*: (7f 20 d0 98|98 d0 20 7f) lxsiwax vs25,0,r26 ++.*: (7c 60 18 98|98 18 60 7c) lxsiwax vs3,0,r3 ++.*: (7f cc 00 66|66 00 cc 7f) (mffprd r12,f30|mfvsrd r12,vs30) ++.*: (7f cc 00 66|66 00 cc 7f) (mffprd r12,f30|mfvsrd r12,vs30) ++.*: (7f cc 00 67|67 00 cc 7f) (mfvrd r12,v30|mfvsrd r12,vs62) ++.*: (7f cc 00 67|67 00 cc 7f) (mfvrd r12,v30|mfvsrd r12,vs62) ++.*: (7d 94 00 e6|e6 00 94 7d) (mffprwz r20,f12|mfvsrwz r20,vs12) ++.*: (7d 94 00 e6|e6 00 94 7d) (mffprwz r20,f12|mfvsrwz r20,vs12) ++.*: (7d 95 00 e7|e7 00 95 7d) (mfvrwz r21,v12|mfvsrwz r21,vs44) ++.*: (7d 95 00 e7|e7 00 95 7d) (mfvrwz r21,v12|mfvsrwz r21,vs44) ++.*: (7d c9 71 18|18 71 c9 7d) stxsiwx vs14,r9,r14 ++.*: (7e a0 41 18|18 41 a0 7e) stxsiwx vs21,0,r8 ++.*: (7d 7c 01 66|66 01 7c 7d) (mtfprd f11,r28|mtvsrd vs11,r28) ++.*: (7d 7c 01 66|66 01 7c 7d) (mtfprd f11,r28|mtvsrd vs11,r28) ++.*: (7d 7d 01 67|67 01 7d 7d) (mtvrd v11,r29|mtvsrd vs43,r29) ++.*: (7d 7d 01 67|67 01 7d 7d) (mtvrd v11,r29|mtvsrd vs43,r29) ++.*: (7f 16 01 a6|a6 01 16 7f) (mtfprwa f24,r22|mtvsrwa vs24,r22) ++.*: (7f 16 01 a6|a6 01 16 7f) (mtfprwa f24,r22|mtvsrwa vs24,r22) ++.*: (7f 37 01 a7|a7 01 37 7f) (mtvrwa v25,r23|mtvsrwa vs57,r23) ++.*: (7f 37 01 a7|a7 01 37 7f) (mtvrwa v25,r23|mtvsrwa vs57,r23) ++.*: (7f 5b 01 e6|e6 01 5b 7f) (mtfprwz f26,r27|mtvsrwz vs26,r27) ++.*: (7f 5b 01 e6|e6 01 5b 7f) (mtfprwz f26,r27|mtvsrwz vs26,r27) ++.*: (7f 7c 01 e7|e7 01 7c 7f) (mtvrwz v27,r28|mtvsrwz vs59,r28) ++.*: (7f 7c 01 e7|e7 01 7c 7f) (mtvrwz v27,r28|mtvsrwz vs59,r28) ++.*: (7d b3 6c 18|18 6c b3 7d) lxsspx vs13,r19,r13 ++.*: (7e 40 6c 18|18 6c 40 7e) lxsspx vs18,0,r13 ++.*: (7d 62 25 19|19 25 62 7d) stxsspx vs43,r2,r4 ++.*: (7e e0 5d 19|19 5d e0 7e) stxsspx vs55,0,r11 ++.*: (f2 d0 c8 05|05 c8 d0 f2) xsaddsp vs54,vs48,vs25 ++.*: (f1 d2 08 0c|0c 08 d2 f1) xsmaddasp vs14,vs50,vs1 ++.*: (f3 56 50 42|42 50 56 f3) xssubsp vs26,vs22,vs42 ++.*: (f3 75 a0 4e|4e a0 75 f3) xsmaddmsp vs27,vs53,vs52 ++.*: (f1 00 d8 2a|2a d8 00 f1) xsrsqrtesp vs8,vs59 ++.*: (f1 80 48 2e|2e 48 80 f1) xssqrtsp vs12,vs41 ++.*: (f3 2b 00 83|83 00 2b f3) xsmulsp vs57,vs11,vs32 ++.*: (f0 d4 d0 89|89 d0 d4 f0) xsmsubasp vs38,vs20,vs26 ++.*: (f3 53 30 c0|c0 30 53 f3) xsdivsp vs26,vs19,vs6 ++.*: (f0 65 b8 cf|cf b8 65 f0) xsmsubmsp vs35,vs37,vs55 ++.*: (f3 60 40 69|69 40 60 f3) xsresp vs59,vs8 ++.*: (f1 81 0c 0f|0f 0c 81 f1) xsnmaddasp vs44,vs33,vs33 ++.*: (f2 3e f4 4c|4c f4 3e f2) xsnmaddmsp vs17,vs62,vs30 ++.*: (f2 d4 fc 8d|8d fc d4 f2) xsnmsubasp vs54,vs52,vs31 ++.*: (f0 a5 d4 cb|cb d4 a5 f0) xsnmsubmsp vs37,vs5,vs58 ++.*: (f3 d6 65 56|56 65 d6 f3) xxlorc vs30,vs54,vs44 ++.*: (f2 2e ed 91|91 ed 2e f2) xxlnand vs49,vs14,vs29 ++.*: (f3 d6 f5 d1|d1 f5 d6 f3) xxleqv vs62,vs22,vs30 ++.*: (f3 80 b4 2f|2f b4 80 f3) xscvdpspn vs60,vs54 ++.*: (f2 c0 6c 66|66 6c c0 f2) xsrsp vs22,vs45 ++.*: (f3 40 dc a2|a2 dc 40 f3) xscvuxdsp vs26,vs59 ++.*: (f0 c0 8c e3|e3 8c c0 f0) xscvsxdsp vs38,vs49 ++.*: (f3 60 d5 2d|2d d5 60 f3) xscvspdpn vs59,vs26 ++.*: (ff 0e 16 8c|8c 16 0e ff) fmrgow f24,f14,f2 ++.*: (fe c7 2f 8c|8c 2f c7 fe) fmrgew f22,f7,f5 + #pass +diff --git a/gas/testsuite/gas/ppc/xvtlsbb.d b/gas/testsuite/gas/ppc/xvtlsbb.d +index 1627d7afc6d..8aa83dd62c7 100644 +--- a/gas/testsuite/gas/ppc/xvtlsbb.d ++++ b/gas/testsuite/gas/ppc/xvtlsbb.d +@@ -7,7 +7,7 @@ + Disassembly of section \.text: + + 0+0 <_start>: +-.*: (f0 02 ff 6e|6e ff 02 f0) xvtlsbb vs63 ++.*: (f0 02 ff 6e|6e ff 02 f0) xvtlsbb cr0,vs63 + .*: (f0 82 07 6c|6c 07 82 f0) xvtlsbb cr1,vs0 + .*: (f1 02 f7 6e|6e f7 02 f1) xvtlsbb cr2,vs62 + .*: (f1 82 0f 6c|6c 0f 82 f1) xvtlsbb cr3,vs1 +diff --git a/gold/ChangeLog b/gold/ChangeLog +index 85fefa989f0..ea4927330e2 100644 +--- a/gold/ChangeLog ++++ b/gold/ChangeLog +@@ -1,3 +1,106 @@ ++2021-01-03 Alan Modra ++ ++ PR 27140 ++ * powerpc.cc (Target_powerpc::Branch_info::make_stub): Only access ++ object->st_other() when 64-bit. ++ (Stub_table::add_long_branch_entry): Ignore "other" when 32-bit. ++ ++2020-11-17 Alan Modra ++ ++ * 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 b13ae71ce14..6b194374c8c 100644 +--- a/gold/options.cc ++++ b/gold/options.cc +@@ -464,6 +464,14 @@ General_options::parse_plugin_opt(const char*, const char* arg, + this->add_plugin_option(arg); + } + ++void ++General_options::parse_no_power10_stubs(const char*, const char*, ++ Command_line*) ++{ ++ this->set_power10_stubs("no"); ++ this->set_user_set_power10_stubs(); ++} ++ + void + General_options::parse_R(const char* option, const char* arg, + Command_line* cmdline) +@@ -1183,6 +1191,27 @@ General_options::finalize() + this->set_start_stop_visibility_enum(elfcpp::STV_PROTECTED); + } + ++ // Parse the --power10-stubs argument. ++ if (!this->user_set_power10_stubs()) ++ { ++ // --power10-stubs without an arg is equivalent to --power10-stubs=yes ++ // but not specifying --power10-stubs at all should be equivalent to ++ // --power10-stubs=auto. This doesn't fit into the notion of ++ // "default_value", used both as a static initializer and to provide ++ // a missing optional arg. Fix it here. ++ this->set_power10_stubs("auto"); ++ this->set_power10_stubs_enum(POWER10_STUBS_AUTO); ++ } ++ else ++ { ++ if (strcmp(this->power10_stubs(), "auto") == 0) ++ this->set_power10_stubs_enum(POWER10_STUBS_AUTO); ++ else if (strcmp(this->power10_stubs(), "no") == 0) ++ this->set_power10_stubs_enum(POWER10_STUBS_NO); ++ else if (strcmp(this->power10_stubs(), "yes") == 0) ++ this->set_power10_stubs_enum(POWER10_STUBS_YES); ++ } ++ + // -M is equivalent to "-Map -". + if (this->print_map() && !this->user_set_Map()) + { +diff --git a/gold/options.h b/gold/options.h +index 3c8d25a6628..51d3614e6b6 100644 +--- a/gold/options.h ++++ b/gold/options.h +@@ -481,9 +481,9 @@ struct Struct_special : public Struct_var + // After helparg__ should come an initializer list, like + // {"foo", "bar", "baz"} + #define DEFINE_enum(varname__, dashes__, shortname__, default_value__, \ +- helpstring__, helparg__, ...) \ ++ helpstring__, helparg__, optional_arg__, ...) \ + DEFINE_var(varname__, dashes__, shortname__, default_value__, \ +- default_value__, helpstring__, helparg__, false, \ ++ default_value__, helpstring__, helparg__, optional_arg__, \ + const char*, const char*, parse_choices_##varname__, false) \ + private: \ + static void parse_choices_##varname__(const char* option_name, \ +@@ -703,7 +703,7 @@ class General_options + N_("Use DT_NEEDED for all shared libraries")); + + DEFINE_enum(assert, options::ONE_DASH, '\0', NULL, +- N_("Ignored"), N_("[ignored]"), ++ N_("Ignored"), N_("[ignored]"), false, + {"definitions", "nodefinitions", "nosymbolic", "pure-text"}); + + // b +@@ -761,7 +761,7 @@ class General_options + + DEFINE_enum(compress_debug_sections, options::TWO_DASHES, '\0', "none", + N_("Compress .debug_* sections in the output file"), +- ("[none,zlib,zlib-gnu,zlib-gabi]"), ++ ("[none,zlib,zlib-gnu,zlib-gabi]"), false, + {"none", "zlib", "zlib-gnu", "zlib-gabi"}); + + DEFINE_bool(copy_dt_needed_entries, options::TWO_DASHES, '\0', false, +@@ -934,7 +934,7 @@ class General_options + N_("FRACTION")); + + DEFINE_enum(hash_style, options::TWO_DASHES, '\0', DEFAULT_HASH_STYLE, +- N_("Dynamic hash style"), N_("[sysv,gnu,both]"), ++ N_("Dynamic hash style"), N_("[sysv,gnu,both]"), false, + {"sysv", "gnu", "both"}); + + // i +@@ -946,7 +946,7 @@ class General_options + N_("Identical Code Folding. " + "\'--icf=safe\' Folds ctors, dtors and functions whose" + " pointers are definitely not taken"), +- ("[none,all,safe]"), ++ ("[none,all,safe]"), false, + {"none", "all", "safe"}); + + DEFINE_uint(icf_iterations, options::TWO_DASHES , '\0', 0, +@@ -1086,7 +1086,7 @@ class General_options + + DEFINE_enum(orphan_handling, options::TWO_DASHES, '\0', "place", + N_("Orphan section handling"), N_("[place,discard,warn,error]"), +- {"place", "discard", "warn", "error"}); ++ false, {"place", "discard", "warn", "error"}); + + // p + +@@ -1141,6 +1141,12 @@ class General_options + N_("Use posix_fallocate to reserve space in the output file"), + N_("Use fallocate or ftruncate to reserve space")); + ++ DEFINE_enum(power10_stubs, options::TWO_DASHES, '\0', "yes", ++ N_("(PowerPC64 only) stubs use power10 insns"), ++ N_("[=auto,no,yes]"), true, {"auto", "no", "yes"}); ++ DEFINE_special(no_power10_stubs, options::TWO_DASHES, '\0', ++ N_("(PowerPC64 only) stubs do not use power10 insns"), NULL); ++ + DEFINE_bool(preread_archive_symbols, options::TWO_DASHES, '\0', false, + N_("Preread archive symbols when multi-threaded"), NULL); + +@@ -1236,7 +1242,7 @@ class General_options + DEFINE_enum(sort_section, options::TWO_DASHES, '\0', "none", + N_("Sort sections by name. \'--no-text-reorder\'" + " will override \'--sort-section=name\' for .text"), +- N_("[none,name]"), ++ N_("[none,name]"), false, + {"none", "name"}); + + DEFINE_uint(spare_dynamic_tags, options::TWO_DASHES, '\0', 5, +@@ -1254,7 +1260,7 @@ class General_options + "output sections"), + N_("(PowerPC only) Each output section has its own stubs")); + +- DEFINE_uint(split_stack_adjust_size, options::TWO_DASHES, '\0', 0x4000, ++ DEFINE_uint(split_stack_adjust_size, options::TWO_DASHES, '\0', 0x100000, + N_("Stack size when -fsplit-stack function calls non-split"), + N_("SIZE")); + +@@ -1287,7 +1293,7 @@ class General_options + NULL); + DEFINE_enum(target2, options::TWO_DASHES, '\0', NULL, + N_("(ARM only) Set R_ARM_TARGET2 relocation type"), +- N_("[rel, abs, got-rel"), ++ N_("[rel, abs, got-rel"), false, + {"rel", "abs", "got-rel"}); + + DEFINE_bool(text_reorder, options::TWO_DASHES, '\0', true, +@@ -1344,7 +1350,7 @@ class General_options + DEFINE_enum(unresolved_symbols, options::TWO_DASHES, '\0', NULL, + N_("How to handle unresolved symbols"), + ("ignore-all,report-all,ignore-in-object-files," +- "ignore-in-shared-libs"), ++ "ignore-in-shared-libs"), false, + {"ignore-all", "report-all", "ignore-in-object-files", + "ignore-in-shared-libs"}); + +@@ -1507,7 +1513,7 @@ class General_options + DEFINE_enum(start_stop_visibility, options::DASH_Z, '\0', "protected", + N_("ELF symbol visibility for synthesized " + "__start_* and __stop_* symbols"), +- ("[default,internal,hidden,protected]"), ++ ("[default,internal,hidden,protected]"), false, + {"default", "internal", "hidden", "protected"}); + DEFINE_bool(text, options::DASH_Z, '\0', false, + N_("Do not permit relocations in read-only segments"), +@@ -1763,6 +1769,20 @@ class General_options + start_stop_visibility_enum() const + { return this->start_stop_visibility_enum_; } + ++ enum Power10_stubs ++ { ++ // Use Power10 insns on @notoc calls/branches, non-Power10 elsewhere. ++ POWER10_STUBS_AUTO, ++ // Don't use Power10 insns ++ POWER10_STUBS_NO, ++ // Always use Power10 insns ++ POWER10_STUBS_YES ++ }; ++ ++ Power10_stubs ++ power10_stubs_enum() const ++ { return this->power10_stubs_enum_; } ++ + private: + // Don't copy this structure. + General_options(const General_options&); +@@ -1826,6 +1846,10 @@ class General_options + set_start_stop_visibility_enum(elfcpp::STV value) + { this->start_stop_visibility_enum_ = value; } + ++ void ++ set_power10_stubs_enum(Power10_stubs value) ++ { this->power10_stubs_enum_ = value; } ++ + // These are called by finalize() to set up the search-path correctly. + void + add_to_library_path_with_sysroot(const std::string& arg) +@@ -1895,6 +1919,8 @@ class General_options + Orphan_handling orphan_handling_enum_; + // Symbol visibility for __start_* / __stop_* magic symbols. + elfcpp::STV start_stop_visibility_enum_; ++ // Power10 stubs option ++ Power10_stubs power10_stubs_enum_; + }; + + // The position-dependent options. We use this to store the state of +diff --git a/gold/powerpc.cc b/gold/powerpc.cc +index 59ba40dc3fc..1cc2478941f 100644 +--- a/gold/powerpc.cc ++++ b/gold/powerpc.cc +@@ -647,10 +647,9 @@ class Target_powerpc : public Sized_target + 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 = 0; + if (gsym != NULL) + { + switch (gsym->source()) +@@ -3539,7 +3565,7 @@ Target_powerpc::Branch_info::make_stub( + if (status != Symbol_table::CFVS_OK) + return true; + if (size == 64) +- to += this->object_->ppc64_local_entry_offset(gsym); ++ other = gsym->nonvis() >> 3; + } + else + { +@@ -3557,7 +3583,7 @@ Target_powerpc::Branch_info::make_stub( + return true; + to = symval.value(this->object_, 0); + if (size == 64) +- to += this->object_->ppc64_local_entry_offset(this->r_sym_); ++ other = this->object_->st_other(this->r_sym_) >> 5; + } + if (!(size == 32 && this->r_type_ == elfcpp::R_PPC_PLTREL24)) + to += this->addend_; +@@ -3570,7 +3596,11 @@ Target_powerpc::Branch_info::make_stub( + &to, &dest_shndx)) + return true; + } +- Address delta = to - from; ++ unsigned int local_ent = 0; ++ if (size == 64 ++ && this->r_type_ != elfcpp::R_PPC64_REL24_NOTOC) ++ local_ent = elfcpp::ppc64_decode_local_entry(other); ++ Address delta = to + local_ent - from; + if (delta + max_branch_offset >= 2 * max_branch_offset + || (size == 64 + && this->r_type_ == elfcpp::R_PPC64_REL24_NOTOC +@@ -3592,7 +3622,7 @@ Target_powerpc::Branch_info::make_stub( + && gsym->output_data() == target->savres_section()); + ok = stub_table->add_long_branch_entry(this->object_, + this->r_type_, +- from, to, save_res); ++ from, to, other, save_res); + } + } + if (!ok) +@@ -4181,6 +4211,7 @@ static const uint32_t cmpwi_11_0 = 0x2c0b0000; + static const uint32_t cror_15_15_15 = 0x4def7b82; + static const uint32_t cror_31_31_31 = 0x4ffffb82; + static const uint32_t ld_0_1 = 0xe8010000; ++static const uint32_t ld_0_11 = 0xe80b0000; + static const uint32_t ld_0_12 = 0xe80c0000; + static const uint32_t ld_2_1 = 0xe8410000; + static const uint32_t ld_2_2 = 0xe8420000; +@@ -4563,9 +4594,9 @@ static const unsigned char glink_eh_frame_fde_64v1[] = + 0, 0, 0, 0, // Replaced with offset to .glink. + 0, 0, 0, 0, // Replaced with size of .glink. + 0, // Augmentation size. +- elfcpp::DW_CFA_advance_loc + 1, ++ elfcpp::DW_CFA_advance_loc + 2, + elfcpp::DW_CFA_register, 65, 12, +- elfcpp::DW_CFA_advance_loc + 5, ++ elfcpp::DW_CFA_advance_loc + 4, + elfcpp::DW_CFA_restore_extended, 65 + }; + +@@ -4575,9 +4606,20 @@ static const unsigned char glink_eh_frame_fde_64v2[] = + 0, 0, 0, 0, // Replaced with offset to .glink. + 0, 0, 0, 0, // Replaced with size of .glink. + 0, // Augmentation size. +- elfcpp::DW_CFA_advance_loc + 1, ++ elfcpp::DW_CFA_advance_loc + 2, + elfcpp::DW_CFA_register, 65, 0, +- elfcpp::DW_CFA_advance_loc + 7, ++ elfcpp::DW_CFA_advance_loc + 2, ++ elfcpp::DW_CFA_restore_extended, 65 ++}; ++ ++static const unsigned char glink_eh_frame_fde_64v2_localentry0[] = ++{ ++ 0, 0, 0, 0, // Replaced with offset to .glink. ++ 0, 0, 0, 0, // Replaced with size of .glink. ++ 0, // Augmentation size. ++ elfcpp::DW_CFA_advance_loc + 3, ++ elfcpp::DW_CFA_register, 65, 0, ++ elfcpp::DW_CFA_advance_loc + 2, + elfcpp::DW_CFA_restore_extended, 65 + }; + +@@ -4631,26 +4673,33 @@ class Stub_table : public Output_relaxed_input_section + struct Plt_stub_ent + { + Plt_stub_ent(unsigned int off, unsigned int indx) +- : off_(off), indx_(indx), iter_(0), notoc_(0), r2save_(0), localentry0_(0) ++ : off_(off), indx_(indx), iter_(0), notoc_(0), toc_(0), ++ r2save_(0), localentry0_(0), tocoff_(0) + { } + + unsigned int off_; +- unsigned int indx_ : 28; ++ unsigned int indx_; + unsigned int iter_ : 1; + unsigned int notoc_ : 1; ++ unsigned int toc_ : 1; + unsigned int r2save_ : 1; + unsigned int localentry0_ : 1; ++ unsigned int tocoff_ : 8; + }; + struct Branch_stub_ent + { + Branch_stub_ent(unsigned int off, bool notoc, bool save_res) +- : off_(off), iter_(false), notoc_(notoc), save_res_(save_res) ++ : off_(off), iter_(0), notoc_(notoc), toc_(0), save_res_(save_res), ++ other_(0), tocoff_(0) + { } + + unsigned int off_; +- bool iter_; +- bool notoc_; +- bool save_res_; ++ unsigned int iter_ : 1; ++ unsigned int notoc_ : 1; ++ unsigned int toc_ : 1; ++ unsigned int save_res_ : 1; ++ unsigned int other_ : 3; ++ unsigned int tocoff_ : 8; + }; + typedef typename elfcpp::Elf_types::Elf_Addr Address; + static const Address invalid_address = static_cast
(0) - 1; +@@ -4716,7 +4765,7 @@ class Stub_table : public Output_relaxed_input_section + // Add a long branch stub. + bool + add_long_branch_entry(const Powerpc_relobj*, +- 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 +4947,7 @@ class Stub_table : public Output_relaxed_input_section + + // Size of a given plt call stub. + unsigned int +- plt_call_size(typename Plt_stub_entries::const_iterator p) const; ++ plt_call_size(typename Plt_stub_entries::iterator p) const; + + unsigned int + plt_call_align(unsigned int bytes) const +@@ -4909,16 +4958,14 @@ class Stub_table : public Output_relaxed_input_section + + // Return long branch stub size. + unsigned int +- branch_stub_size(typename Branch_stub_entries::const_iterator p, ++ branch_stub_size(typename Branch_stub_entries::iterator p, + bool* need_lt); + +- bool +- build_tls_opt_head(unsigned char** pp, +- typename Plt_stub_entries::const_iterator cs); ++ void ++ build_tls_opt_head(unsigned char** pp, bool save_lr); + +- bool +- build_tls_opt_tail(unsigned char* p, +- typename Plt_stub_entries::const_iterator cs); ++ void ++ build_tls_opt_tail(unsigned char* p); + + void + plt_error(const Plt_stub_key& p); +@@ -5083,15 +5130,22 @@ Stub_table::add_plt_call_entry( + if (r_type == elfcpp::R_PPC64_REL24_NOTOC) + { + if (!p.second && !p.first->second.notoc_ +- && !this->targ_->power10_stubs()) ++ && (!this->targ_->power10_stubs() ++ || this->targ_->power10_stubs_auto())) + this->need_resize_ = true; + p.first->second.notoc_ = 1; + } +- else if (!tocsave && !p.first->second.localentry0_) ++ else + { +- if (!p.second && !p.first->second.r2save_) ++ if (!p.second && !p.first->second.toc_) + this->need_resize_ = true; +- p.first->second.r2save_ = 1; ++ p.first->second.toc_ = 1; ++ if (!tocsave && !p.first->second.localentry0_) ++ { ++ if (!p.second && !p.first->second.r2save_) ++ this->need_resize_ = true; ++ p.first->second.r2save_ = 1; ++ } + } + } + if (p.second || (this->resizing_ && !p.first->second.iter_)) +@@ -5134,15 +5188,22 @@ Stub_table::add_plt_call_entry( + if (r_type == elfcpp::R_PPC64_REL24_NOTOC) + { + if (!p.second && !p.first->second.notoc_ +- && !this->targ_->power10_stubs()) ++ && (!this->targ_->power10_stubs() ++ || this->targ_->power10_stubs_auto())) + this->need_resize_ = true; + p.first->second.notoc_ = 1; + } +- else if (!tocsave && !p.first->second.localentry0_) ++ else + { +- if (!p.second && !p.first->second.r2save_) ++ if (!p.second && !p.first->second.toc_) + this->need_resize_ = true; +- p.first->second.r2save_ = 1; ++ p.first->second.toc_ = 1; ++ if (!tocsave && !p.first->second.localentry0_) ++ { ++ if (!p.second && !p.first->second.r2save_) ++ this->need_resize_ = true; ++ p.first->second.r2save_ = 1; ++ } + } + } + if (p.second || (this->resizing_ && !p.first->second.iter_)) +@@ -5224,6 +5285,7 @@ Stub_table::add_long_branch_entry( + unsigned int r_type, + Address from, + Address to, ++ unsigned int other, + bool save_res) + { + Branch_stub_key key(object, to); +@@ -5231,11 +5293,20 @@ Stub_table::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 (size == 64 && p.first->second.other_ == 0) ++ p.first->second.other_ = other; + gold_assert(save_res == p.first->second.save_res_); + if (p.second || (this->resizing_ && !p.first->second.iter_)) + { +@@ -5330,7 +5401,7 @@ Stub_table::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 +5562,8 @@ class Output_data_glink : public Output_section_data + { + if (size == 64) + return (8 +- + (this->targ_->abiversion() < 2 ? 11 * 4 : 14 * 4)); ++ + (this->targ_->abiversion() < 2 ? 11 * 4 ++ : this->targ_->has_localentry0() ? 14 * 4 : 13 * 4)); + return 16 * 4; + } + +@@ -5534,6 +5606,12 @@ Output_data_glink::add_eh_frame(Layout* layout) + sizeof (Eh_cie<64>::eh_frame_cie), + glink_eh_frame_fde_64v1, + sizeof (glink_eh_frame_fde_64v1)); ++ else if (this->targ_->has_localentry0()) ++ layout->add_eh_frame_for_plt(this, ++ Eh_cie<64>::eh_frame_cie, ++ sizeof (Eh_cie<64>::eh_frame_cie), ++ glink_eh_frame_fde_64v2_localentry0, ++ sizeof (glink_eh_frame_fde_64v2)); + else + layout->add_eh_frame_for_plt(this, + Eh_cie<64>::eh_frame_cie, +@@ -5632,7 +5710,7 @@ Stub_table::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 +5754,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 +5776,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); ++ write_insn(p, mflr_11); + 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); ++ 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 +6011,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 +6023,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 +6146,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 +6160,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 +6246,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 +6259,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 +6362,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 +6458,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 +6499,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 +6554,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 +6621,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 +6650,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 +6707,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 +6848,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 +8472,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 +8487,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 +8511,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 +9269,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 +9284,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 +9308,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 +9650,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 +10406,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 +10464,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 +10549,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 +11051,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 +11068,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 +11089,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 67e2b1bb801..611c892b23f 100755 +--- a/gold/testsuite/split_i386.sh ++++ b/gold/testsuite/split_i386.sh +@@ -45,7 +45,7 @@ match 'lea.*-0x200\(%esp\),' split_i386_1.stdout + match 'stc' split_i386_2.stdout + match 'call.*__morestack_non_split>?$' split_i386_2.stdout + nomatch 'call.*__morestack>?$' split_i386_2.stdout +-match 'lea.*-0x4200\(%esp\),' split_i386_2.stdout ++match 'lea.*-0x100200\(%esp\),' split_i386_2.stdout + + match 'failed to match' split_i386_3.stdout + +diff --git a/gold/testsuite/split_x32.sh b/gold/testsuite/split_x32.sh +index aefdda5647f..bf395c97315 100755 +--- a/gold/testsuite/split_x32.sh ++++ b/gold/testsuite/split_x32.sh +@@ -44,9 +44,9 @@ match 'callq.*__morestack>?$' split_x32_1.stdout + match 'lea.*-0x200\(%rsp\),' split_x32_1.stdout + + match 'stc' split_x32_2.stdout +-match 'callq.*__morestack_non_split>?$' split_x32_2.stdout +-nomatch 'callq.*__morestack>?$' split_x32_2.stdout +-match 'lea.*-0x4200\(%rsp\),' split_x32_2.stdout ++match 'call.*__morestack_non_split>?$' split_x32_2.stdout ++nomatch 'call.*__morestack>?$' split_x32_2.stdout ++match 'lea.*-0x100200\(%rsp\),' split_x32_2.stdout + + match 'failed to match' split_x32_3.stdout + +diff --git a/gold/testsuite/split_x86_64.sh b/gold/testsuite/split_x86_64.sh +index 33bb4892ed6..a91009b45a5 100755 +--- a/gold/testsuite/split_x86_64.sh ++++ b/gold/testsuite/split_x86_64.sh +@@ -43,9 +43,9 @@ match 'callq.*__morestack>?$' split_x86_64_1.stdout + match 'lea.*-0x200\(%rsp\),' split_x86_64_1.stdout + + match 'stc' split_x86_64_2.stdout +-match 'callq.*__morestack_non_split>?$' split_x86_64_2.stdout +-nomatch 'callq.*__morestack>?$' split_x86_64_2.stdout +-match 'lea.*-0x4200\(%rsp\),' split_x86_64_2.stdout ++match 'call.*__morestack_non_split>?$' split_x86_64_2.stdout ++nomatch 'call.*__morestack>?$' split_x86_64_2.stdout ++match 'lea.*-0x100200\(%rsp\),' split_x86_64_2.stdout + + match 'failed to match' split_x86_64_3.stdout + +diff --git a/include/ChangeLog b/include/ChangeLog +index acdd85fc4df..5997c26899c 100644 +--- a/include/ChangeLog ++++ b/include/ChangeLog +@@ -1,3 +1,15 @@ ++2020-11-15 Mark Wielaard ++ ++ 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 d8a8cce7947..13825a3eef7 100644 +--- a/include/dwarf2.def ++++ b/include/dwarf2.def +@@ -805,3 +805,14 @@ DW_IDX (DW_IDX_hi_user, 0x3fff) + DW_IDX (DW_IDX_GNU_internal, 0x2000) + DW_IDX (DW_IDX_GNU_external, 0x2001) + DW_END_IDX ++ ++/* DWARF5 Unit type header encodings */ ++DW_FIRST_UT (DW_UT_compile, 0x01) ++DW_UT (DW_UT_type, 0x02) ++DW_UT (DW_UT_partial, 0x03) ++DW_UT (DW_UT_skeleton, 0x04) ++DW_UT (DW_UT_split_compile, 0x05) ++DW_UT (DW_UT_split_type, 0x06) ++DW_UT (DW_UT_lo_user, 0x80) ++DW_UT (DW_UT_hi_user, 0xff) ++DW_END_UT +diff --git a/include/dwarf2.h b/include/dwarf2.h +index 882453dce08..3f271fb0f7a 100644 +--- a/include/dwarf2.h ++++ b/include/dwarf2.h +@@ -55,6 +55,7 @@ + #define DW_CFA_DUP(name, value) , name = value + #define DW_IDX(name, value) , name = value + #define DW_IDX_DUP(name, value) , name = value ++#define DW_UT(name, value) , name = value + + #define DW_FIRST_TAG(name, value) enum dwarf_tag { \ + name = value +@@ -77,6 +78,9 @@ + #define DW_FIRST_IDX(name, value) enum dwarf_name_index_attribute { \ + name = value + #define DW_END_IDX }; ++#define DW_FIRST_UT(name, value) enum dwarf_unit_type { \ ++ name = value ++#define DW_END_UT }; + + #include "dwarf2.def" + +@@ -94,6 +98,8 @@ + #undef DW_END_CFA + #undef DW_FIRST_IDX + #undef DW_END_IDX ++#undef DW_FIRST_UT ++#undef DW_END_UT + + #undef DW_TAG + #undef DW_TAG_DUP +@@ -108,6 +114,7 @@ + #undef DW_CFA_DUP + #undef DW_IDX + #undef DW_IDX_DUP ++#undef DW_UT + + /* Flag that tells whether entry has a child or not. */ + #define DW_children_no 0 +@@ -450,19 +457,6 @@ enum dwarf_range_list_entry + DW_RLE_start_end = 0x06, + DW_RLE_start_length = 0x07 + }; +- +-/* Unit types in unit_type unit header field. */ +-enum dwarf_unit_type +- { +- DW_UT_compile = 0x01, +- DW_UT_type = 0x02, +- DW_UT_partial = 0x03, +- DW_UT_skeleton = 0x04, +- DW_UT_split_compile = 0x05, +- DW_UT_split_type = 0x06, +- DW_UT_lo_user = 0x80, +- DW_UT_hi_user = 0xff +- }; + + /* @@@ For use with GNU frame unwind information. */ + +@@ -534,6 +528,10 @@ extern const char *get_DW_CFA_name (unsigned int opc); + recognized. */ + extern const char *get_DW_IDX_name (unsigned int idx); + ++/* Return the name of a DW_UT_ constant, or NULL if the value is not ++ recognized. */ ++extern const char *get_DW_UT_name (unsigned int ut); ++ + #ifdef __cplusplus + } + #endif /* __cplusplus */ +diff --git a/ld/ChangeLog b/ld/ChangeLog +index 4eec7d29775..d8abc62717c 100644 +--- a/ld/ChangeLog ++++ b/ld/ChangeLog +@@ -1,3 +1,107 @@ ++2021-01-01 Alan Modra ++ ++ Apply from master ++ 2020-12-31 H.J. Lu ++ Alan Modra ++ PR 27128 ++ * testsuite/ld-elf/pr27128.s: New file. ++ * testsuite/ld-elf/pr27128.t: Likewise. ++ * testsuite/ld-elf/pr27128a.d: Likewise. ++ * testsuite/ld-elf/pr27128b.d: Likewise. ++ * testsuite/ld-elf/pr27128c.d: Likewise. ++ * testsuite/ld-elf/pr27128d.d: Likewise. ++ * testsuite/ld-elf/pr27128e.d: Likewise. ++ ++ 2020-08-24 Alan Modra ++ * testsuite/ld-sparc/tlssunbin32.rd: Update for new readelf output. ++ * testsuite/ld-sparc/tlssunbin64.rd: Likewise. ++ ++ 2020-08-22 H.J. Lu ++ PR ld/26382 ++ * testsuite/ld-elf/pr26302.nd: Updated. ++ * testsuite/ld-elf/pr26302.rd: New file. ++ * testsuite/ld-elf/shared.exp: Add a test for readelf -sW. ++ ++ 2020-08-10 H.J. Lu ++ PR binutils/26302 ++ * testsuite/ld-elf/pr26302.nd: New file. ++ * testsuite/ld-elf/pr26302.ver: Likewise. ++ * testsuite/ld-elf/pr26302a.c: Likewise. ++ * testsuite/ld-elf/pr26302b.c: Likewise. ++ * testsuite/ld-elf/shared.exp: Run binutils/26302 tests. ++ ++2020-12-04 H.J. Lu ++ ++ 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 1331d03113b..2df5a218e6a 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 bada3ade2d7..831d032fe56 100644 +--- a/ld/ldelf.c ++++ b/ld/ldelf.c +@@ -1589,6 +1589,8 @@ ldelf_before_allocation (char *audit, char *depaudit, + (char *) &ehdr_start->u + sizeof ehdr_start->u.def.next, + sizeof ehdr_start_save_u); + ehdr_start->type = bfd_link_hash_defined; ++ /* It will be converted to section-relative later. */ ++ ehdr_start->rel_from_abs = 1; + ehdr_start->u.def.section = bfd_abs_section_ptr; + ehdr_start->u.def.value = 0; + } +diff --git a/ld/testsuite/ld-elf/pr26302.nd b/ld/testsuite/ld-elf/pr26302.nd +new file mode 100644 +index 00000000000..bc9a675789a +--- /dev/null ++++ b/ld/testsuite/ld-elf/pr26302.nd +@@ -0,0 +1,3 @@ ++#... ++ +U foo@FOO ++#pass +diff --git a/ld/testsuite/ld-elf/pr26302.rd b/ld/testsuite/ld-elf/pr26302.rd +new file mode 100644 +index 00000000000..8f7b8a96e75 +--- /dev/null ++++ b/ld/testsuite/ld-elf/pr26302.rd +@@ -0,0 +1,12 @@ ++#... ++Symbol table '\.dynsym' contains [0-9]+ entries: ++ +Num: +Value +Size Type +Bind +Vis +Ndx Name ++#... ++ +[0-9]+: +[a-f0-9]+ +0 +FUNC +GLOBAL +DEFAULT +UND +foo@FOO \([0-9]+\) ++#... ++ ++Symbol table '\.symtab' contains [0-9]+ entries: ++ +Num: +Value +Size Type +Bind +Vis +Ndx Name ++#... ++ +[0-9]+: +[a-f0-9]+ +0 +FUNC +GLOBAL +DEFAULT +UND +foo@FOO ++#pass +diff --git a/ld/testsuite/ld-elf/pr26302.ver b/ld/testsuite/ld-elf/pr26302.ver +new file mode 100644 +index 00000000000..f2c03ac7a13 +--- /dev/null ++++ b/ld/testsuite/ld-elf/pr26302.ver +@@ -0,0 +1,5 @@ ++FOO ++{ ++global: ++ foo; ++}; +diff --git a/ld/testsuite/ld-elf/pr26302a.c b/ld/testsuite/ld-elf/pr26302a.c +new file mode 100644 +index 00000000000..cd0130cacdf +--- /dev/null ++++ b/ld/testsuite/ld-elf/pr26302a.c +@@ -0,0 +1,4 @@ ++void ++foo (void) ++{ ++} +diff --git a/ld/testsuite/ld-elf/pr26302b.c b/ld/testsuite/ld-elf/pr26302b.c +new file mode 100644 +index 00000000000..eae278df96d +--- /dev/null ++++ b/ld/testsuite/ld-elf/pr26302b.c +@@ -0,0 +1,7 @@ ++extern void foo (void); ++ ++void ++bar (void) ++{ ++ foo (); ++} +diff --git a/ld/testsuite/ld-elf/pr27128.s b/ld/testsuite/ld-elf/pr27128.s +new file mode 100644 +index 00000000000..7af5be183b6 +--- /dev/null ++++ b/ld/testsuite/ld-elf/pr27128.s +@@ -0,0 +1,13 @@ ++ .text ++ .globl foo ++ .type foo,%function ++foo: ++ .space 16 ++ .size foo, .-foo ++ .symver foo,foo@@VERS_2.0,remove ++ .globl _Zrm1XS_ ++ .type _Zrm1XS_,%function ++_Zrm1XS_: ++ .space 16 ++ .size _Zrm1XS_, .-_Zrm1XS_ ++ .symver _Zrm1XS_,_Zrm1XS_@@VERS_2.0,remove +diff --git a/ld/testsuite/ld-elf/pr27128.t b/ld/testsuite/ld-elf/pr27128.t +new file mode 100644 +index 00000000000..27669a505b6 +--- /dev/null ++++ b/ld/testsuite/ld-elf/pr27128.t +@@ -0,0 +1,6 @@ ++VERS_2.0 { ++global: ++ foo; _Zrm1XS_; ++local: ++ *; ++}; +diff --git a/ld/testsuite/ld-elf/pr27128a.d b/ld/testsuite/ld-elf/pr27128a.d +new file mode 100644 +index 00000000000..9ce8eaa5467 +--- /dev/null ++++ b/ld/testsuite/ld-elf/pr27128a.d +@@ -0,0 +1,16 @@ ++#source: pr27128.s ++#ld: -shared -version-script pr27128.t ++#nm: -n -P ++#target: [check_shared_lib_support] ++#notarget: [is_underscore_target] ++# _Zrm1XS_ doesn't have an extra underscore. ++#xfail: hppa64-*-* tic6x-*-* ++# hppa64 uses dot-symbols, tic6x DYN lacks dynamic sections for this testcase ++ ++#... ++VERS_2\.0 A 0+ ++#... ++foo@@VERS_2\.0 T [0-9a-f]+ 10 ++#... ++_Zrm1XS_@@VERS_2\.0 T [0-9a-f]+ 10 ++#pass +diff --git a/ld/testsuite/ld-elf/pr27128b.d b/ld/testsuite/ld-elf/pr27128b.d +new file mode 100644 +index 00000000000..934f8330d76 +--- /dev/null ++++ b/ld/testsuite/ld-elf/pr27128b.d +@@ -0,0 +1,16 @@ ++#source: pr27128.s ++#ld: -shared -version-script pr27128.t ++#nm: -n -D --format=posix ++#target: [check_shared_lib_support] ++#notarget: [is_underscore_target] ++# _Zrm1XS_ doesn't have an extra underscore. ++#xfail: hppa64-*-* tic6x-*-* ++# hppa64 uses dot-symbols, tic6x DYN lacks dynamic sections for this testcase ++ ++#... ++VERS_2\.0 A 0+ ++#... ++foo@@VERS_2\.0 T [0-9a-f]+ 10 ++#... ++_Zrm1XS_@@VERS_2\.0 T [0-9a-f]+ 10 ++#pass +diff --git a/ld/testsuite/ld-elf/pr27128c.d b/ld/testsuite/ld-elf/pr27128c.d +new file mode 100644 +index 00000000000..f80c57b64cd +--- /dev/null ++++ b/ld/testsuite/ld-elf/pr27128c.d +@@ -0,0 +1,16 @@ ++#source: pr27128.s ++#ld: -shared -version-script pr27128.t ++#nm: -n --format=sysv ++#target: [check_shared_lib_support] ++#notarget: [is_underscore_target] ++# _Zrm1XS_ doesn't have an extra underscore. ++#xfail: hppa64-*-* tic6x-*-* ++# hppa64 uses dot-symbols, tic6x DYN lacks dynamic sections for this testcase ++ ++#... ++VERS_2\.0 +\|0+\| +A +\| +OBJECT\| +\| +\|\*ABS\* ++#... ++foo@@VERS_2\.0 +\|[0-9a-f]+\| +T +\| +FUNC\|0+10\| +\|\.text ++#... ++_Zrm1XS_@@VERS_2\.0 +\|[0-9a-f]+\| +T +\| +FUNC\|0+10\| +\|\.text ++#pass +diff --git a/ld/testsuite/ld-elf/pr27128d.d b/ld/testsuite/ld-elf/pr27128d.d +new file mode 100644 +index 00000000000..ba628d22de3 +--- /dev/null ++++ b/ld/testsuite/ld-elf/pr27128d.d +@@ -0,0 +1,16 @@ ++#source: pr27128.s ++#ld: -shared -version-script pr27128.t ++#nm: -n -D --format=sysv ++#target: [check_shared_lib_support] ++#notarget: [is_underscore_target] ++# _Zrm1XS_ doesn't have an extra underscore. ++#xfail: hppa64-*-* tic6x-*-* ++# hppa64 uses dot-symbols, tic6x DYN lacks dynamic sections for this testcase ++ ++#... ++VERS_2\.0 +\|0+\| +A +\| +OBJECT\| +\| +\|\*ABS\* ++#... ++foo@@VERS_2\.0 +\|[0-9a-f]+\| +T +\| +FUNC\|0+10\| +\|\.text ++#... ++_Zrm1XS_@@VERS_2\.0 +\|[0-9a-f]+\| +T +\| +FUNC\|0+10\| +\|\.text ++#pass +diff --git a/ld/testsuite/ld-elf/pr27128e.d b/ld/testsuite/ld-elf/pr27128e.d +new file mode 100644 +index 00000000000..b8b1657fe71 +--- /dev/null ++++ b/ld/testsuite/ld-elf/pr27128e.d +@@ -0,0 +1,16 @@ ++#source: pr27128.s ++#ld: -shared -version-script pr27128.t ++#nm: -n --demangle -D --format=posix ++#target: [check_shared_lib_support] ++#notarget: [is_underscore_target] ++# _Zrm1XS_ doesn't have an extra underscore. ++#xfail: hppa64-*-* tic6x-*-* ++# hppa64 uses dot-symbols, tic6x DYN lacks dynamic sections for this testcase ++ ++#... ++VERS_2\.0 A 0+ ++#... ++foo@@VERS_2\.0 T [0-9a-f]+ 10 ++#... ++operator%\(X, X\)@@VERS_2\.0 T [0-9a-f]+ 10 ++#pass +diff --git a/ld/testsuite/ld-elf/shared.exp b/ld/testsuite/ld-elf/shared.exp +index e9e90120586..4de5b341834 100644 +--- a/ld/testsuite/ld-elf/shared.exp ++++ b/ld/testsuite/ld-elf/shared.exp +@@ -843,6 +843,25 @@ run_cc_link_tests [list \ + {{readelf {--dyn-syms --wide} pr26094-1b.rd}} \ + "pr26094-1" \ + ] \ ++ [list \ ++ "Build pr26302a.so" \ ++ "-shared -Wl,--version-script=pr26302.ver" \ ++ "-fPIC" \ ++ {pr26302a.c} \ ++ {} \ ++ "pr26302a.so" ++ ] \ ++ [list \ ++ "Build pr26302b.so" \ ++ "-shared -Wl,--no-as-needed tmpdir/pr26302a.so" \ ++ "-fPIC" \ ++ {pr26302b.c} \ ++ {{readelf {-sW} pr26302.rd} \ ++ {nm {-u} pr26302.nd} \ ++ {nm {-u -D} pr26302.nd} \ ++ {nm {-u -D --with-symbol-versions} pr26302.nd}} \ ++ "pr26302b.so" \ ++ ] \ + ] + + run_ld_link_tests [list \ +diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp +index 164c099cbbb..f031b01ffea 100644 +--- a/ld/testsuite/ld-i386/i386.exp ++++ b/ld/testsuite/ld-i386/i386.exp +@@ -470,6 +470,10 @@ run_dump_test "pr24322b" + run_dump_test "align-branch-1" + run_dump_test "pr26018" + run_dump_test "pr26263" ++run_dump_test "pr26711-1" ++run_dump_test "pr26711-2" ++run_dump_test "pr26711-3" ++run_dump_test "pr26869" + + if { !([istarget "i?86-*-linux*"] + || [istarget "i?86-*-gnu*"] +diff --git a/ld/testsuite/ld-i386/pr26711-1.d b/ld/testsuite/ld-i386/pr26711-1.d +new file mode 100644 +index 00000000000..24a8429fbca +--- /dev/null ++++ b/ld/testsuite/ld-i386/pr26711-1.d +@@ -0,0 +1,10 @@ ++#source: ../ld-x86-64/pr26711.s ++#source: ../ld-x86-64/start.s ++#as: --32 -mx86-used-note=no ++#ld: -m elf_i386 -z ibt ++#readelf: -n ++ ++Displaying notes found in: .note.gnu.property ++[ ]+Owner[ ]+Data size[ ]+Description ++ GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 feature: IBT +diff --git a/ld/testsuite/ld-i386/pr26711-2.d b/ld/testsuite/ld-i386/pr26711-2.d +new file mode 100644 +index 00000000000..e92559fa70f +--- /dev/null ++++ b/ld/testsuite/ld-i386/pr26711-2.d +@@ -0,0 +1,10 @@ ++#source: ../ld-x86-64/pr26711.s ++#source: ../ld-x86-64/start.s ++#as: --32 -mx86-used-note=no ++#ld: -m elf_i386 -z shstk ++#readelf: -n ++ ++Displaying notes found in: .note.gnu.property ++[ ]+Owner[ ]+Data size[ ]+Description ++ GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 feature: SHSTK +diff --git a/ld/testsuite/ld-i386/pr26711-3.d b/ld/testsuite/ld-i386/pr26711-3.d +new file mode 100644 +index 00000000000..df9bfced540 +--- /dev/null ++++ b/ld/testsuite/ld-i386/pr26711-3.d +@@ -0,0 +1,10 @@ ++#source: ../ld-x86-64/pr26711.s ++#source: ../ld-x86-64/start.s ++#as: --32 -mx86-used-note=no ++#ld: -m elf_i386 -z ibt -z shstk ++#readelf: -n ++ ++Displaying notes found in: .note.gnu.property ++[ ]+Owner[ ]+Data size[ ]+Description ++ GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 feature: IBT, SHSTK +diff --git a/ld/testsuite/ld-i386/pr26869.d b/ld/testsuite/ld-i386/pr26869.d +new file mode 100644 +index 00000000000..bfd00a70e9b +--- /dev/null ++++ b/ld/testsuite/ld-i386/pr26869.d +@@ -0,0 +1,14 @@ ++#as: --32 ++#ld: -shared -melf_i386 ++#readelf: -r -s --wide ++ ++Relocation section '.rel.dyn' at offset 0x[a-f0-9]+ contains 1 entry: ++ Offset Info Type Sym. Value Symbol's Name ++0+[a-f0-9]+ 00000008 R_386_RELATIVE ++ ++#... ++Symbol table '.symtab' contains [0-9]+ entries: ++ Num: Value Size Type Bind Vis Ndx Name ++#... ++ +[a-f0-9]+: 00000000 0 NOTYPE LOCAL DEFAULT 1 __ehdr_start ++#pass +diff --git a/ld/testsuite/ld-i386/pr26869.s b/ld/testsuite/ld-i386/pr26869.s +new file mode 100644 +index 00000000000..e492b98e869 +--- /dev/null ++++ b/ld/testsuite/ld-i386/pr26869.s +@@ -0,0 +1,3 @@ ++ .text ++foo: ++ pushl __ehdr_start@GOT(%ebx) +diff --git a/ld/testsuite/ld-i386/property-3.r b/ld/testsuite/ld-i386/property-3.r +index 1abb90b3a2e..e95d47ae8d6 100644 +--- a/ld/testsuite/ld-i386/property-3.r ++++ b/ld/testsuite/ld-i386/property-3.r +@@ -3,5 +3,6 @@ Displaying notes found in: .note.gnu.property + [ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: stack size: 0x800000 ++#... + x86 ISA needed: CMOV, SSE + #pass +diff --git a/ld/testsuite/ld-i386/property-4.r b/ld/testsuite/ld-i386/property-4.r +index e94846e88ea..a4b7bb71adf 100644 +--- a/ld/testsuite/ld-i386/property-4.r ++++ b/ld/testsuite/ld-i386/property-4.r +@@ -3,5 +3,6 @@ Displaying notes found in: .note.gnu.property + [ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: stack size: 0x800000 ++#... + x86 ISA needed: CMOV, SSE, SSE3 + #pass +diff --git a/ld/testsuite/ld-i386/property-5.r b/ld/testsuite/ld-i386/property-5.r +index bd87a9317ef..5ff95648c29 100644 +--- a/ld/testsuite/ld-i386/property-5.r ++++ b/ld/testsuite/ld-i386/property-5.r +@@ -3,5 +3,6 @@ Displaying notes found in: .note.gnu.property + [ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: stack size: 0x900000 ++#... + x86 ISA needed: CMOV, SSE, SSE3 + #pass +diff --git a/ld/testsuite/ld-powerpc/elfv2so.d b/ld/testsuite/ld-powerpc/elfv2so.d +index 0162bd0880e..4018f0536c6 100644 +--- a/ld/testsuite/ld-powerpc/elfv2so.d ++++ b/ld/testsuite/ld-powerpc/elfv2so.d +@@ -74,12 +74,11 @@ Disassembly of section \.text: + .*: (7c 08 02 a6|a6 02 08 7c) mflr r0 + .*: (42 9f 00 05|05 00 9f 42) bcl .* + .*: (7d 68 02 a6|a6 02 68 7d) mflr r11 +-.*: (18 00 41 f8|f8 41 00 18) std r2,24\(r1\) +-.*: (e8 4b ff f0|f0 ff 4b e8) ld r2,-16\(r11\) + .*: (7c 08 03 a6|a6 03 08 7c) mtlr r0 ++.*: (e8 0b ff f0|f0 ff 0b e8) ld r0,-16\(r11\) + .*: (7d 8b 60 50|50 60 8b 7d) subf r12,r11,r12 +-.*: (7d 62 5a 14|14 5a 62 7d) add r11,r2,r11 +-.*: (38 0c ff d0|d0 ff 0c 38) addi r0,r12,-48 ++.*: (7d 60 5a 14|14 5a 60 7d) add r11,r0,r11 ++.*: (38 0c ff d4|d4 ff 0c 38) addi r0,r12,-44 + .*: (e9 8b 00 00|00 00 8b e9) ld r12,0\(r11\) + .*: (78 00 f0 82|82 f0 00 78) rldicl r0,r0,62,2 + .*: (7d 89 03 a6|a6 03 89 7d) mtctr r12 +@@ -87,16 +86,16 @@ Disassembly of section \.text: + .*: (4e 80 04 20|20 04 80 4e) bctr + + .* : +-.*: (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 1e519c0d1b0..3448f8b37e6 100644 +--- a/ld/testsuite/ld-powerpc/notoc2.d ++++ b/ld/testsuite/ld-powerpc/notoc2.d +@@ -22,8 +22,8 @@ Disassembly of section \.text: + .*: (39 80 ff ff|ff ff 80 39) + .*: (06 10 00 00|00 00 10 06) pla r12,0 + .*: (39 80 00 00|00 00 80 39) +-.*: (06 10 00 00|00 00 10 06) pla r3,92 +-.*: (38 60 00 5c|5c 00 60 38) ++.*: (06 10 00 00|00 00 10 06) pla r3,88 ++.*: (38 60 00 58|58 00 60 38) + .*: (4b ff ff 99|99 ff ff 4b) bl .* <.*\.plt_call\.puts> + .*: (60 00 00 00|00 00 00 60) nop + #pass +diff --git a/ld/testsuite/ld-powerpc/tlsdesc.wf b/ld/testsuite/ld-powerpc/tlsdesc.wf +index 09503fa0053..e7d4522b507 100644 +--- a/ld/testsuite/ld-powerpc/tlsdesc.wf ++++ b/ld/testsuite/ld-powerpc/tlsdesc.wf +@@ -38,9 +38,9 @@ Contents of the \.eh_frame section: + DW_CFA_nop + + 0+4c 0+14 0+50 FDE cie=0+ pc=0+2f8\.\.0+32c +- DW_CFA_advance_loc: 4 to 0+2fc ++ DW_CFA_advance_loc: 8 to 0+300 + DW_CFA_register: r65 in r12 +- DW_CFA_advance_loc: 20 to 0+310 ++ DW_CFA_advance_loc: 16 to 0+310 + DW_CFA_restore_extended: r65 + + 0+64 0+10 0+68 FDE cie=0+ pc=0+2e0\.\.0+2ec +diff --git a/ld/testsuite/ld-powerpc/tlsdesc2.d b/ld/testsuite/ld-powerpc/tlsdesc2.d +index 47aedbecb88..c271c949b01 100644 +--- a/ld/testsuite/ld-powerpc/tlsdesc2.d ++++ b/ld/testsuite/ld-powerpc/tlsdesc2.d +@@ -53,12 +53,11 @@ Disassembly of section \.text: + .*: (7c 08 02 a6|a6 02 08 7c) mflr r0 + .*: (42 9f 00 05|05 00 9f 42) bcl .* + .*: (7d 68 02 a6|a6 02 68 7d) mflr r11 +-.*: (f8 41 00 18|18 00 41 f8) std r2,24\(r1\) +-.*: (e8 4b ff f0|f0 ff 4b e8) ld r2,-16\(r11\) + .*: (7c 08 03 a6|a6 03 08 7c) mtlr r0 ++.*: (e8 0b ff f0|f0 ff 0b e8) ld r0,-16\(r11\) + .*: (7d 8b 60 50|50 60 8b 7d) subf r12,r11,r12 +-.*: (7d 62 5a 14|14 5a 62 7d) add r11,r2,r11 +-.*: (38 0c ff d0|d0 ff 0c 38) addi r0,r12,-48 ++.*: (7d 60 5a 14|14 5a 60 7d) add r11,r0,r11 ++.*: (38 0c ff d4|d4 ff 0c 38) addi r0,r12,-44 + .*: (e9 8b 00 00|00 00 8b e9) ld r12,0\(r11\) + .*: (78 00 f0 82|82 f0 00 78) rldicl r0,r0,62,2 + .*: (7d 89 03 a6|a6 03 89 7d) mtctr r12 +@@ -66,4 +65,4 @@ Disassembly of section \.text: + .*: (4e 80 04 20|20 04 80 4e) bctr + + .* <__tls_get_addr_opt@plt>: +-.*: (4b ff ff c8|c8 ff ff 4b) b .* <__glink_PLTresolve> ++.*: (4b ff ff cc|cc ff ff 4b) b .* <__glink_PLTresolve> +diff --git a/ld/testsuite/ld-powerpc/tlsdesc2.wf b/ld/testsuite/ld-powerpc/tlsdesc2.wf +index cb92c294b15..79a417ba06e 100644 +--- a/ld/testsuite/ld-powerpc/tlsdesc2.wf ++++ b/ld/testsuite/ld-powerpc/tlsdesc2.wf +@@ -37,10 +37,10 @@ Contents of the \.eh_frame section: + DW_CFA_nop + DW_CFA_nop + +-0+4c 0+14 0+50 FDE cie=0+ pc=0+318\.\.0+354 +- DW_CFA_advance_loc: 4 to 0+31c ++0+4c 0+14 0+50 FDE cie=0+ pc=0+318\.\.0+350 ++ DW_CFA_advance_loc: 8 to 0+320 + DW_CFA_register: r65 in r0 +- DW_CFA_advance_loc: 28 to 0+338 ++ DW_CFA_advance_loc: 8 to 0+328 + DW_CFA_restore_extended: r65 + + 0+64 0+10 0+68 FDE cie=0+ pc=0+300\.\.0+30c +diff --git a/ld/testsuite/ld-powerpc/tlsopt5.d b/ld/testsuite/ld-powerpc/tlsopt5.d +index 0fcb79821b8..efd6debc555 100644 +--- a/ld/testsuite/ld-powerpc/tlsopt5.d ++++ b/ld/testsuite/ld-powerpc/tlsopt5.d +@@ -49,12 +49,11 @@ Disassembly of section \.text: + .*: (a6 02 08 7c|7c 08 02 a6) mflr r0 + .*: (05 00 9f 42|42 9f 00 05) bcl .* + .*: (a6 02 68 7d|7d 68 02 a6) mflr r11 +-.*: (18 00 41 f8|f8 41 00 18) std r2,24\(r1\) +-.*: (f0 ff 4b e8|e8 4b ff f0) ld r2,-16\(r11\) + .*: (a6 03 08 7c|7c 08 03 a6) mtlr r0 ++.*: (f0 ff 0b e8|e8 0b ff f0) ld r0,-16\(r11\) + .*: (50 60 8b 7d|7d 8b 60 50) subf r12,r11,r12 +-.*: (14 5a 62 7d|7d 62 5a 14) add r11,r2,r11 +-.*: (d0 ff 0c 38|38 0c ff d0) addi r0,r12,-48 ++.*: (14 5a 60 7d|7d 60 5a 14) add r11,r0,r11 ++.*: (d4 ff 0c 38|38 0c ff d4) addi r0,r12,-44 + .*: (00 00 8b e9|e9 8b 00 00) ld r12,0\(r11\) + .*: (82 f0 00 78|78 00 f0 82) rldicl r0,r0,62,2 + .*: (a6 03 89 7d|7d 89 03 a6) mtctr r12 +@@ -62,7 +61,7 @@ Disassembly of section \.text: + .*: (20 04 80 4e|4e 80 04 20) bctr + + .* <__tls_get_addr_opt@plt>: +-.* (c8 ff ff 4b|4b ff ff c8) b .* ++.* (cc ff ff 4b|4b ff ff cc) b .* + + .* : +-.*: (c4 ff ff 4b|4b ff ff c4) b .* ++.*: (c8 ff ff 4b|4b ff ff c8) b .* +diff --git a/ld/testsuite/ld-powerpc/tlsopt5.wf b/ld/testsuite/ld-powerpc/tlsopt5.wf +index f0453610e08..84bd94ed728 100644 +--- a/ld/testsuite/ld-powerpc/tlsopt5.wf ++++ b/ld/testsuite/ld-powerpc/tlsopt5.wf +@@ -16,9 +16,9 @@ Contents of the \.eh_frame section: + DW_CFA_restore_extended: r65 + + 0+2c 0+14 0+30 FDE cie=0+ pc=.* +- DW_CFA_advance_loc: 4 to .* ++ DW_CFA_advance_loc: 8 to .* + DW_CFA_register: r65 in r0 +- DW_CFA_advance_loc: 28 to .* ++ DW_CFA_advance_loc: 8 to .* + DW_CFA_restore_extended: r65 + + 0+44 0+10 0+48 FDE cie=0+ pc=.* +diff --git a/ld/testsuite/ld-powerpc/tlsopt6.d b/ld/testsuite/ld-powerpc/tlsopt6.d +index 4ca64092c1d..15def719cba 100644 +--- a/ld/testsuite/ld-powerpc/tlsopt6.d ++++ b/ld/testsuite/ld-powerpc/tlsopt6.d +@@ -67,12 +67,11 @@ Disassembly of section \.text: + .*: (a6 02 08 7c|7c 08 02 a6) mflr r0 + .*: (05 00 9f 42|42 9f 00 05) bcl .* + .*: (a6 02 68 7d|7d 68 02 a6) mflr r11 +-.*: (18 00 41 f8|f8 41 00 18) std r2,24\(r1\) +-.*: (f0 ff 4b e8|e8 4b ff f0) ld r2,-16\(r11\) + .*: (a6 03 08 7c|7c 08 03 a6) mtlr r0 ++.*: (f0 ff 0b e8|e8 0b ff f0) ld r0,-16\(r11\) + .*: (50 60 8b 7d|7d 8b 60 50) subf r12,r11,r12 +-.*: (14 5a 62 7d|7d 62 5a 14) add r11,r2,r11 +-.*: (d0 ff 0c 38|38 0c ff d0) addi r0,r12,-48 ++.*: (14 5a 60 7d|7d 60 5a 14) add r11,r0,r11 ++.*: (d4 ff 0c 38|38 0c ff d4) addi r0,r12,-44 + .*: (00 00 8b e9|e9 8b 00 00) ld r12,0\(r11\) + .*: (82 f0 00 78|78 00 f0 82) rldicl r0,r0,62,2 + .*: (a6 03 89 7d|7d 89 03 a6) mtctr r12 +@@ -80,7 +79,7 @@ Disassembly of section \.text: + .*: (20 04 80 4e|4e 80 04 20) bctr + + .* <__tls_get_addr_opt@plt>: +-.* (c8 ff ff 4b|4b ff ff c8) b .* ++.* (cc ff ff 4b|4b ff ff cc) b .* + + .* : +-.*: (c4 ff ff 4b|4b ff ff c4) b .* ++.*: (c8 ff ff 4b|4b ff ff c8) b .* +diff --git a/ld/testsuite/ld-powerpc/tlsopt6.wf b/ld/testsuite/ld-powerpc/tlsopt6.wf +index abb414a6339..c2b96163523 100644 +--- a/ld/testsuite/ld-powerpc/tlsopt6.wf ++++ b/ld/testsuite/ld-powerpc/tlsopt6.wf +@@ -38,9 +38,9 @@ Contents of the \.eh_frame section: + DW_CFA_nop + + 0+4c 0+14 0+50 FDE cie=0+ pc=.* +- DW_CFA_advance_loc: 4 to .* ++ DW_CFA_advance_loc: 8 to .* + DW_CFA_register: r65 in r0 +- DW_CFA_advance_loc: 28 to .* ++ DW_CFA_advance_loc: 8 to .* + DW_CFA_restore_extended: r65 + + 0+64 0+10 0+68 FDE cie=0+ pc=.* +diff --git a/ld/testsuite/ld-sparc/tlssunbin32.rd b/ld/testsuite/ld-sparc/tlssunbin32.rd +index 937611da91b..a41f27d644c 100644 +--- a/ld/testsuite/ld-sparc/tlssunbin32.rd ++++ b/ld/testsuite/ld-sparc/tlssunbin32.rd +@@ -111,7 +111,7 @@ Symbol table '\.symtab' contains [0-9]+ entries: + .* FUNC +GLOBAL +DEFAULT +8 _start + .* TLS +GLOBAL +HIDDEN +9 sh4 + .* TLS +GLOBAL +DEFAULT +10 bg7 +-.* FUNC +GLOBAL +DEFAULT +UND __tls_get_addr@@SUNWprivate_1.1 ++.* FUNC +GLOBAL +DEFAULT +UND __tls_get_addr@SUNWprivate_1.1 + .* TLS +GLOBAL +HIDDEN +9 sh5 + .* NOTYPE +GLOBAL +DEFAULT +12 __bss_start + .* TLS +GLOBAL +DEFAULT +UND sG6 +diff --git a/ld/testsuite/ld-sparc/tlssunbin64.rd b/ld/testsuite/ld-sparc/tlssunbin64.rd +index 07a632c5ec9..4d792b84108 100644 +--- a/ld/testsuite/ld-sparc/tlssunbin64.rd ++++ b/ld/testsuite/ld-sparc/tlssunbin64.rd +@@ -111,7 +111,7 @@ Symbol table '\.symtab' contains [0-9]+ entries: + .* FUNC +GLOBAL +DEFAULT +8 _start + .* TLS +GLOBAL +HIDDEN +9 sh4 + .* TLS +GLOBAL +DEFAULT +10 bg7 +-.* FUNC +GLOBAL +DEFAULT +UND __tls_get_addr@@SUNWprivate_1.1 ++.* FUNC +GLOBAL +DEFAULT +UND __tls_get_addr@SUNWprivate_1.1 + .* TLS +GLOBAL +HIDDEN +9 sh5 + .* NOTYPE +GLOBAL +DEFAULT +12 __bss_start + .* TLS +GLOBAL +DEFAULT +UND sG6 +diff --git a/ld/testsuite/ld-x86-64/pr26711-1-x32.d b/ld/testsuite/ld-x86-64/pr26711-1-x32.d +new file mode 100644 +index 00000000000..67013195b2e +--- /dev/null ++++ b/ld/testsuite/ld-x86-64/pr26711-1-x32.d +@@ -0,0 +1,10 @@ ++#source: pr26711.s ++#source: start.s ++#as: --x32 -mx86-used-note=no ++#ld: -m elf32_x86_64 -z ibt ++#readelf: -n ++ ++Displaying notes found in: .note.gnu.property ++[ ]+Owner[ ]+Data size[ ]+Description ++ GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 feature: IBT +diff --git a/ld/testsuite/ld-x86-64/pr26711-1.d b/ld/testsuite/ld-x86-64/pr26711-1.d +new file mode 100644 +index 00000000000..d8e3cbf19ba +--- /dev/null ++++ b/ld/testsuite/ld-x86-64/pr26711-1.d +@@ -0,0 +1,10 @@ ++#source: pr26711.s ++#source: start.s ++#as: --64 -defsym __64_bit__=1 -mx86-used-note=no ++#ld: -m elf_x86_64 -z ibt ++#readelf: -n ++ ++Displaying notes found in: .note.gnu.property ++[ ]+Owner[ ]+Data size[ ]+Description ++ GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 feature: IBT +diff --git a/ld/testsuite/ld-x86-64/pr26711-2-x32.d b/ld/testsuite/ld-x86-64/pr26711-2-x32.d +new file mode 100644 +index 00000000000..9822f8df4dc +--- /dev/null ++++ b/ld/testsuite/ld-x86-64/pr26711-2-x32.d +@@ -0,0 +1,10 @@ ++#source: pr26711.s ++#source: start.s ++#as: --x32 -mx86-used-note=no ++#ld: -m elf32_x86_64 -z shstk ++#readelf: -n ++ ++Displaying notes found in: .note.gnu.property ++[ ]+Owner[ ]+Data size[ ]+Description ++ GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 feature: SHSTK +diff --git a/ld/testsuite/ld-x86-64/pr26711-2.d b/ld/testsuite/ld-x86-64/pr26711-2.d +new file mode 100644 +index 00000000000..e24cfbfc0b0 +--- /dev/null ++++ b/ld/testsuite/ld-x86-64/pr26711-2.d +@@ -0,0 +1,10 @@ ++#source: pr26711.s ++#source: start.s ++#as: --64 -defsym __64_bit__=1 -mx86-used-note=no ++#ld: -m elf_x86_64 -z shstk ++#readelf: -n ++ ++Displaying notes found in: .note.gnu.property ++[ ]+Owner[ ]+Data size[ ]+Description ++ GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 feature: SHSTK +diff --git a/ld/testsuite/ld-x86-64/pr26711-3-x32.d b/ld/testsuite/ld-x86-64/pr26711-3-x32.d +new file mode 100644 +index 00000000000..0661c7d5236 +--- /dev/null ++++ b/ld/testsuite/ld-x86-64/pr26711-3-x32.d +@@ -0,0 +1,10 @@ ++#source: pr26711.s ++#source: start.s ++#as: --x32 -mx86-used-note=no ++#ld: -m elf32_x86_64 -z ibt -z shstk ++#readelf: -n ++ ++Displaying notes found in: .note.gnu.property ++[ ]+Owner[ ]+Data size[ ]+Description ++ GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 feature: IBT, SHSTK +diff --git a/ld/testsuite/ld-x86-64/pr26711-3.d b/ld/testsuite/ld-x86-64/pr26711-3.d +new file mode 100644 +index 00000000000..87bc3ccfb05 +--- /dev/null ++++ b/ld/testsuite/ld-x86-64/pr26711-3.d +@@ -0,0 +1,10 @@ ++#source: pr26711.s ++#source: start.s ++#as: --64 -defsym __64_bit__=1 -mx86-used-note=no ++#ld: -m elf_x86_64 -z ibt -z shstk ++#readelf: -n ++ ++Displaying notes found in: .note.gnu.property ++[ ]+Owner[ ]+Data size[ ]+Description ++ GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 feature: IBT, SHSTK +diff --git a/ld/testsuite/ld-x86-64/pr26711.s b/ld/testsuite/ld-x86-64/pr26711.s +new file mode 100644 +index 00000000000..8fa185d42a7 +--- /dev/null ++++ b/ld/testsuite/ld-x86-64/pr26711.s +@@ -0,0 +1,33 @@ ++ .section ".note.gnu.property", "a" ++.ifdef __64_bit__ ++ .p2align 3 ++.else ++ .p2align 2 ++.endif ++ .long 1f - 0f /* name length */ ++ .long 5f - 2f /* data length */ ++ .long 5 /* note type */ ++0: .asciz "GNU" /* vendor name */ ++1: ++.ifdef __64_bit__ ++ .p2align 3 ++.else ++ .p2align 2 ++.endif ++2: .long 0xc0001002 /* pr_type. */ ++ .long 4f - 3f /* pr_datasz. */ ++3: ++ .long 0x30 ++4: ++.ifdef __64_bit__ ++ .p2align 3 ++.else ++ .p2align 2 ++.endif ++5: ++ ++ .text ++ .globl foo ++ .type foo, @function ++foo: ++ ret +diff --git a/ld/testsuite/ld-x86-64/pr27016a.d b/ld/testsuite/ld-x86-64/pr27016a.d +new file mode 100644 +index 00000000000..13200e3aed3 +--- /dev/null ++++ b/ld/testsuite/ld-x86-64/pr27016a.d +@@ -0,0 +1,23 @@ ++#source: pr27016a.s ++#source: pr27016b.s ++#as: --64 -mx86-used-note=no -mrelax-relocations=no ++#ld: -m elf_x86_64 -z max-page-size=0x200000 -z noseparate-code -e main ++#objdump: -dw ++ ++.*: +file format .* ++ ++ ++Disassembly of section .text: ++ ++0+4000e8
: ++ +[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 00000000000..b64851a5ffb +--- /dev/null ++++ b/ld/testsuite/ld-x86-64/pr27016a.s +@@ -0,0 +1,23 @@ ++ .text ++ .comm global_int,4,4 ++ .globl main ++ .type main, @function ++main: ++ .cfi_startproc ++ pushq %rbp ++ .cfi_def_cfa_offset 16 ++ .cfi_offset 6, -16 ++ movq %rsp, %rbp ++ .cfi_def_cfa_register 6 ++ movq thesym@GOTPCREL(%rip), %r11 ++ movl (%r11), %eax ++ leal 1(%rax), %edx ++ movq thesym@GOTPCREL(%rip), %r11 ++ movl %edx, (%r11) ++ movl $0, %eax ++ popq %rbp ++ .cfi_def_cfa 7, 8 ++ ret ++ .cfi_endproc ++ .size main, .-main ++ .section .note.GNU-stack,"",@progbits +diff --git a/ld/testsuite/ld-x86-64/pr27016b.d b/ld/testsuite/ld-x86-64/pr27016b.d +new file mode 100644 +index 00000000000..d1b144bfaa3 +--- /dev/null ++++ b/ld/testsuite/ld-x86-64/pr27016b.d +@@ -0,0 +1,23 @@ ++#source: pr27016a.s ++#source: pr27016b.s ++#as: --64 -mx86-used-note=no -mrelax-relocations=yes ++#ld: -m elf_x86_64 -z max-page-size=0x200000 -z noseparate-code -e main ++#objdump: -dw ++ ++.*: +file format .* ++ ++ ++Disassembly of section .text: ++ ++0+4000e8
: ++ +[a-f0-9]+: 55 push %rbp ++ +[a-f0-9]+: 48 89 e5 mov %rsp,%rbp ++ +[a-f0-9]+: 49 c7 c3 2c 40 40 00 mov \$0x40402c,%r11 ++ +[a-f0-9]+: 41 8b 03 mov \(%r11\),%eax ++ +[a-f0-9]+: 8d 50 01 lea 0x1\(%rax\),%edx ++ +[a-f0-9]+: 49 c7 c3 2c 40 40 00 mov \$0x40402c,%r11 ++ +[a-f0-9]+: 41 89 13 mov %edx,\(%r11\) ++ +[a-f0-9]+: b8 00 00 00 00 mov \$0x0,%eax ++ +[a-f0-9]+: 5d pop %rbp ++ +[a-f0-9]+: c3 retq ++#pass +diff --git a/ld/testsuite/ld-x86-64/pr27016b.s b/ld/testsuite/ld-x86-64/pr27016b.s +new file mode 100644 +index 00000000000..ded8d7a826c +--- /dev/null ++++ b/ld/testsuite/ld-x86-64/pr27016b.s +@@ -0,0 +1,4 @@ ++ .globl thesym ++thesym = 0x40402c ++ ++ .section .note.GNU-stack,"",@progbits +diff --git a/ld/testsuite/ld-x86-64/property-3.r b/ld/testsuite/ld-x86-64/property-3.r +index 1abb90b3a2e..e95d47ae8d6 100644 +--- a/ld/testsuite/ld-x86-64/property-3.r ++++ b/ld/testsuite/ld-x86-64/property-3.r +@@ -3,5 +3,6 @@ Displaying notes found in: .note.gnu.property + [ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: stack size: 0x800000 ++#... + x86 ISA needed: CMOV, SSE + #pass +diff --git a/ld/testsuite/ld-x86-64/property-4.r b/ld/testsuite/ld-x86-64/property-4.r +index e94846e88ea..a4b7bb71adf 100644 +--- a/ld/testsuite/ld-x86-64/property-4.r ++++ b/ld/testsuite/ld-x86-64/property-4.r +@@ -3,5 +3,6 @@ Displaying notes found in: .note.gnu.property + [ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: stack size: 0x800000 ++#... + x86 ISA needed: CMOV, SSE, SSE3 + #pass +diff --git a/ld/testsuite/ld-x86-64/property-5.r b/ld/testsuite/ld-x86-64/property-5.r +index bd87a9317ef..5ff95648c29 100644 +--- a/ld/testsuite/ld-x86-64/property-5.r ++++ b/ld/testsuite/ld-x86-64/property-5.r +@@ -3,5 +3,6 @@ Displaying notes found in: .note.gnu.property + [ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: stack size: 0x900000 ++#... + x86 ISA needed: CMOV, SSE, SSE3 + #pass +diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp +index d836f334963..91410304ea0 100644 +--- a/ld/testsuite/ld-x86-64/x86-64.exp ++++ b/ld/testsuite/ld-x86-64/x86-64.exp +@@ -432,6 +432,12 @@ run_dump_test "pr25416-3" + run_dump_test "pr25416-4" + run_dump_test "pr26018" + run_dump_test "pr26263" ++run_dump_test "pr26711-1" ++run_dump_test "pr26711-1-x32" ++run_dump_test "pr26711-2" ++run_dump_test "pr26711-2-x32" ++run_dump_test "pr26711-3" ++run_dump_test "pr26711-3-x32" + + if ![istarget "x86_64-*-linux*"] { + return +@@ -641,6 +647,8 @@ run_dump_test "pr20253-5b" + run_dump_test "tlsdesc2" + run_dump_test "pr22048" + run_dump_test "pr22929" ++run_dump_test "pr27016a" ++run_dump_test "pr27016b" + + proc undefined_weak {cflags ldflags} { + set testname "Undefined weak symbol" +diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog +index 19d2b702d62..42daff15948 100644 +--- a/libiberty/ChangeLog ++++ b/libiberty/ChangeLog +@@ -1,3 +1,12 @@ ++2020-11-15 Mark Wielaard ++ ++ 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 968d1917532..af11668b431 100644 +--- a/libiberty/dwarfnames.c ++++ b/libiberty/dwarfnames.c +@@ -64,6 +64,11 @@ Boston, MA 02110-1301, USA. */ + switch (idx) { \ + DW_IDX (name, value) + #define DW_END_IDX } return 0; } ++#define DW_FIRST_UT(name, value) \ ++ const char *get_DW_UT_name (unsigned int ut) { \ ++ switch (ut) { \ ++ DW_UT (name, value) ++#define DW_END_UT } return 0; } + + #define DW_TAG(name, value) case name: return # name ; + #define DW_TAG_DUP(name, value) +@@ -78,6 +83,7 @@ Boston, MA 02110-1301, USA. */ + #define DW_CFA_DUP(name, value) + #define DW_IDX(name, value) case name: return # name ; + #define DW_IDX_DUP(name, value) ++#define DW_UT(name, value) case name: return # name ; + + #include "dwarf2.def" + +@@ -95,6 +101,7 @@ Boston, MA 02110-1301, USA. */ + #undef DW_END_CFA + #undef DW_FIRST_IDX + #undef DW_END_IDX ++#undef DW_END_UT + + #undef DW_TAG + #undef DW_TAG_DUP +diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog +index b53a2bba98d..fada4f8c94b 100644 +--- a/opcodes/ChangeLog ++++ b/opcodes/ChangeLog +@@ -1,3 +1,31 @@ ++2020-10-07 H.J. Lu ++ ++ 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 8e0b4a1c2b1..ea2ca1bb88e 100644 +--- a/opcodes/i386-dis.c ++++ b/opcodes/i386-dis.c +@@ -10496,7 +10496,7 @@ static const struct dis386 mod_table[][2] = { + }, + { + /* MOD_0F38F9_PREFIX_0 */ +- { "movdiri", { Ev, Gv }, PREFIX_OPCODE }, ++ { "movdiri", { Ev, Gdq }, PREFIX_OPCODE }, + }, + { + /* MOD_62_32BIT */ +@@ -14190,7 +14190,7 @@ OP_E_memory (int bytemode, int sizeflag) + /* Without base nor index registers, zero-extend the + lower 32-bit displacement to 64 bits. */ + disp = (unsigned int) disp; +- needindex = scale; ++ needindex = 1; + } + needaddr32 = 1; + } +diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c +index 6932e4e820d..d15bde1326e 100644 +--- a/opcodes/ppc-opc.c ++++ b/opcodes/ppc-opc.c +@@ -4441,7 +4441,7 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"nmachhws", XO (4, 110,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, + {"nmachhws.", XO (4, 110,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, + {"vadduqm", VX (4, 256), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, +-{"vcmpuq", VX (4, 257), VXBF_MASK, POWER10, 0, {OBF, VA, VB}}, ++{"vcmpuq", VX (4, 257), VXBF_MASK, POWER10, 0, {BF, VA, VB}}, + {"vmaxsb", VX (4, 258), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, + {"vslb", VX (4, 260), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, + {"vslq", VX (4, 261), VX_MASK, POWER10, 0, {VD, VA, VB}}, +@@ -4459,7 +4459,7 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"macchwu", XO (4, 140,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, + {"macchwu.", XO (4, 140,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, + {"vaddcuq", VX (4, 320), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, +-{"vcmpsq", VX (4, 321), VXBF_MASK, POWER10, 0, {OBF, VA, VB}}, ++{"vcmpsq", VX (4, 321), VXBF_MASK, POWER10, 0, {BF, VA, VB}}, + {"vmaxsh", VX (4, 322), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, + {"vslh", VX (4, 324), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, + {"vrlqnm", VX (4, 325), VX_MASK, POWER10, 0, {VD, VA, VB}}, +@@ -6114,6 +6114,7 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"rlnm.", M(23,1), M_MASK, PWRCOM, PPCVLE, {RA, RS, RB, MBE, ME}}, + + {"nop", OP(24), 0xffffffff, PPCCOM, PPCVLE, {0}}, ++{"exser", 0x63ff0000, 0xffffffff, POWER9, PPCVLE, {0}}, + {"ori", OP(24), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}}, + {"oril", OP(24), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}}, + +@@ -6236,7 +6237,7 @@ const struct powerpc_opcode powerpc_opcodes[] = { + + {"ldx", X(31,21), X_MASK, PPC64, 0, {RT, RA0, RB}}, + +-{"icbt", X(31,22), X_MASK, BOOKE|PPCE300|PPCA2|PPC476, 0, {CT, RA0, RB}}, ++{"icbt", X(31,22), X_MASK, POWER5|BOOKE|PPCE300, 0, {CT, RA0, RB}}, + + {"lwzx", X(31,23), X_MASK, PPCCOM, 0, {RT, RA0, RB}}, + {"lx", X(31,23), X_MASK, PWRCOM, 0, {RT, RA, RB}}, +@@ -6302,9 +6303,9 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"subf.", XO(31,40,0,1), XO_MASK, PPC, 0, {RT, RA, RB}}, + {"sub.", XO(31,40,0,1), XO_MASK, PPC, 0, {RT, RB, RA}}, + +-{"mfvsrd", X(31,51), XX1RB_MASK, PPCVSX2, 0, {RA, XS6}}, + {"mffprd", X(31,51), XX1RB_MASK|1, PPCVSX2, 0, {RA, FRS}}, + {"mfvrd", X(31,51)|1, XX1RB_MASK|1, PPCVSX2, 0, {RA, VS}}, ++{"mfvsrd", X(31,51), XX1RB_MASK, PPCVSX2, 0, {RA, XS6}}, + {"eratilx", X(31,51), X_MASK, PPCA2, 0, {ERAT_T, RA, RB}}, + + {"lbarx", X(31,52), XEH_MASK, POWER8|E6500, 0, {RT, RA0, RB, EH}}, +@@ -6354,6 +6355,7 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"mulhw", XO(31,75,0,0), XO_MASK, PPC, 0, {RT, RA, RB}}, + {"mulhw.", XO(31,75,0,1), XO_MASK, PPC, 0, {RT, RA, RB}}, + ++{"msgsndu", XRTRA(31,78,0,0), XRTRA_MASK, POWER9, 0, {RB}}, + {"dlmzb", XRC(31,78,0), X_MASK, PPC403|PPC440|PPC476|TITAN, 0, {RA, RS, RB}}, + {"dlmzb.", XRC(31,78,1), X_MASK, PPC403|PPC440|PPC476|TITAN, 0, {RA, RS, RB}}, + +@@ -6387,6 +6389,7 @@ const struct powerpc_opcode powerpc_opcodes[] = { + + {"lxvrdx", X(31,109), XX1_MASK, POWER10, 0, {XT6, RA0, RB}}, + ++{"msgclru", XRTRA(31,110,0,0), XRTRA_MASK, POWER9, 0, {RB}}, + {"mvidsplt", X(31,110), X_MASK, E6500, 0, {VD, RA, RB}}, + + {"mtsrdin", X(31,114), XRA_MASK, PPC64, 0, {RS, RB}}, +@@ -6489,9 +6492,9 @@ const struct powerpc_opcode powerpc_opcodes[] = { + + {"mtmsrd", X(31,178), XRLARB_MASK, PPC64, 0, {RS, A_L}}, + +-{"mtvsrd", X(31,179), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}}, + {"mtfprd", X(31,179), XX1RB_MASK|1, PPCVSX2, 0, {FRT, RA}}, + {"mtvrd", X(31,179)|1, XX1RB_MASK|1, PPCVSX2, 0, {VD, RA}}, ++{"mtvsrd", X(31,179), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}}, + {"eratre", X(31,179), X_MASK, PPCA2, 0, {RT, RA, WS}}, + + {"stdux", X(31,181), X_MASK, PPC64, 0, {RS, RAS, RB}}, +@@ -6738,11 +6741,13 @@ const struct powerpc_opcode powerpc_opcodes[] = { + + {"mfmq", XSPR(31,339, 0), XSPR_MASK, M601, 0, {RT}}, + {"mfxer", XSPR(31,339, 1), XSPR_MASK, COM, 0, {RT}}, ++{"mfudscr", XSPR(31,339, 3), XSPR_MASK, POWER9, 0, {RS}}, + {"mfrtcu", XSPR(31,339, 4), XSPR_MASK, COM, TITAN, {RT}}, + {"mfrtcl", XSPR(31,339, 5), XSPR_MASK, COM, TITAN, {RT}}, + {"mfdec", XSPR(31,339, 6), XSPR_MASK, MFDEC1, 0, {RT}}, + {"mflr", XSPR(31,339, 8), XSPR_MASK, COM, 0, {RT}}, + {"mfctr", XSPR(31,339, 9), XSPR_MASK, COM, 0, {RT}}, ++{"mfuamr", XSPR(31,339, 13), XSPR_MASK, POWER9, 0, {RS}}, + {"mfdscr", XSPR(31,339, 17), XSPR_MASK, POWER6, 0, {RT}}, + {"mftid", XSPR(31,339, 17), XSPR_MASK, POWER, 0, {RT}}, + {"mfdsisr", XSPR(31,339, 18), XSPR_MASK, COM, TITAN, {RT}}, +@@ -6753,9 +6758,12 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"mfsrr0", XSPR(31,339, 26), XSPR_MASK, COM, 0, {RT}}, + {"mfsrr1", XSPR(31,339, 27), XSPR_MASK, COM, 0, {RT}}, + {"mfcfar", XSPR(31,339, 28), XSPR_MASK, POWER6, 0, {RT}}, ++{"mfamr", XSPR(31,339, 29), XSPR_MASK, POWER7, 0, {RS}}, ++{"mfpidr", XSPR(31,339, 48), XSPR_MASK, POWER10, 0, {RS}}, + {"mfpid", XSPR(31,339, 48), XSPR_MASK, BOOKE, 0, {RT}}, + {"mfcsrr0", XSPR(31,339, 58), XSPR_MASK, BOOKE, 0, {RT}}, + {"mfcsrr1", XSPR(31,339, 59), XSPR_MASK, BOOKE, 0, {RT}}, ++{"mfiamr", XSPR(31,339, 61), XSPR_MASK, POWER10, 0, {RS}}, + {"mfdear", XSPR(31,339, 61), XSPR_MASK, BOOKE, 0, {RT}}, + {"mfesr", XSPR(31,339, 62), XSPR_MASK, BOOKE, 0, {RT}}, + {"mfivpr", XSPR(31,339, 63), XSPR_MASK, BOOKE, 0, {RT}}, +@@ -6769,16 +6777,28 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"mfcounta", XSPR(31,339,150), XSPR_MASK, PPC860, 0, {RT}}, + {"mfcountb", XSPR(31,339,151), XSPR_MASK, PPC860, 0, {RT}}, + {"mfcmpe", XSPR(31,339,152), XSPR_MASK, PPC860, 0, {RT}}, ++{"mffscr", XSPR(31,339,153), XSPR_MASK, POWER10, 0, {RS}}, + {"mfcmpf", XSPR(31,339,153), XSPR_MASK, PPC860, 0, {RT}}, + {"mfcmpg", XSPR(31,339,154), XSPR_MASK, PPC860, 0, {RT}}, + {"mfcmph", XSPR(31,339,155), XSPR_MASK, PPC860, 0, {RT}}, + {"mflctrl1", XSPR(31,339,156), XSPR_MASK, PPC860, 0, {RT}}, ++{"mfuamor", XSPR(31,339,157), XSPR_MASK, POWER7, 0, {RS}}, + {"mflctrl2", XSPR(31,339,157), XSPR_MASK, PPC860, 0, {RT}}, + {"mfictrl", XSPR(31,339,158), XSPR_MASK, PPC860, 0, {RT}}, ++{"mfpspb", XSPR(31,339,159), XSPR_MASK, POWER10, 0, {RS}}, + {"mfbar", XSPR(31,339,159), XSPR_MASK, PPC860, 0, {RT}}, ++{"mfdpdes", XSPR(31,339,176), XSPR_MASK, POWER10, 0, {RS}}, ++{"mfdawr0", XSPR(31,339,180), XSPR_MASK, POWER10, 0, {RS}}, ++{"mfdawr1", XSPR(31,339,181), XSPR_MASK, POWER10, 0, {RS}}, ++{"mfrpr", XSPR(31,339,186), XSPR_MASK, POWER10, 0, {RS}}, ++{"mfciabr", XSPR(31,339,187), XSPR_MASK, POWER10, 0, {RS}}, ++{"mfdawrx0", XSPR(31,339,188), XSPR_MASK, POWER10, 0, {RS}}, ++{"mfdawrx1", XSPR(31,339,189), XSPR_MASK, POWER10, 0, {RS}}, ++{"mfhfscr", XSPR(31,339,190), XSPR_MASK, POWER10, 0, {RS}}, + {"mfvrsave", XSPR(31,339,256), XSPR_MASK, PPCVEC, 0, {RT}}, + {"mfusprg0", XSPR(31,339,256), XSPR_MASK, BOOKE, 0, {RT}}, + {"mfsprg", XSPR(31,339,256), XSPRG_MASK, PPC, 0, {RT, SPRG}}, ++{"mfusprg3", XSPR(31,339,259), XSPR_MASK, POWER10, 0, {RT}}, + {"mfsprg4", XSPR(31,339,260), XSPR_MASK, PPC405|BOOKE, 0, {RT}}, + {"mfsprg5", XSPR(31,339,261), XSPR_MASK, PPC405|BOOKE, 0, {RT}}, + {"mfsprg6", XSPR(31,339,262), XSPR_MASK, PPC405|BOOKE, 0, {RT}}, +@@ -6794,20 +6814,37 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"mfear", XSPR(31,339,282), XSPR_MASK, PPC, TITAN, {RT}}, + {"mfpir", XSPR(31,339,286), XSPR_MASK, BOOKE, 0, {RT}}, + {"mfpvr", XSPR(31,339,287), XSPR_MASK, PPC, 0, {RT}}, ++{"mfhsprg0", XSPR(31,339,304), XSPR_MASK, POWER10, 0, {RS}}, + {"mfdbsr", XSPR(31,339,304), XSPR_MASK, BOOKE, 0, {RT}}, ++{"mfhsprg1", XSPR(31,339,305), XSPR_MASK, POWER10, 0, {RS}}, ++{"mfhdisr", XSPR(31,339,306), XSPR_MASK, POWER10, 0, {RS}}, ++{"mfhdar", XSPR(31,339,307), XSPR_MASK, POWER10, 0, {RS}}, ++{"mfspurr", XSPR(31,339,308), XSPR_MASK, POWER10, 0, {RS}}, + {"mfdbcr0", XSPR(31,339,308), XSPR_MASK, BOOKE, 0, {RT}}, ++{"mfpurr", XSPR(31,339,309), XSPR_MASK, POWER10, 0, {RS}}, + {"mfdbcr1", XSPR(31,339,309), XSPR_MASK, BOOKE, 0, {RT}}, ++{"mfhdec", XSPR(31,339,310), XSPR_MASK, POWER10, 0, {RS}}, + {"mfdbcr2", XSPR(31,339,310), XSPR_MASK, BOOKE, 0, {RT}}, + {"mfiac1", XSPR(31,339,312), XSPR_MASK, BOOKE, 0, {RT}}, ++{"mfhrmor", XSPR(31,339,313), XSPR_MASK, POWER10, 0, {RS}}, + {"mfiac2", XSPR(31,339,313), XSPR_MASK, BOOKE, 0, {RT}}, ++{"mfhsrr0", XSPR(31,339,314), XSPR_MASK, POWER10, 0, {RS}}, + {"mfiac3", XSPR(31,339,314), XSPR_MASK, BOOKE, 0, {RT}}, ++{"mfhsrr1", XSPR(31,339,315), XSPR_MASK, POWER10, 0, {RS}}, + {"mfiac4", XSPR(31,339,315), XSPR_MASK, BOOKE, 0, {RT}}, + {"mfdac1", XSPR(31,339,316), XSPR_MASK, BOOKE, 0, {RT}}, + {"mfdac2", XSPR(31,339,317), XSPR_MASK, BOOKE, 0, {RT}}, ++{"mflpcr", XSPR(31,339,318), XSPR_MASK, POWER10, 0, {RS}}, + {"mfdvc1", XSPR(31,339,318), XSPR_MASK, BOOKE, 0, {RT}}, ++{"mflpidr", XSPR(31,339,319), XSPR_MASK, POWER10, 0, {RS}}, + {"mfdvc2", XSPR(31,339,319), XSPR_MASK, BOOKE, 0, {RT}}, ++{"mfhmer", XSPR(31,339,336), XSPR_MASK, POWER7, 0, {RS}}, + {"mftsr", XSPR(31,339,336), XSPR_MASK, BOOKE, 0, {RT}}, ++{"mfhmeer", XSPR(31,339,337), XSPR_MASK, POWER7, 0, {RS}}, ++{"mfpcr", XSPR(31,339,338), XSPR_MASK, POWER10, 0, {RS}}, ++{"mfheir", XSPR(31,339,339), XSPR_MASK, POWER10, 0, {RS}}, + {"mftcr", XSPR(31,339,340), XSPR_MASK, BOOKE, 0, {RT}}, ++{"mfamor", XSPR(31,339,349), XSPR_MASK, POWER7, 0, {RS}}, + {"mfivor0", XSPR(31,339,400), XSPR_MASK, BOOKE, 0, {RT}}, + {"mfivor1", XSPR(31,339,401), XSPR_MASK, BOOKE, 0, {RT}}, + {"mfivor2", XSPR(31,339,402), XSPR_MASK, BOOKE, 0, {RT}}, +@@ -6824,6 +6861,14 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"mfivor13", XSPR(31,339,413), XSPR_MASK, BOOKE, 0, {RT}}, + {"mfivor14", XSPR(31,339,414), XSPR_MASK, BOOKE, 0, {RT}}, + {"mfivor15", XSPR(31,339,415), XSPR_MASK, BOOKE, 0, {RT}}, ++{"mftir", XSPR(31,339,446), XSPR_MASK, POWER10, 0, {RS}}, ++{"mfptcr", XSPR(31,339,464), XSPR_MASK, POWER10, 0, {RS}}, ++{"mfuspgr0", XSPR(31,339,496), XSPR_MASK, POWER10, 0, {RS}}, ++{"mfuspgr1", XSPR(31,339,497), XSPR_MASK, POWER10, 0, {RS}}, ++{"mfurmor", XSPR(31,339,505), XSPR_MASK, POWER10, 0, {RS}}, ++{"mfusrr0", XSPR(31,339,506), XSPR_MASK, POWER10, 0, {RS}}, ++{"mfusrr1", XSPR(31,339,507), XSPR_MASK, POWER10, 0, {RS}}, ++{"mfsmfctrl", XSPR(31,339,511), XSPR_MASK, POWER10, 0, {RS}}, + {"mfspefscr", XSPR(31,339,512), XSPR_MASK, PPCSPE, 0, {RT}}, + {"mfbbear", XSPR(31,339,513), XSPR_MASK, PPCBRLK, 0, {RT}}, + {"mfbbtar", XSPR(31,339,514), XSPR_MASK, PPCBRLK, 0, {RT}}, +@@ -6848,18 +6893,36 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"mfdpdr", XSPR(31,339,630), XSPR_MASK, PPC860, 0, {RT}}, + {"mfdpir", XSPR(31,339,631), XSPR_MASK, PPC860, 0, {RT}}, + {"mfimmr", XSPR(31,339,638), XSPR_MASK, PPC860, 0, {RT}}, ++{"mfusier2", XSPR(31,339,736), XSPR_MASK, POWER10, 0, {RT}}, ++{"mfsier2", XSPR(31,339,736), XSPR_MASK, POWER10, 0, {RT}}, ++{"mfusier3", XSPR(31,339,737), XSPR_MASK, POWER10, 0, {RT}}, ++{"mfsier3", XSPR(31,339,737), XSPR_MASK, POWER10, 0, {RT}}, ++{"mfummcr3", XSPR(31,339,738), XSPR_MASK, POWER10, 0, {RT}}, ++{"mfmmcr3", XSPR(31,339,738), XSPR_MASK, POWER10, 0, {RT}}, ++{"mfusier", XSPR(31,339,768), XSPR_MASK, POWER10, 0, {RT}}, ++{"mfsier", XSPR(31,339,768), XSPR_MASK, POWER10, 0, {RT}}, ++{"mfummcra", XSPR(31,339,770), XSPR_MASK, POWER9, 0, {RS}}, ++{"mfmmcra", XSPR(31,339,770), XSPR_MASK, POWER7, 0, {RS}}, + {"mfupmc1", XSPR(31,339,771), XSPR_MASK, POWER9, 0, {RT}}, +-{"mfpmc1", XSPR(31,339,771), XSPR_MASK, POWER9, 0, {RT}}, ++{"mfpmc1", XSPR(31,339,771), XSPR_MASK, POWER7, 0, {RT}}, + {"mfupmc2", XSPR(31,339,772), XSPR_MASK, POWER9, 0, {RT}}, +-{"mfpmc2", XSPR(31,339,772), XSPR_MASK, POWER9, 0, {RT}}, ++{"mfpmc2", XSPR(31,339,772), XSPR_MASK, POWER7, 0, {RT}}, + {"mfupmc3", XSPR(31,339,773), XSPR_MASK, POWER9, 0, {RT}}, +-{"mfpmc3", XSPR(31,339,773), XSPR_MASK, POWER9, 0, {RT}}, ++{"mfpmc3", XSPR(31,339,773), XSPR_MASK, POWER7, 0, {RT}}, + {"mfupmc4", XSPR(31,339,774), XSPR_MASK, POWER9, 0, {RT}}, +-{"mfpmc4", XSPR(31,339,774), XSPR_MASK, POWER9, 0, {RT}}, ++{"mfpmc4", XSPR(31,339,774), XSPR_MASK, POWER7, 0, {RT}}, + {"mfupmc5", XSPR(31,339,775), XSPR_MASK, POWER9, 0, {RT}}, +-{"mfpmc5", XSPR(31,339,775), XSPR_MASK, POWER9, 0, {RT}}, ++{"mfpmc5", XSPR(31,339,775), XSPR_MASK, POWER7, 0, {RT}}, + {"mfupmc6", XSPR(31,339,776), XSPR_MASK, POWER9, 0, {RT}}, +-{"mfpmc6", XSPR(31,339,776), XSPR_MASK, POWER9, 0, {RT}}, ++{"mfpmc6", XSPR(31,339,776), XSPR_MASK, POWER7, 0, {RT}}, ++{"mfummcr0", XSPR(31,339,779), XSPR_MASK, POWER9, 0, {RS}}, ++{"mfmmcr0", XSPR(31,339,779), XSPR_MASK, POWER7, 0, {RS}}, ++{"mfusiar", XSPR(31,339,780), XSPR_MASK, POWER9, 0, {RS}}, ++{"mfsiar", XSPR(31,339,780), XSPR_MASK, POWER9, 0, {RS}}, ++{"mfusdar", XSPR(31,339,781), XSPR_MASK, POWER9, 0, {RS}}, ++{"mfsdar", XSPR(31,339,781), XSPR_MASK, POWER9, 0, {RS}}, ++{"mfummcr1", XSPR(31,339,782), XSPR_MASK, POWER9, 0, {RS}}, ++{"mfmmcr1", XSPR(31,339,782), XSPR_MASK, POWER7, 0, {RS}}, + {"mfmi_ctr", XSPR(31,339,784), XSPR_MASK, PPC860, 0, {RT}}, + {"mfmi_ap", XSPR(31,339,786), XSPR_MASK, PPC860, 0, {RT}}, + {"mfmi_epn", XSPR(31,339,787), XSPR_MASK, PPC860, 0, {RT}}, +@@ -6873,12 +6936,25 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"mfmd_twc", XSPR(31,339,797), XSPR_MASK, PPC860, 0, {RT}}, + {"mfmd_rpn", XSPR(31,339,798), XSPR_MASK, PPC860, 0, {RT}}, + {"mfm_tw", XSPR(31,339,799), XSPR_MASK, PPC860, 0, {RT}}, ++{"mfbescrs", XSPR(31,339,800), XSPR_MASK, POWER9, 0, {RS}}, ++{"mfbescrsu", XSPR(31,339,801), XSPR_MASK, POWER9, 0, {RS}}, ++{"mfbescrr", XSPR(31,339,802), XSPR_MASK, POWER9, 0, {RS}}, ++{"mfbescrru", XSPR(31,339,803), XSPR_MASK, POWER9, 0, {RS}}, ++{"mfebbhr", XSPR(31,339,804), XSPR_MASK, POWER9, 0, {RS}}, ++{"mfebbrr", XSPR(31,339,805), XSPR_MASK, POWER9, 0, {RS}}, ++{"mfbescr", XSPR(31,339,806), XSPR_MASK, POWER9, 0, {RS}}, ++{"mftar", XSPR(31,339,815), XSPR_MASK, POWER9, 0, {RS}}, ++{"mfasdr", XSPR(31,339,816), XSPR_MASK, POWER10, 0, {RS}}, + {"mfmi_dbcam", XSPR(31,339,816), XSPR_MASK, PPC860, 0, {RT}}, + {"mfmi_dbram0", XSPR(31,339,817), XSPR_MASK, PPC860, 0, {RT}}, + {"mfmi_dbram1", XSPR(31,339,818), XSPR_MASK, PPC860, 0, {RT}}, ++{"mfpsscr", XSPR(31,339,823), XSPR_MASK, POWER10, 0, {RS}}, + {"mfmd_dbcam", XSPR(31,339,824), XSPR_MASK, PPC860, 0, {RT}}, + {"mfmd_dbram0", XSPR(31,339,825), XSPR_MASK, PPC860, 0, {RT}}, + {"mfmd_dbram1", XSPR(31,339,826), XSPR_MASK, PPC860, 0, {RT}}, ++{"mfic", XSPR(31,339,848), XSPR_MASK, POWER8, 0, {RS}}, ++{"mfvtb", XSPR(31,339,849), XSPR_MASK, POWER8, 0, {RS}}, ++{"mfhpsscr", XSPR(31,339,855), XSPR_MASK, POWER10, 0, {RS}}, + {"mfivndx", XSPR(31,339,880), XSPR_MASK, TITAN, 0, {RT}}, + {"mfdvndx", XSPR(31,339,881), XSPR_MASK, TITAN, 0, {RT}}, + {"mfivlim", XSPR(31,339,882), XSPR_MASK, TITAN, 0, {RT}}, +@@ -7051,14 +7127,15 @@ const struct powerpc_opcode powerpc_opcodes[] = { + + {"sthux", X(31,439), X_MASK, COM, 0, {RS, RAS, RB}}, + +-{"mdors", 0x7f9ce378, 0xffffffff, E500MC, 0, {0}}, +- +-{"miso", 0x7f5ad378, 0xffffffff, E6500, 0, {0}}, +- +-/* The "yield", "mdoio" and "mdoom" instructions are extended mnemonics for +- "or rX,rX,rX", with rX being r27, r29 and r30 respectively. */ ++/* or 26,26,26 */ ++{"miso", 0x7f5ad378, 0xffffffff, POWER8|E6500, 0, {0}}, ++/* or 27,27,27 */ + {"yield", 0x7f7bdb78, 0xffffffff, POWER7, 0, {0}}, ++/* or 28,28,28 */ ++{"mdors", 0x7f9ce378, 0xffffffff, E500MC, 0, {0}}, ++/* or 29,29,29 */ + {"mdoio", 0x7fbdeb78, 0xffffffff, POWER7, 0, {0}}, ++/* or 30,30,30 */ + {"mdoom", 0x7fdef378, 0xffffffff, POWER7, 0, {0}}, + {"mr", XRC(31,444,0), X_MASK, COM, 0, {RA, RSB}}, + {"or", XRC(31,444,0), X_MASK, COM, 0, {RA, RS, RB}}, +@@ -7124,8 +7201,10 @@ const struct powerpc_opcode powerpc_opcodes[] = { + + {"mtmq", XSPR(31,467, 0), XSPR_MASK, M601, 0, {RS}}, + {"mtxer", XSPR(31,467, 1), XSPR_MASK, COM, 0, {RS}}, ++{"mtudscr", XSPR(31,467, 3), XSPR_MASK, POWER9, 0, {RS}}, + {"mtlr", XSPR(31,467, 8), XSPR_MASK, COM, 0, {RS}}, + {"mtctr", XSPR(31,467, 9), XSPR_MASK, COM, 0, {RS}}, ++{"mtuamr", XSPR(31,467, 13), XSPR_MASK, POWER9, 0, {RS}}, + {"mtdscr", XSPR(31,467, 17), XSPR_MASK, POWER6, 0, {RS}}, + {"mttid", XSPR(31,467, 17), XSPR_MASK, POWER, 0, {RS}}, + {"mtdsisr", XSPR(31,467, 18), XSPR_MASK, COM, TITAN, {RS}}, +@@ -7138,13 +7217,20 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"mtsrr0", XSPR(31,467, 26), XSPR_MASK, COM, 0, {RS}}, + {"mtsrr1", XSPR(31,467, 27), XSPR_MASK, COM, 0, {RS}}, + {"mtcfar", XSPR(31,467, 28), XSPR_MASK, POWER6, 0, {RS}}, ++{"mtamr", XSPR(31,467, 29), XSPR_MASK, POWER7, 0, {RS}}, ++{"mtpidr", XSPR(31,467, 48), XSPR_MASK, POWER10, 0, {RS}}, + {"mtpid", XSPR(31,467, 48), XSPR_MASK, BOOKE, 0, {RS}}, + {"mtdecar", XSPR(31,467, 54), XSPR_MASK, BOOKE, 0, {RS}}, + {"mtcsrr0", XSPR(31,467, 58), XSPR_MASK, BOOKE, 0, {RS}}, + {"mtcsrr1", XSPR(31,467, 59), XSPR_MASK, BOOKE, 0, {RS}}, ++{"mtiamr", XSPR(31,467, 61), XSPR_MASK, POWER10, 0, {RS}}, + {"mtdear", XSPR(31,467, 61), XSPR_MASK, BOOKE, 0, {RS}}, + {"mtesr", XSPR(31,467, 62), XSPR_MASK, BOOKE, 0, {RS}}, + {"mtivpr", XSPR(31,467, 63), XSPR_MASK, BOOKE, 0, {RS}}, ++{"mttfhar", XSPR(31,467,128), XSPR_MASK, POWER9, 0, {RS}}, ++{"mttfiar", XSPR(31,467,129), XSPR_MASK, POWER9, 0, {RS}}, ++{"mttexasr", XSPR(31,467,130), XSPR_MASK, POWER9, 0, {RS}}, ++{"mttexasru", XSPR(31,467,131), XSPR_MASK, POWER9, 0, {RS}}, + {"mtcmpa", XSPR(31,467,144), XSPR_MASK, PPC860, 0, {RS}}, + {"mtcmpb", XSPR(31,467,145), XSPR_MASK, PPC860, 0, {RS}}, + {"mtcmpc", XSPR(31,467,146), XSPR_MASK, PPC860, 0, {RS}}, +@@ -7155,13 +7241,24 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"mtcountb", XSPR(31,467,151), XSPR_MASK, PPC860, 0, {RS}}, + {"mtctrl", XSPR(31,467,152), XSPR_MASK, POWER4, 0, {RS}}, + {"mtcmpe", XSPR(31,467,152), XSPR_MASK, PPC860, 0, {RS}}, ++{"mtfscr", XSPR(31,467,153), XSPR_MASK, POWER10, 0, {RS}}, + {"mtcmpf", XSPR(31,467,153), XSPR_MASK, PPC860, 0, {RS}}, + {"mtcmpg", XSPR(31,467,154), XSPR_MASK, PPC860, 0, {RS}}, + {"mtcmph", XSPR(31,467,155), XSPR_MASK, PPC860, 0, {RS}}, + {"mtlctrl1", XSPR(31,467,156), XSPR_MASK, PPC860, 0, {RS}}, ++{"mtuamor", XSPR(31,467,157), XSPR_MASK, POWER7, 0, {RS}}, + {"mtlctrl2", XSPR(31,467,157), XSPR_MASK, PPC860, 0, {RS}}, + {"mtictrl", XSPR(31,467,158), XSPR_MASK, PPC860, 0, {RS}}, ++{"mtpspb", XSPR(31,467,159), XSPR_MASK, POWER10, 0, {RS}}, + {"mtbar", XSPR(31,467,159), XSPR_MASK, PPC860, 0, {RS}}, ++{"mtdpdes", XSPR(31,467,176), XSPR_MASK, POWER10, 0, {RS}}, ++{"mtdawr0", XSPR(31,467,180), XSPR_MASK, POWER10, 0, {RS}}, ++{"mtdawr1", XSPR(31,467,181), XSPR_MASK, POWER10, 0, {RS}}, ++{"mtrpr", XSPR(31,467,186), XSPR_MASK, POWER10, 0, {RS}}, ++{"mtciabr", XSPR(31,467,187), XSPR_MASK, POWER10, 0, {RS}}, ++{"mtdawrx0", XSPR(31,467,188), XSPR_MASK, POWER10, 0, {RS}}, ++{"mtdawrx1", XSPR(31,467,189), XSPR_MASK, POWER10, 0, {RS}}, ++{"mthfscr", XSPR(31,467,190), XSPR_MASK, POWER10, 0, {RS}}, + {"mtvrsave", XSPR(31,467,256), XSPR_MASK, PPCVEC, 0, {RS}}, + {"mtusprg0", XSPR(31,467,256), XSPR_MASK, BOOKE, 0, {RS}}, + {"mtsprg", XSPR(31,467,256), XSPRG_MASK, PPC, 0, {SPRG, RS}}, +@@ -7177,20 +7274,38 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"mtear", XSPR(31,467,282), XSPR_MASK, PPC, TITAN, {RS}}, + {"mttbl", XSPR(31,467,284), XSPR_MASK, PPC, 0, {RS}}, + {"mttbu", XSPR(31,467,285), XSPR_MASK, PPC, 0, {RS}}, ++{"mttbu40", XSPR(31,467,286), XSPR_MASK, POWER10, 0, {RS}}, ++{"mthsprg0", XSPR(31,467,304), XSPR_MASK, POWER10, 0, {RS}}, + {"mtdbsr", XSPR(31,467,304), XSPR_MASK, BOOKE, 0, {RS}}, ++{"mthsprg1", XSPR(31,467,305), XSPR_MASK, POWER10, 0, {RS}}, ++{"mthdisr", XSPR(31,467,306), XSPR_MASK, POWER10, 0, {RS}}, ++{"mthdar", XSPR(31,467,307), XSPR_MASK, POWER10, 0, {RS}}, ++{"mtspurr", XSPR(31,467,308), XSPR_MASK, POWER10, 0, {RS}}, + {"mtdbcr0", XSPR(31,467,308), XSPR_MASK, BOOKE, 0, {RS}}, ++{"mtpurr", XSPR(31,467,309), XSPR_MASK, POWER10, 0, {RS}}, + {"mtdbcr1", XSPR(31,467,309), XSPR_MASK, BOOKE, 0, {RS}}, ++{"mthdec", XSPR(31,467,310), XSPR_MASK, POWER10, 0, {RS}}, + {"mtdbcr2", XSPR(31,467,310), XSPR_MASK, BOOKE, 0, {RS}}, + {"mtiac1", XSPR(31,467,312), XSPR_MASK, BOOKE, 0, {RS}}, ++{"mthrmor", XSPR(31,467,313), XSPR_MASK, POWER10, 0, {RS}}, + {"mtiac2", XSPR(31,467,313), XSPR_MASK, BOOKE, 0, {RS}}, ++{"mthsrr0", XSPR(31,467,314), XSPR_MASK, POWER10, 0, {RS}}, + {"mtiac3", XSPR(31,467,314), XSPR_MASK, BOOKE, 0, {RS}}, ++{"mthsrr1", XSPR(31,467,315), XSPR_MASK, POWER10, 0, {RS}}, + {"mtiac4", XSPR(31,467,315), XSPR_MASK, BOOKE, 0, {RS}}, + {"mtdac1", XSPR(31,467,316), XSPR_MASK, BOOKE, 0, {RS}}, + {"mtdac2", XSPR(31,467,317), XSPR_MASK, BOOKE, 0, {RS}}, ++{"mtlpcr", XSPR(31,467,318), XSPR_MASK, POWER10, 0, {RS}}, + {"mtdvc1", XSPR(31,467,318), XSPR_MASK, BOOKE, 0, {RS}}, ++{"mtlpidr", XSPR(31,467,319), XSPR_MASK, POWER10, 0, {RS}}, + {"mtdvc2", XSPR(31,467,319), XSPR_MASK, BOOKE, 0, {RS}}, ++{"mthmer", XSPR(31,467,336), XSPR_MASK, POWER7, 0, {RS}}, + {"mttsr", XSPR(31,467,336), XSPR_MASK, BOOKE, 0, {RS}}, ++{"mthmeer", XSPR(31,467,337), XSPR_MASK, POWER7, 0, {RS}}, ++{"mtpcr", XSPR(31,467,338), XSPR_MASK, POWER10, 0, {RS}}, ++{"mtheir", XSPR(31,467,339), XSPR_MASK, POWER10, 0, {RS}}, + {"mttcr", XSPR(31,467,340), XSPR_MASK, BOOKE, 0, {RS}}, ++{"mtamor", XSPR(31,467,349), XSPR_MASK, POWER7, 0, {RS}}, + {"mtivor0", XSPR(31,467,400), XSPR_MASK, BOOKE, 0, {RS}}, + {"mtivor1", XSPR(31,467,401), XSPR_MASK, BOOKE, 0, {RS}}, + {"mtivor2", XSPR(31,467,402), XSPR_MASK, BOOKE, 0, {RS}}, +@@ -7207,6 +7322,13 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"mtivor13", XSPR(31,467,413), XSPR_MASK, BOOKE, 0, {RS}}, + {"mtivor14", XSPR(31,467,414), XSPR_MASK, BOOKE, 0, {RS}}, + {"mtivor15", XSPR(31,467,415), XSPR_MASK, BOOKE, 0, {RS}}, ++{"mtptcr", XSPR(31,467,464), XSPR_MASK, POWER10, 0, {RS}}, ++{"mtuspgr0", XSPR(31,467,496), XSPR_MASK, POWER10, 0, {RS}}, ++{"mtuspgr1", XSPR(31,467,497), XSPR_MASK, POWER10, 0, {RS}}, ++{"mturmor", XSPR(31,467,505), XSPR_MASK, POWER10, 0, {RS}}, ++{"mtusrr0", XSPR(31,467,506), XSPR_MASK, POWER10, 0, {RS}}, ++{"mtusrr1", XSPR(31,467,507), XSPR_MASK, POWER10, 0, {RS}}, ++{"mtsmfctrl", XSPR(31,467,511), XSPR_MASK, POWER10, 0, {RS}}, + {"mtspefscr", XSPR(31,467,512), XSPR_MASK, PPCSPE, 0, {RS}}, + {"mtbbear", XSPR(31,467,513), XSPR_MASK, PPCBRLK, 0, {RS}}, + {"mtbbtar", XSPR(31,467,514), XSPR_MASK, PPCBRLK, 0, {RS}}, +@@ -7221,12 +7343,44 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"mtmcsrr0", XSPR(31,467,570), XSPR_MASK, PPCRFMCI, 0, {RS}}, + {"mtmcsrr1", XSPR(31,467,571), XSPR_MASK, PPCRFMCI, 0, {RS}}, + {"mtmcsr", XSPR(31,467,572), XSPR_MASK, PPCRFMCI, 0, {RS}}, ++{"mtsier2", XSPR(31,467,752), XSPR_MASK, POWER10, 0, {RS}}, ++{"mtsier3", XSPR(31,467,753), XSPR_MASK, POWER10, 0, {RS}}, ++{"mtmmcr3", XSPR(31,467,754), XSPR_MASK, POWER10, 0, {RS}}, ++{"mtummcr2", XSPR(31,467,769), XSPR_MASK, POWER9, 0, {RS}}, ++{"mtmmcr2", XSPR(31,467,769), XSPR_MASK, POWER9, 0, {RS}}, ++{"mtummcra", XSPR(31,467,770), XSPR_MASK, POWER9, 0, {RS}}, + {"mtupmc1", XSPR(31,467,771), XSPR_MASK, POWER9, 0, {RS}}, + {"mtupmc2", XSPR(31,467,772), XSPR_MASK, POWER9, 0, {RS}}, + {"mtupmc3", XSPR(31,467,773), XSPR_MASK, POWER9, 0, {RS}}, + {"mtupmc4", XSPR(31,467,774), XSPR_MASK, POWER9, 0, {RS}}, + {"mtupmc5", XSPR(31,467,775), XSPR_MASK, POWER9, 0, {RS}}, + {"mtupmc6", XSPR(31,467,776), XSPR_MASK, POWER9, 0, {RS}}, ++{"mtummcr0", XSPR(31,467,779), XSPR_MASK, POWER9, 0, {RS}}, ++{"mtsier", XSPR(31,467,784), XSPR_MASK, POWER10, 0, {RS}}, ++{"mtmmcra", XSPR(31,467,786), XSPR_MASK, POWER7, 0, {RS}}, ++{"mtpmc1", XSPR(31,467,787), XSPR_MASK, POWER7, 0, {RS}}, ++{"mtpmc2", XSPR(31,467,788), XSPR_MASK, POWER7, 0, {RS}}, ++{"mtpmc3", XSPR(31,467,789), XSPR_MASK, POWER7, 0, {RS}}, ++{"mtpmc4", XSPR(31,467,790), XSPR_MASK, POWER7, 0, {RS}}, ++{"mtpmc5", XSPR(31,467,791), XSPR_MASK, POWER7, 0, {RS}}, ++{"mtpmc6", XSPR(31,467,792), XSPR_MASK, POWER7, 0, {RS}}, ++{"mtmmcr0", XSPR(31,467,795), XSPR_MASK, POWER7, 0, {RS}}, ++{"mtsiar", XSPR(31,467,796), XSPR_MASK, POWER10, 0, {RS}}, ++{"mtsdar", XSPR(31,467,797), XSPR_MASK, POWER10, 0, {RS}}, ++{"mtmmcr1", XSPR(31,467,798), XSPR_MASK, POWER7, 0, {RS}}, ++{"mtbescrs", XSPR(31,467,800), XSPR_MASK, POWER9, 0, {RS}}, ++{"mtbescrsu", XSPR(31,467,801), XSPR_MASK, POWER9, 0, {RS}}, ++{"mtbescrr", XSPR(31,467,802), XSPR_MASK, POWER9, 0, {RS}}, ++{"mtbescrru", XSPR(31,467,803), XSPR_MASK, POWER9, 0, {RS}}, ++{"mtebbhr", XSPR(31,467,804), XSPR_MASK, POWER9, 0, {RS}}, ++{"mtebbrr", XSPR(31,467,805), XSPR_MASK, POWER9, 0, {RS}}, ++{"mtbescr", XSPR(31,467,806), XSPR_MASK, POWER9, 0, {RS}}, ++{"mttar", XSPR(31,467,815), XSPR_MASK, POWER9, 0, {RS}}, ++{"mtasdr", XSPR(31,467,816), XSPR_MASK, POWER10, 0, {RS}}, ++{"mtpsscr", XSPR(31,467,823), XSPR_MASK, POWER10, 0, {RS}}, ++{"mtic", XSPR(31,467,848), XSPR_MASK, POWER8, 0, {RS}}, ++{"mtvtb", XSPR(31,467,849), XSPR_MASK, POWER8, 0, {RS}}, ++{"mthpsscr", XSPR(31,467,855), XSPR_MASK, POWER10, 0, {RS}}, + {"mtivndx", XSPR(31,467,880), XSPR_MASK, TITAN, 0, {RS}}, + {"mtdvndx", XSPR(31,467,881), XSPR_MASK, TITAN, 0, {RS}}, + {"mtivlim", XSPR(31,467,882), XSPR_MASK, TITAN, 0, {RS}}, +@@ -8301,7 +8455,7 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"xxgenpcvdm", X(60,949), XX1_MASK, POWER10, PPCVLE, {XT6, VB, UIMM}}, + {"xvxexpdp", XX2VA(60,475,0),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}}, + {"xvxsigdp", XX2VA(60,475,1),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}}, +-{"xvtlsbb", XX2VA(60,475,2),XX2BF_MASK, POWER10, PPCVLE, {OBF, XB6}}, ++{"xvtlsbb", XX2VA(60,475,2),XX2BF_MASK, POWER10, PPCVLE, {BF, XB6}}, + {"xxbrh", XX2VA(60,475,7),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}}, + {"xvxexpsp", XX2VA(60,475,8),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}}, + {"xvxsigsp", XX2VA(60,475,9),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}}, diff --git a/patches/branch-version.diff b/patches/branch-version.diff new file mode 100644 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..53ec8a9c8 --- /dev/null +++ b/rules @@ -0,0 +1,1966 @@ +#!/usr/bin/make -f +# debian/rules file - for binutils (2.29) +# Based on sample debian/rules file - for GNU Hello (1.3). +# Copyright 1994,1995 by Ian Jackson. +# Copyright 1998-2007 James Troup. +# Portions Copyright 2008-2019 Canonical Ltd. +# Portions Copyright 2008-2019 Matthias Klose. +# I hereby give you perpetual unlimited permission to copy, +# modify and relicense this file, provided that you do not remove +# my name from the file itself. (I assert my moral right of +# paternity under the Copyright, Designs and Patents Act 1988.) +# This file may have to be extensively modified + +############################################################################### + +vafilt = $(subst $(2)=,,$(filter $(2)=%,$(1))) +DPKG_VARS := $(shell dpkg-architecture) +DEB_BUILD_GNU_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_GNU_TYPE) +DEB_HOST_ARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH) +DEB_HOST_GNU_CPU ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_CPU) +DEB_HOST_GNU_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_TYPE) +DEB_HOST_MULTIARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_MULTIARCH) + +ifeq (,$(filter $(distrelease),lenny etch squeeze wheezy jessie)) + ifeq ($(DEB_HOST_GNU_TYPE),i586-linux-gnu) + DEB_BUILD_GNU_TYPE = i686-linux-gnu + DEB_HOST_GNU_CPU = i686 + DEB_HOST_GNU_TYPE = i686-linux-gnu + TRIPLET_SYMLINK = i586-linux-gnu + else ifeq ($(DEB_HOST_GNU_TYPE),i586-kfreebsd-gnu) + DEB_BUILD_GNU_TYPE = i686-kfreebsd-gnu + DEB_HOST_GNU_CPU = i686 + DEB_HOST_GNU_TYPE = i686-kfreebsd-gnu + TRIPLET_SYMLINK = i586-kfreebsd-gnu + else ifeq ($(DEB_HOST_GNU_TYPE),i586-gnu) + DEB_BUILD_GNU_TYPE = i686-gnu + DEB_HOST_GNU_CPU = i686 + DEB_HOST_GNU_TYPE = i686-gnu + TRIPLET_SYMLINK = i586-gnu + endif +endif + +p_bin = binutils +p_com = $(p_bin)-common +p_lib = lib$(p_bin) +p_nat = $(p_bin)-$(subst _,-,$(DEB_HOST_GNU_TYPE)) +p_dev = $(p_bin)-dev +p_mul = $(p_bin)-multiarch +p_mdev = $(p_mul)-dev +p_doc = $(p_bin)-doc +p_hppa64 = $(p_bin)-hppa64-linux-gnu +p_src = $(p_bin)-source + +p_ctf = libctf0 +p_ctfn = libctf-nobfd0 + +p_hst = $(p_bin)-for-host +p_bld = $(p_bin)-for-build + +p_cross = $(p_bin)-$(subst _,-,$(TARGET)) + +# version used for p_bld/p_hst dependencies +min_ver = 2.30-2 + +distribution := $(shell lsb_release -is) +distrelease := $(shell lsb_release -cs) +ifeq ($(distrelease),n/a) + distrelease := sid +endif + +# BACKPORT is used for cross builds for a -source package not conflicting +# with the source package of the native package. +ifeq ($(BACKPORT),true) + p_src = $(p_bin)-$(VERSION)-source +else + p_src = $(p_bin)-source +endif + +pwd := $(shell pwd) +d = debian/tmp +d_bin = $(d) +d_com = debian/$(p_com) +d_lib = debian/$(p_lib) +d_nat = debian/$(p_nat) +d_dev = debian/$(p_dev) +d_mul = debian/$(p_mul) +d_mdev = debian/$(p_mdev) +d_doc = debian/$(p_doc) +d_hppa64 = debian/$(p_hppa64) +d_src = debian/$(p_src) + +d_ctf = debian/$(p_ctf) +d_ctfn = debian/$(p_ctfn) + +d_hst = debian/$(p_hst) +d_bld = debian/$(p_bld) + +d_cross = debian/$(p_cross) + +install_dir = install -d -m 755 +install_file = install -m 644 +install_script = install -m 755 +install_binary = install -m 755 -s --strip-program="$(STRIP)" + +NATIVE_ARCHS ?= amd64 i386 arm64 armhf armel ppc64el s390x +NATIVE_ARCHS += alpha hppa ia64 m68k powerpc ppc64 \ + riscv64 sh4 sparc64 x32 +NATIVE_ARCHS += hurd-i386 kfreebsd-amd64 kfreebsd-i386 +#NATIVE_ARCHS += nios2 or1k s390 sparc + +# don't generate the control file entries for native packages which are never +# built. Only valid for Ubuntu. The autopkg testers get confused otherwise +ifneq ($(distribution),Ubuntu) + NATIVE_ARCHS += mips mipsel mips64 mips64el + NATIVE_ARCHS += mipsn32 mipsn32el + NATIVE_ARCHS += mipsn32r6 mipsn32r6el mipsr6 mipsr6el mips64r6 mips64r6el +endif + +src_name := $(shell dpkg-parsechangelog -S Source) +ifeq ($(src_name),binutils) + with_native = yes + with_cross = yes + same_source = yes + ifeq (,$(CROSS_ARCHS)) + ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386 x32)) + CROSS_ARCHS = s390x ppc64el arm64 armhf armel + CROSS_ARCHS += alpha hppa m68k + CROSS_ARCHS += powerpc ppc64 sh4 sparc64 + CROSS_ARCHS += ia64 riscv64 + CROSS_ARCHS += kfreebsd-amd64 kfreebsd-i386 hurd-i386 + ifneq (,$(filter $(DEB_HOST_ARCH), i386 x32)) + CROSS_ARCHS += amd64 + endif + ifneq (,$(filter $(DEB_HOST_ARCH), amd64 x32)) + CROSS_ARCHS += i386 + endif + ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386)) + CROSS_ARCHS += x32 + endif + else ifeq ($(DEB_HOST_ARCH),arm64) + CROSS_ARCHS = armel armhf amd64 i386 ppc64el riscv64 s390x x32 + else ifeq ($(DEB_HOST_ARCH),ppc64) + CROSS_ARCHS = ppc64el + else ifeq ($(DEB_HOST_ARCH),ppc64el) + CROSS_ARCHS = powerpc ppc64 amd64 i386 x32 arm64 armel armhf riscv64 s390x + else + CROSS_ARCHS = + endif + else + # c-t-b passes this one ... + CROSS_ARCHS := $(filter-out $(DEB_HOST_ARCH),$(CROSS_ARCHS)) + endif +else ifeq ($(src_name),binutils-mipsen) + with_native = + with_cross = yes + same_source = + ifeq (,$(CROSS_ARCHS)) + ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386 x32 arm64 ppc64el)) + CROSS_ARCHS = mips mipsel mips64el mips64 mipsn32 mipsn32el + CROSS_ARCHS += mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el + else ifneq (,$(filter $(DEB_HOST_ARCH), arm64 ppc64el)) + CROSS_ARCHS = mipsel mips64el + else + CROSS_ARCHS = + endif + else + # c-t-b passes this one ... + CROSS_ARCHS := $(filter-out $(DEB_HOST_ARCH),$(CROSS_ARCHS)) + endif +else + # binutils-ports ... + with_cross = yes + ifeq (,$(CROSS_ARCHS)) + CROSS_ARCHS ?= m68k sh4 mips64 mips64el + endif +endif + +ifneq (,$(filter $(DEB_HOST_ARCH),amd64 i386 x32 hppa)) + with_hppa64 = yes +endif + +with_multiarch := yes + +# disabled: no build-needed restriction used in the autopkg test +ifeq (0,1) +# only build the basic package when running the autopkg tests +ifneq (,$(ADT_TEST_TRIGGERS)) + # c-t-b sets CROSS_ARCHS which has to be respected, can't unset it here + #CROSS_ARCHS := + with_hppa64 := + with_multiarch := +endif +endif + +HOST_ARCHS_armhf = amd64 i386 x32 arm64 ppc64el +HOST_ARCHS_armel = amd64 i386 x32 arm64 ppc64el +HOST_ARCHS_arm64 = amd64 i386 x32 ppc64el +HOST_ARCHS_powerpc = amd64 i386 x32 ppc64el +HOST_ARCHS_ppc64el = amd64 i386 x32 ppc64 arm64 +HOST_ARCHS_s390x = amd64 i386 x32 arm64 ppc64el +HOST_ARCHS_amd64 = arm64 i386 ppc64el x32 +HOST_ARCHS_i386 = amd64 arm64 ppc64el x32 +HOST_ARCHS_ia64 = amd64 i386 x32 +HOST_ARCHS_riscv64 = amd64 i386 x32 arm64 ppc64el + +HOST_ARCHS_alpha = amd64 i386 x32 +HOST_ARCHS_hppa = amd64 i386 x32 +HOST_ARCHS_m68k = amd64 i386 x32 +HOST_ARCHS_ppc64 = amd64 i386 x32 ppc64el +HOST_ARCHS_sh4 = amd64 i386 x32 +HOST_ARCHS_sparc64 = amd64 i386 x32 +HOST_ARCHS_x32 = amd64 arm64 i386 ppc64el + +HOST_ARCHS_mips = amd64 i386 x32 +HOST_ARCHS_mipsel = amd64 i386 x32 arm64 ppc64el +HOST_ARCHS_mipsn32 = amd64 i386 x32 +HOST_ARCHS_mipsn32el = amd64 i386 x32 +HOST_ARCHS_mips64 = amd64 i386 x32 +HOST_ARCHS_mips64el = amd64 i386 x32 arm64 ppc64el + +HOST_ARCHS_mipsr6 = amd64 i386 x32 +HOST_ARCHS_mipsr6el = amd64 i386 x32 +HOST_ARCHS_mipsn32r6 = amd64 i386 x32 +HOST_ARCHS_mipsn32r6el = amd64 i386 x32 +HOST_ARCHS_mips64r6 = amd64 i386 x32 +HOST_ARCHS_mips64r6el = amd64 i386 x32 + +HOST_ARCHS_kfreebsd-amd64 = amd64 i386 x32 +HOST_ARCHS_kfreebsd-i386 = amd64 i386 x32 +HOST_ARCHS_hurd-i386 = amd64 i386 x32 + +CROSS_ARCH = $(subst .,,$(suffix $@)) +_gnu_type = $(shell dpkg-architecture -a$(1) -qDEB_HOST_GNU_TYPE -f 2>/dev/null) +_multiarch = $(shell dpkg-architecture -a$(1) -qDEB_HOST_MULTIARCH -f 2>/dev/null) +CROSS_GNU_TYPE = $(subst i586,i686,$(call _gnu_type,$(CROSS_ARCH))) +P_CROSS = binutils-$(subst _,-,$(CROSS_GNU_TYPE)) +D_CROSS = debian/binutils-$(subst _,-,$(CROSS_GNU_TYPE)) + +# If $(TARGET) is not set, try reading debian/target +ifeq (,$(TARGET)) + ifneq (,$(wildcard debian/target)) + TARGET := $(shell cat debian/target 2>/dev/null) + endif +endif + +ifneq (,$(TARGET)) + with_native = + with_cross = + same_source = + # Support TARGET both as Debian architecture specification (e.g. arm), + # and as the target name (e.g. arm-linux-gnu). + try_convert := $(shell dpkg-architecture -f -a$(TARGET) -qDEB_HOST_GNU_TYPE 2>/dev/null) + ifneq ($(try_convert),) + override TARGET := $(try_convert) + endif + DPKG_TARGET_VARS := $(shell dpkg-architecture -f -t$(TARGET)) + DEB_TARGET_MULTIARCH = $(call vafilt,$(DPKG_TARGET_VARS),DEB_HOST_MULTIARCH) + DEB_TARGET_ARCH = $(call vafilt,$(DPKG_TARGET_VARS),DEB_HOST_ARCH) + for_target = dpkg-architecture -f -t$(TARGET) -c +else + DEB_TARGET_MULTIARCH = $(DEB_HOST_MULTIARCH) + DEB_TARGET_ARCH = $(DEB_HOST_ARCH) + for_target = +endif + +ifneq (,$(TARGET)) + APPEND_TOOLLIBDIR=yes + export APPEND_TOOLLIBDIR +endif + +ifeq (,$(DEB_HOST_MULTIARCH)) + ifeq ($(DEB_HOST_ARCH),i386) + DEB_HOST_MULTIARCH = i386-linux-gnu + else + DEB_HOST_MULTIARCH = $(DEB_HOST_GNU_TYPE) + endif +endif + +SHELL = /bin/bash + +gold_targets = \ + amd64 arm64 armel armhf i386 \ + mips mipsel mipsn32 mipsn32el mips64 mips64el \ + mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el \ + powerpc ppc64 ppc64el sparc sparc64 s390x \ + x32 kfreebsd-amd64 kfreebsd-i386 hurd-i386 + +ifneq (,$(filter $(DEB_HOST_ARCH), $(gold_targets))) + with_gold = yes + gold_provides = -Vgold:Provides=binutils-gold +endif + +CFLAGS = -g -O2 +CXXFLAGS = -g -O2 +LDFLAGS = +CROSS := $(DEB_HOST_GNU_TYPE)- +CC = $(CROSS)gcc +CXX = $(CROSS)g++ +STRIP = $(CROSS)strip -R .comment -R .note +STRIP_LTO = $(CROSS)strip -R .gnu.lto_* -R .gnu.debuglto_* -N __gnu_lto_slim -N __gnu_lto_v1 + +ifeq (,$(findstring nopgo,$(DEB_BUILD_OPTIONS))) + ifeq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH)) + #ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386 x32)) + CONF_PGO = --enable-pgo-build=lto + #endif + endif +endif + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS = -g -O0 + CONF_PGO = +endif + +# this outputs 0 or 1 depending on whether a macro appears in the *default* cpp +# -dM -P output; this is used to test the toolchain *default* configuration +check_cpp = $(shell $(CROSS)cpp -dM -P /dev/null | grep -q '^\#define $(1)' && echo 1 || echo 0) + +# testsuite doesn't expect to be built with -mthumb +# TODO if the testsuite is only broken with Thumb-2 (and not with "Thumb-1"), +# we should test for __thumb2__ instead +ifneq (,$(filter $(DEB_HOST_ARCH), armel armhf)) + ifeq ($(call check_cpp,__thumb__),1) + CFLAGS += -marm + endif +endif + +SPACE = $(EMPTY) $(EMPTY) +COMMA = , +CHANGELOG_VARS := $(shell dpkg-parsechangelog | \ + sed -n 's/ /_/g;/^[^_]/s/^\([^:]*\):_\(.*\)/\1=\2/p') + +DEB_VERSION := $(call vafilt,$(CHANGELOG_VARS),Version) +DEB_SVERSION := $(shell echo $(DEB_VERSION) | sed 's/+b[0-9][0-9]*$$//') +DEB_UPSTREAM := $(firstword $(subst -,$(SPACE),$(DEB_VERSION))) + +VERSION := $(shell sed -n 's/^ *VERSION=\(.*\)/\1/p' bfd/configure | head -1 | tr -d \') +DATE := $(shell sed -n 's/.* \([0-9]*\)$$/\1/p' bfd/version.h) +ifneq (,$(DATE)) +# DATE_EXT := .$(DATE) +endif +BUILD_DATE := $(shell dpkg-parsechangelog | sed -n -e 's/^Date: //p') +BUILD_DAY := $(shell date -Idate -u -d "$(BUILD_DATE)") + +is_rc = yes +is_rc = + +ifneq ($(DEB_UPSTREAM),$(VERSION)$(DATE_EXT)) + $(error upstream ($(VERSION)$(DATE_EXT)) and debian ($(DEB_UPSTREAM)) version mismatch) +endif + +SINGLE_VERSION= -system +MULTI_VERSION = -multiarch +HPPA64_VERSION= -hppa64 + +ifeq (,$(filter $(distrelease),squeeze wheezy precise trusty)) + DPKG_DEV = dpkg-dev (>= 1.17.11), +endif +ifeq (,$(filter $(distrelease),squeeze wheezy stretch precise trusty xenial zesty artful)) + DPKG_DEV = dpkg-dev (>= 1.19.0.5), +endif + +NJOBS = +# Support parallel= in DEB_BUILD_OPTIONS (see #209008) +ifneq (,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) + NJOBS := -j $(subst parallel=,,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) +endif +ifneq (,$(findstring nogold,$(DEB_BUILD_OPTIONS))) + with_gold = disabled in DEB_BUILD_OPTIONS +endif +ifneq (,$(findstring nomult,$(DEB_BUILD_OPTIONS))) + with_multiarch = disabled in DEB_BUILD_OPTIONS +endif +ifneq (,$(findstring nocross,$(DEB_BUILD_OPTIONS))) + with_cross = disabled in DEB_BUILD_OPTIONS +endif +ifneq (,$(findstring nohppa,$(DEB_BUILD_OPTIONS))) + with_hppa64 = disabled in DEB_BUILD_OPTIONS +endif + +# PF is the installation prefix for the package without the leading slash. +# It's "usr" for gcc releases, so use this if not explicitly set +ifeq ($(PF),) + PF = usr +endif + +# Don't include docs with GFDL invariant sections +GFDL_INVARIANT_FREE := yes +ifeq ($(distribution),Ubuntu) + GFDL_INVARIANT_FREE := no +endif + +gfdl_toplevel_texinfo_files = \ + bfd/doc/bfd.texinfo \ + bfd/doc/bfdint.texi \ + ld/ldint.texinfo + +gfdl_generated_files = \ + bfd/doc/bfd.info + +programs = addr2line ar as c++filt elfedit gprof ld ld.bfd +programs += nm objcopy objdump ranlib readelf size strings strip +ifeq ($(with_gold),yes) +programs += gold ld.gold dwp +endif + +######################################## + +CONFARGS = \ + --enable-shared \ + --enable-plugins \ + --enable-threads \ + --with-system-zlib \ + --prefix=/$(PF) \ + --enable-deterministic-archives \ + --disable-compressed-debug-sections \ + --enable-new-dtags \ + --disable-x86-used-note \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --host=$(DEB_HOST_GNU_TYPE) \ + --with-pkgversion="GNU Binutils for $(distribution)" + +# not yet ready for GCC 4.9 +CONFARGS += --disable-werror + +DEB_TARGET_MULTIARCH32_amd64 = i386-linux-gnu +DEB_TARGET_MULTIARCHX32_amd64 = x86_64-linux-gnux32 + +DEB_TARGET_MULTIARCH32_x32 = i386-linux-gnu +DEB_TARGET_MULTIARCH64_x32 = x86_64-linux-gnu + +DEB_TARGET_MULTIARCH32_powerpc = powerpc-linux-gnu + +DEB_TARGET_MULTIARCH32_s390x = s390-linux-gnu + +DEB_TARGET_MULTIARCH32_sparc64 = sparc-linux-gnu + +DEB_TARGET_MULTIARCH32_kfreebsd-amd64 = i386-kfreebsd-gnu + +DEB_TARGET_MULTIARCH64_i386 = x86_64-linux-gnu +DEB_TARGET_MULTIARCHX32_i386 = x86_64-linux-gnux32 + +DEB_TARGET_MULTIARCH64_powerpc = powerpc64-linux-gnu + +DEB_TARGET_MULTIARCH64_sparc = sparc64-linux-gnu + +DEB_TARGET_MULTIARCH64_s390 = s390x-linux-gnu + +DEB_TARGET_MULTIARCH64_kfreebsd-i386 = x86_64-kfreebsd-gnu + +DEB_TARGET_MULTIARCH64_mips = mips64-linux-gnuabi64 +DEB_TARGET_MULTIARCHN32_mips = mips64-linux-gnuabin32 + +DEB_TARGET_MULTIARCH64_mipsel = mips64el-linux-gnuabi64 +DEB_TARGET_MULTIARCHN32_mipsel = mips64el-linux-gnuabin32 + +DEB_TARGET_MULTIARCH64_mipsn32 = mips64-linux-gnuabi64 +DEB_TARGET_MULTIARCH32_mipsn32 = mips-linux-gnu + +DEB_TARGET_MULTIARCH64_mipsn32el = mips64el-linux-gnuabi64 +DEB_TARGET_MULTIARCH32_mipsn32el = mipsel-linux-gnu + +DEB_TARGET_MULTIARCH32_mips64 = mips-linux-gnu +DEB_TARGET_MULTIARCHN32_mips64 = mips64-linux-gnuabin32 + +DEB_TARGET_MULTIARCH32_mips64el = mipsel-linux-gnu +DEB_TARGET_MULTIARCHN32_mips64el = mips64el-linux-gnuabin32 + +DEB_TARGET_MULTIARCH64_mipsr6 = mipsisa64r6-linux-gnuabi64 +DEB_TARGET_MULTIARCHN32_mipsr6 = mipsisa64r6-linux-gnuabin32 + +DEB_TARGET_MULTIARCH64_mipsr6el = mipsisa64r6el-linux-gnuabi64 +DEB_TARGET_MULTIARCHN32_mipsr6el = mipsisa64r6el-linux-gnuabin32 + +DEB_TARGET_MULTIARCH64_mipsn32r6 = mipsisa64r6-linux-gnuabi64 +DEB_TARGET_MULTIARCH32_mipsn32r6 = mipsisa32r6-linux-gnu + +DEB_TARGET_MULTIARCH64_mipsn32r6el = mipsisa64r6el-linux-gnuabi64 +DEB_TARGET_MULTIARCH32_mipsn32r6el = mipsisa32r6el-linux-gnu + +DEB_TARGET_MULTIARCH32_mips64r6 = mipsisa32r6-linux-gnu +DEB_TARGET_MULTIARCHN32_mips64r6 = mipsisa64r6-linux-gnuabin32 + +DEB_TARGET_MULTIARCH32_mips64r6el = mipsisa32r6el-linux-gnu +DEB_TARGET_MULTIARCHN32_mips64r6el = mipsisa64r6el-linux-gnuabin32 + +DEB_TARGET_MULTIARCH32_arm64 = aarch64_ilp32-linux-gnu + +SET_MULTIARCH_ENV = \ + DEB_TARGET_MULTIARCH=$(call _multiarch,$1) \ + $(if $(DEB_TARGET_MULTIARCH32_$1) ,DEB_TARGET_MULTIARCH32=$(DEB_TARGET_MULTIARCH32_$1)) \ + $(if $(DEB_TARGET_MULTIARCH64_$1) ,DEB_TARGET_MULTIARCH64=$(DEB_TARGET_MULTIARCH64_$1)) \ + $(if $(DEB_TARGET_MULTIARCHX32_$1),DEB_TARGET_MULTIARCHX32=$(DEB_TARGET_MULTIARCHX32_$1)) \ + $(if $(DEB_TARGET_MULTIARCHN32_$1),DEB_TARGET_MULTIARCHN32=$(DEB_TARGET_MULTIARCHN32_$1)) + +CONFARGS_TARGET_sparc = --enable-targets=sparc64-linux-gnu +CONFLICTS_TARGET_sparc = -VextraConflicts="libc6-dev-sparc64 (<< 2.2.5-7)" + +CONFARGS_TARGET_sparc64 = --enable-targets=sparc-linux-gnu +CONFLICTS_TARGET_sparc64 = -VextraConflicts="libc6-dev-sparc64 (<< 2.2.5-7)" + +CONFARGS_TARGET_powerpc = --enable-targets=powerpc64-linux-gnu + +CONFARGS_TARGET_ppc64 = --enable-targets=powerpc-linux-gnu + +CONFARGS_TARGET_ppc64el = --enable-targets=powerpc-linux-gnu + +CONFARGS_TARGET_s390 = --enable-targets=s390x-linux-gnu + +CONFARGS_TARGET_s390x = --enable-targets=s390-linux-gnu + +CONFARGS_TARGET_amd64 = --enable-targets=x86_64-linux-gnux32,x86_64-pep + +CONFARGS_TARGET_i386 = --enable-targets=x86_64-linux-gnu,x86_64-linux-gnux32,x86_64-pep + +CONFARGS_TARGET_x32 = --enable-targets=x86_64-linux-gnu,x86_64-pep + +CONFLICTS_TARGET_amd64 = -VextraConflicts="binutils-mingw-w64-i686 (<< 2.23.52.20130612-1+3), binutils-mingw-w64-x86-64 (<< 2.23.52.20130612-1+3)" +CONFLICTS_TARGET_i386 = $(CONFLICTS_TARGET_amd64) +CONFLICTS_TARGET_x32 = $(CONFLICTS_TARGET_amd64) + +CONFARGS_TARGET_kfreebsd-i386 = --enable-targets=x86_64-kfreebsd-gnu + +CONFARGS_TARGET_mips = --enable-targets=mips64-linux-gnuabi64,mips64-linux-gnuabin32 + +CONFARGS_TARGET_mipsel = --enable-targets=mips64el-linux-gnuabi64,mips64el-linux-gnuabin32 --enable-mips-fix-loongson3-llsc=yes + +CONFARGS_TARGET_mipsn32 = --enable-targets=mips64-linux-gnuabi64,mips-linux-gnu + +CONFARGS_TARGET_mipsn32el = --enable-targets=mips64el-linux-gnuabi64,mipsel-linux-gnu --enable-mips-fix-loongson3-llsc=yes + +CONFARGS_TARGET_mips64 = --enable-targets=mips64-linux-gnuabin32,mips-linux-gnu + +CONFARGS_TARGET_mips64el = --enable-targets=mips64el-linux-gnuabin32,mipsel-linux-gnu --enable-mips-fix-loongson3-llsc=yes + +CONFARGS_TARGET_mipsr6 = --enable-targets=mipsisa64r6-linux-gnuabi64,mipsisa64r6-linux-gnuabin32 + +CONFARGS_TARGET_mipsr6el = --enable-targets=mipsisa64r6el-linux-gnuabi64,mipsisa64r6el-linux-gnuabin32 + +CONFARGS_TARGET_mipsn32r6 = --enable-targets=mipsisa64r6-linux-gnuabi64,mipsisa32r6-linux-gnu + +CONFARGS_TARGET_mipsn32r6el = --enable-targets=mipsisa64r6el-linux-gnuabi64,mipsisa32r6el-linux-gnu + +CONFARGS_TARGET_mips64r6 = --enable-targets=mipsisa64r6-linux-gnuabin32,mipsisa32r6-linux-gnu + +CONFARGS_TARGET_mips64r6el = --enable-targets=mipsisa64r6el-linux-gnuabin32,mipsisa32r6el-linux-gnu + +CONFARGS_TARGET_aarch64 = --enable-targets=aarch64_be-linux-gnu + +with_check := yes +ifneq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS))) + # override buildd admins to run the testsuite anyway ... + ifeq (,$(filter $(DEB_HOST_ARCH), m68k sh4)) + with_check := disabled through DEB_BUILD_OPTIONS + endif +endif +#with_check := disabled for this upload +ifneq (,$(filter $(DEB_HOST_ARCH), armel armhf mips mipsel sparc)) + ignore_regressions := regressions ignored on architecture $(DEB_HOST_ARCH) +endif +ignore_regressions := regressions ignored on architecture $(DEB_HOST_ARCH) + +with_strip := yes +ifneq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) + with_strip := disabled through DEB_BUILD_OPTIONS +endif + +source_files = $(addprefix $(shell basename $(pwd))/, \ + $(filter-out stamps .pc CVS debian builddir-% test-summary%, $(wildcard *))) + +############################################################################### + +update-patches: + export QUILT_PATCHES=$(CURDIR)/debian/patches; \ + export QUILT_REFRESH_ARGS="--no-timestamps --no-index -pab"; \ + export QUILT_DIFF_ARGS="--no-timestamps --no-index -pab"; \ + while quilt push; do quilt refresh; done + +############################################################################### + +################ +# clean target # +################ + +clean: + $(checkdir) + rm -rf stamps + rm -rf builddir-* + rm -rf stamps + find . -name \*.gmo -o -name \*~ -o -name \*.info ! -name sysroff.info | xargs -r rm -f + rm -f test-summary* + rm -rf $(d_bin) $(d_com) $(d_lib) $(d_lib)-dbg $(d_nat) $(d_nat)-dbg \ + $(d_hst) $(d_dev) $(d_mul) $(d_mul)-dbg $(d_mdev) $(d_doc) \ + $(d_hppa64) $(d_hppa64)-dbg $(d_src) $(d_bld) \ + $(d_ctf) $(d_ctf)-dbg $(d_ctfn) $(d_ctfn)-dbg + $(foreach ca,$(CROSS_ARCHS), rm -rf debian/binutils-$(shell echo $(call _gnu_type,$(ca)) | sed 's/_/-/g;s/i586/i686/'){,-dbg}; ) + rm -rf debian/tmp debian/files* debian/substvars + rm -f debian/*.orig debian/*.rej + rm -rf $(d_cross) debian/files debian/substvars +ifneq (,$(TARGET)) + rm -rf builddir-$(TARGET) +endif + for i in debian/*.in; do \ + case "$$i" in debian/control*.in) continue; esac; \ + rm -f $${i%*.in}; \ + done + + rm -f *-stamp + +############################################################################### + +stamps/control: debian/control.in $(if $(TARGET),debian/control.cross.in) $(if $(filter yes, $(with_cross)),debian/control.cross.in) +ifneq (,$(TARGET)) + sed -n -e 's/@dpkg_dev@/$(DPKG_DEV)/;/^Package: binutils-for-build$$/q;p' \ + < debian/control.in > debian/control + sed -e "s/@target@/$$(echo -n $(TARGET) | sed s/_/-/g)/" \ + -e "s/@host_archs@/any/" \ + -e 's/@binutils_alt_triplet@//' \ + < debian/control.cross.in >> debian/control +else + sed -e 's/@dpkg_dev@/$(DPKG_DEV)/' \ + debian/control.in > debian/control + $(foreach ca,$(NATIVE_ARCHS), \ + sed \ + -e 's/@host_archs@/$(ca)$(if $(and $(filter yes,$(with_cross)),$(filter $(ca),$(DEB_HOST_ARCH) $(CROSS_ARCHS))), $(HOST_ARCHS_$(ca)))/g' \ + -e 's/@target@/$(shell dpkg-architecture -a$(ca) -qDEB_HOST_GNU_TYPE 2>/dev/null | sed 's/_/-/g;s/i586/i686/')/g' \ + -e 's/@binutils_alt_triplet@/$(if $(findstring i386,$(ca)),binutils-$(shell dpkg-architecture -a$(ca) -qDEB_HOST_GNU_TYPE 2>/dev/null | sed 's/i686/i586/g'))/g' \ + debian/control.cross.in \ + | $(if $(filter yes,$(same_source)), grep -v '^Built-Using', cat) \ + >> debian/control; \ + ) +endif + @mkdir -p stamps + touch $@ + +####################### +# single-arch targets # +####################### + +SINGLE_CONFARGS = $(CONFARGS) $(CONFARGS_TARGET_$(DEB_HOST_ARCH)) +ifeq ($(with_gold),yes) + SINGLE_CONFARGS += --enable-ld=default --enable-gold +endif +SINGLE_CONFARGS += $(CONF_PGO) + +stamps/configure-single: + $(checkdir) + env + @echo BEGIN $@ +ifeq ($(with_check),yes) + @if echo "spawn true" | /usr/bin/expect -f - >/dev/null; then \ + : ; \ + else \ + echo "expect is failing on your system with the above error, which means the"; \ + echo "testsuite will fail. Please resolve the above issues and retry the build."; \ + echo "-----------------------------------------------------------------------------"; \ + exit 1; \ + fi +endif + + rm -rf stamps/configure-single builddir-single + mkdir builddir-single + cd builddir-single && env CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" \ + $(call SET_MULTIARCH_ENV,$(DEB_HOST_ARCH)) \ + ../configure --with-sysroot=/ \ + --libdir=/$(PF)/lib/$(DEB_HOST_MULTIARCH) \ + $(SINGLE_CONFARGS) + @mkdir -p stamps + touch $@ + +stamps/build-single: stamps/configure-single + $(checkdir) + @echo BEGIN $@ + env BFD_SOVER_EXT="$(SINGLE_VERSION)" CTF_SOVER_EXT="" \ + $(call SET_MULTIARCH_ENV,$(DEB_HOST_ARCH)) \ + $(MAKE) $(NJOBS) -C builddir-single \ + LDFLAGS="-Wl,-z,relro" +ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) +ifeq ($(with_check),yes) + -env MAKE="$(MAKE) VERSION=$(SINGLE_VERSION)" \ + $(call SET_MULTIARCH_ENV,$(DEB_HOST_ARCH)) \ + $(MAKE) -C builddir-single -k check + cat builddir-single/binutils/binutils.sum \ + builddir-single/gas/testsuite/gas.sum \ + builddir-single/ld/ld.sum >> $(pwd)/test-summary + set -e; \ + tsi=test-summary-installed; \ + rm -f $$tsi; \ + if [ -f /usr/share/doc/binutils/test-summary-$(DEB_HOST_ARCH).gz ]; then \ + zcat /usr/share/doc/binutils/test-summary-$(DEB_HOST_ARCH).gz > $$tsi; \ + elif [ -f /usr/share/doc/binutils/test-summary.gz ]; then \ + zcat /usr/share/doc/binutils/test-summary.gz > $$tsi; \ + elif [ -f /usr/share/doc/binutils/test-summary ]; then \ + cat /usr/share/doc/binutils/test-summary > $$tsi; \ + fi; \ + if [ ! -f $$tsi ]; then \ + echo "No test results available for the installed binutils version"; \ + elif [ -x /usr/bin/python3 ]; then \ + echo "Test results, compared with installed binutils:"; \ + if python3 debian/test-suite-compare.py $$tsi test-summary; then \ + : ; \ + elif [ -n "$(ignore_regressions)" ]; then \ + echo "$(ignore_regressions)"; \ + else \ + false; \ + fi; \ + else \ + echo "python3 not installed, not comparing test results."; \ + fi +endif +endif + touch $@ + + +############################################################################### + +##################### +# multiarch targets # +##################### + +multiarch_targets = \ + aarch64-linux-gnu \ + aarch64_be-linux-gnu \ + alpha-linux-gnu \ + arm-linux-gnueabi \ + hppa-linux-gnu \ + i686-linux-gnu \ + ia64-linux-gnu \ + m32r-linux-gnu \ + m68k-linux-gnu \ + m68k-rtems \ + mips-linux-gnu \ + mipsel-linux-gnu \ + mips64-linux-gnuabin32 \ + mips64el-linux-gnuabin32 \ + mips64-linux-gnu \ + mips64el-linux-gnu \ + mipsisa32r6-linux-gnu \ + mipsisa32r6el-linux-gnu \ + mipsisa64r6-linux-gnuabin32 \ + mipsisa64r6el-linux-gnuabin32 \ + mipsisa64r6-linux-gnuabi64 \ + mipsisa64r6el-linux-gnuabi64 \ + powerpc-linux-gnu \ + powerpc64-linux-gnu \ + powerpc64le-linux-gnu \ + riscv64-linux-gnu \ + s390-linux-gnu \ + s390x-linux-gnu \ + sh-linux-gnu \ + sparc-linux-gnu \ + sparc64-linux-gnu \ + x86_64-linux-gnu \ + x86_64-linux-gnux32 \ + m32r-linux-gnu \ + x86_64-pep + +# try to work around #758830 +ifeq ($(DEB_HOST_ARCH),sh4) + multiarch_targets := $(filter-out hppa-linux-gnu, $(multiarch_targets)) +endif + +stamps/configure-multi: + $(checkdir) + @echo BEGIN $@ + rm -rf stamps/configure-multi \ + builddir-multi + mkdir builddir-multi + cd builddir-multi \ + && env CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" \ + $(call SET_MULTIARCH_ENV,$(DEB_HOST_ARCH)) \ + ../configure $(CONFARGS) $(CONF_PGO) \ + --with-sysroot=/ \ + --libdir=/$(PF)/lib/$(DEB_HOST_MULTIARCH) \ + --enable-targets=$(subst $(SPACE),$(COMMA),$(multiarch_targets)) + @mkdir -p stamps + touch $@ + +stamps/build-multi: stamps/configure-multi + $(checkdir) + @echo BEGIN $@ + env BFD_SOVER_EXT="$(MULTI_VERSION)" CTF_SOVER_EXT="$(MULTI_VERSION)" \ + $(call SET_MULTIARCH_ENV,$(DEB_HOST_ARCH)) \ + $(MAKE) $(NJOBS) -C builddir-multi \ + LDFLAGS="-Wl,-z,relro" + touch $@ + +############################################################################### + +################# +# cross targets # +################# + +CROSS_CONFARGS = $(CONFARGS) --enable-initfini-array +ifeq ($(with_gold),yes) + CROSS_CONFARGS += --enable-ld=default --enable-gold +endif + +stamps/configure.%: + $(checkdir) + @echo BEGIN $@ + rm -rf $@ builddir-$* + mkdir builddir-$* + cd builddir-$* \ + && env CC="$(CC)" CXX="$(CXX)" \ + $(call SET_MULTIARCH_ENV,$*) \ + ../configure \ + $(CROSS_CONFARGS) \ + $(CONFARGS_TARGET_$(*)) \ + --with-sysroot=/ \ + --libdir=/$(PF)/lib/$(call _multiarch,$*) \ + $(if $(filter $*, $(gold_targets)),--enable-ld=default --enable-gold,--disable-gold) \ + --target=$(CROSS_GNU_TYPE) + @mkdir -p stamps + touch $@ + +stamps/build.%: stamps/configure.% + $(checkdir) + @echo BEGIN $@ + env BFD_SOVER_EXT="-$*" CTF_SOVER_EXT="-$*" \ + $(call SET_MULTIARCH_ENV,$*) \ + $(MAKE) -C builddir-$* $(NJOBS) \ + CFLAGS="$(CFLAGS)" \ + CXXFLAGS="$(CXXFLAGS)" \ + LDFLAGS="$(LDFLAGS) -Wl,-z,relro" +ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) +ifeq ($(with_check),yes) + -env MAKE="$(MAKE) VERSION=$(VERSION)-$*" \ + $(call SET_MULTIARCH_ENV,$*) \ + $(MAKE) -C builddir-$* -k check + cat builddir-$*/binutils/binutils.sum \ + builddir-$*/gas/testsuite/gas.sum \ + builddir-$*/ld/ld.sum >> test-summary-$* + set -e; \ + tsi=test-summary-$*-installed; \ + rm -f $$tsi; \ + if [ -f /usr/share/doc/$(P_CROSS)/test-summary.gz ]; then \ + zcat /usr/share/doc/$(P_CROSS)/test-summary.gz > $$tsi; \ + elif [ -f /usr/share/doc/binutils/test-summary-$*.gz ]; then \ + zcat /usr/share/doc/binutils/test-summary-$*.gz > $$tsi; \ + fi; \ + if [ ! -f $$tsi ]; then \ + echo "No test results available for the installed $(P_CROSS) version"; \ + elif [ -x /usr/bin/python3 ]; then \ + echo "Test results, compared with installed binutils:"; \ + if python3 debian/test-suite-compare.py $$tsi test-summary-$*; then \ + : ; \ + elif [ -n "$(ignore_regressions)" ]; then \ + echo "$(ignore_regressions)"; \ + else \ + false; \ + fi; \ + else \ + echo "python3 not installed, not comparing test results."; \ + fi +endif +endif + touch $@ + +stamps/install.%: stamps/build.% + $(checkdir) + @echo BEGIN $@ + rm -rf $(D_CROSS) + env MAKE="$(MAKE) VERSION=$(VERSION)-$*" \ + $(MAKE) -C builddir-$* DESTDIR=$(CURDIR)/$(D_CROSS) install + + rm -rf \ + $(D_CROSS)/$(PF)/share/info \ + $(D_CROSS)/$(PF)/share/locale + + mkdir -p $(D_CROSS)/$(PF)/lib/$(DEB_HOST_MULTIARCH) + set -e; \ + d_src=$(D_CROSS)/$(PF)/$(DEB_HOST_GNU_TYPE)/$(CROSS_GNU_TYPE)/lib; \ + d_dst=$(D_CROSS)/$(PF)/lib/$(DEB_HOST_MULTIARCH); \ + for lib in libbfd libopcodes; do \ + so=$$(basename $$(echo $$d_src/$$lib*$**.so)); \ + mv $$d_src/$$so $$d_dst/.; \ + ln -sf ../../../lib/$(DEB_HOST_MULTIARCH)/$$so $$d_src/$$lib.so; \ + mv $$d_src/$$lib.a $$d_dst/$${lib}-$(VERSION)-$*.a; \ + ln -sf ../../../lib/$(DEB_HOST_MULTIARCH)/$$lib-$(VERSION)-$*.a $$d_src/$$lib.a; \ + done + mv $(D_CROSS)/$(PF)/lib/$(call _multiarch,$*)/libctf*.so.* \ + $(D_CROSS)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/. + + : # replace hard links with soft links + for i in $(D_CROSS)/usr/$(CROSS_GNU_TYPE)/bin/*; do \ + ln -sf ../../bin/$(CROSS_GNU_TYPE)-$$(basename $$i) $$i; \ + done + ln -sf $(CROSS_GNU_TYPE)-ld.bfd $(D_CROSS)/usr/bin/$(CROSS_GNU_TYPE)-ld + + $(call strip_package, $(P_CROSS),$(D_CROSS),.) + chmod ugo-x $(D_CROSS)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/*.so + chmod ugo-x $(D_CROSS)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/*.so.* + + : # Get rid of .la files since libtool obviously has no idea about transient paths + rm -f $(D_CROSS)/$(PF)/$(DEB_HOST_GNU_TYPE)/$(CROSS_GNU_TYPE)/lib/*.la + + for i in $(D_CROSS)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/*.a; do \ + echo "lto-stripping $(basename $$i) ..."; \ + $(STRIP_LTO) $$i; \ + if which strip-nondeterminism >/dev/null 2>&1; then \ + echo "strip-nondeterminism $(basename $$i) ..."; \ + strip-nondeterminism $$i; \ + fi; \ + done + + : # no spu toolchain + rm -f $(D_CROSS)/$(PF)/bin/*embedspu + + : # Remove windows related manpages + rm -f $(D_CROSS)/$(PF)/share/man/man1/$(CROSS_GNU_TYPE)-{dlltool,nlmconv,windmc,windres}.1 + + : # symlink man pages + mv $(D_CROSS)/$(PF)/share/man/man1/$(CROSS_GNU_TYPE)-ld.1 \ + $(D_CROSS)/$(PF)/share/man/man1/$(CROSS_GNU_TYPE)-ld.bfd.1 + gzip -9n $(D_CROSS)/$(PF)/share/man/man1/* + for i in $(D_CROSS)/$(PF)/share/man/man1/*; do \ + b=$$(basename $$i | sed 's/$(CROSS_GNU_TYPE)-//'); \ + ln -sf $$b $$i; \ + done + ln -sf $(CROSS_GNU_TYPE)-ld.bfd.1.gz \ + $(D_CROSS)/$(PF)/share/man/man1/$(CROSS_GNU_TYPE)-ld.1.gz + + : # gold man pages + $(if $(filter $*, $(gold_targets)), \ + ln -sf ld.gold.1.gz $(D_CROSS)/$(PF)/share/man/man1/$(CROSS_GNU_TYPE)-ld.gold.1.gz; \ + ln -sf dwp.1.gz $(D_CROSS)/$(PF)/share/man/man1/$(CROSS_GNU_TYPE)-dwp.1.gz; \ + ) + + : # Don't want /usr/-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