--- binutils-2.23.1.orig/debian/binutils.overrides +++ binutils-2.23.1/debian/binutils.overrides @@ -0,0 +1,8 @@ +# the API of the shared libs is not public, don't care about the name +binutils binary: package-name-doesnt-match-sonames + +# big tables +binutils binary: manpage-has-errors-from-man + +# silence lintian stupidity +binutils binary: spelling-error-in-binary usr/bin/as mmnemonic mnemonic --- binutils-2.23.1.orig/debian/binutils.postrm +++ binutils-2.23.1/debian/binutils.postrm @@ -0,0 +1,7 @@ +#! /bin/sh + +set -e + +if [ "$1" = "remove" ]; then + ldconfig +fi --- binutils-2.23.1.orig/debian/binutils-multiarch.shlibs.in +++ binutils-2.23.1/debian/binutils-multiarch.shlibs.in @@ -0,0 +1,2 @@ +libbfd @VER@-multiarch@DATE_EXT@ binutils-multiarch +libopcodes @VER@-multiarch@DATE_EXT@ binutils-multiarch --- binutils-2.23.1.orig/debian/watch +++ binutils-2.23.1/debian/watch @@ -0,0 +1,2 @@ +version=2 +http://ftp.gnu.org/gnu/binutils/binutils-([\d\.]*).tar.gz --- binutils-2.23.1.orig/debian/control +++ binutils-2.23.1/debian/control @@ -0,0 +1,120 @@ +Source: binutils +Section: devel +Priority: optional +Maintainer: Ubuntu Core developers +XSBC-Original-Maintainer: Matthias Klose +Uploaders: James Troup , Daniel Jacobowitz +Standards-Version: 3.9.4 +Build-Depends: dpkg-dev (>= 1.13.9), autoconf (>= 2.64), bison, flex, gettext, texinfo, dejagnu (>= 1.4.2-1.1), quilt, file, xz-utils, lsb-release, zlib1g-dev +XS-Testsuite: autopkgtest + +Package: binutils +Architecture: any +Depends: ${shlibs:Depends} +Conflicts: gas, elf-binutils, modutils (<< 2.4.19-1), ${extraConflicts}, binutils-gold (<< 2.20.51.20100415) +Replaces: binutils-gold (<< 2.20.51.20100415) +Provides: elf-binutils +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: binutils-dev +Architecture: any +Priority: extra +Depends: binutils (= ${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: extra +Depends: ${shlibs:Depends}, binutils (= ${binary:Version}) +Provides: multiarch-binutils +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-gold +Architecture: amd64 armel armhf i386 powerpc powerpcspe ppc64 sparc sparc64 x32 +Priority: extra +Depends: ${shlibs:Depends}, binutils (= ${binary:Version}) +Description: GNU gold linker utility + Gold is a new linker, which is faster than the current linker included + in binutils. + . + This package diverts the GNU linker (ld) with the gold linker. + +Package: binutils-static +Architecture: any +Description: statically linked binutils tools + This package contains statically linked binutils tools used + for linking kernel modules needed to mount /usr or /. At the moment, + it only contains ld. + +Package: binutils-static-udeb +Section: debian-installer +Architecture: any +Description: statically linked binutils tools for for the Debian installer + This package contains statically linked binutils tools used + for linking kernel modules needed to mount /usr or /. At the moment, + it only contains ld. + +Package: binutils-hppa64 +Architecture: any +Depends: ${shlibs:Depends}, binutils (= ${binary:Version}) +Recommends: libc6-dev +Suggests: binutils-doc (>= ${source:Version}) +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-spu +Architecture: powerpc ppc64 +Depends: ${shlibs:Depends}, binutils (= ${binary:Version}) +Recommends: libc6-dev +Conflicts: spu-binutils +Replaces: spu-binutils +Provides: spu-binutils +Suggests: binutils-doc (>= ${source:Version}) +Description: GNU assembler, linker and binary utilities targeted for spu-elf + 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 programs for Cell Broadband Engine SPU + processors. + +Package: binutils-doc +Section: doc +Architecture: all +Priority: optional +Depends: dpkg (>= 1.15.4) | install-info +Conflicts: binutils (<< 2.9.1.0.25-3) +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 +Priority: optional +Depends: texinfo, zlib1g-dev, make, python +Description: GNU assembler, linker and binary utilities (source) + This package contains the sources and patches which are needed to + build binutils. --- binutils-2.23.1.orig/debian/binutils-multiarch.postrm.in +++ binutils-2.23.1/debian/binutils-multiarch.postrm.in @@ -0,0 +1,49 @@ +#! /bin/sh +set -e +this_ver=@DEB_VER@; # this version +# 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.9.5.0.16-1 "/usr/bin/$prog" +done + +if [ "$1" = "remove" ]; then + ldconfig +fi --- binutils-2.23.1.orig/debian/binutils-hppa64.postinst +++ binutils-2.23.1/debian/binutils-hppa64.postinst @@ -0,0 +1,7 @@ +#! /bin/sh + +set -e + +if [ "$1" = "configure" ]; then + ldconfig +fi --- binutils-2.23.1.orig/debian/binutils-spu.postinst +++ binutils-2.23.1/debian/binutils-spu.postinst @@ -0,0 +1,7 @@ +#! /bin/sh + +set -e + +if [ "$1" = "configure" ]; then + ldconfig +fi --- binutils-2.23.1.orig/debian/copyright +++ binutils-2.23.1/debian/copyright @@ -0,0 +1,44 @@ +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 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'. --- binutils-2.23.1.orig/debian/binutils-hppa64.overrides +++ binutils-2.23.1/debian/binutils-hppa64.overrides @@ -0,0 +1,8 @@ +# don't warn about missing man pages for diverted binaries +binutils-hppa64 binary: binary-without-manpage + +# the API of the shared libs is not public, don't care about the name +binutils-hppa64 binary: package-name-doesnt-match-sonames + +# it's a cross toolchain +binutils-hppa64 binary: binary-or-shlib-defines-rpath --- binutils-2.23.1.orig/debian/control.cross.in +++ binutils-2.23.1/debian/control.cross.in @@ -0,0 +1,11 @@ +Package: binutils-__TARGET__ +Architecture: any +Depends: binutils, ${shlibs:Depends} +Suggests: binutils-doc (= ${Source-Version}) +Priority: extra +Description: GNU binary utilities, for __TARGET__ target + This package provides GNU assembler, linker and binary utilities + for __TARGET__ target, for use in a cross-compilation environment. + . + You don't need this package unless you plan to cross-compile programs + for __TARGET__. --- binutils-2.23.1.orig/debian/binutils.shlibs.in +++ binutils-2.23.1/debian/binutils.shlibs.in @@ -0,0 +1,2 @@ +libbfd @VER@-system@DATE_EXT@ binutils (>= @DEB_UVER@), binutils (<< @DEB_NVER@) +libopcodes @VER@-system@DATE_EXT@ binutils (>= @DEB_UVER@), binutils (<< @DEB_NVER@) --- binutils-2.23.1.orig/debian/test-suite-compare.py +++ binutils-2.23.1/debian/test-suite-compare.py @@ -0,0 +1,230 @@ +#!/usr/bin/env python + +# 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 results.has_key(section): + extra = 1 + too_many = 10 + while results.has_key(section) 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 results.has_key(test): + 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 new.keys(): + for test in 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 not old.has_key(section): + continue + if not old[section].has_key(test): + 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() --- binutils-2.23.1.orig/debian/binutils-static.preinst +++ binutils-2.23.1/debian/binutils-static.preinst @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e + +if [ -L /usr/share/doc/binutils-static ]; then + # We must be upgrading from a version that depended on binutils + rm -f /usr/share/doc/binutils-static +fi + +exit 0 --- binutils-2.23.1.orig/debian/binutils.postinst +++ binutils-2.23.1/debian/binutils.postinst @@ -0,0 +1,7 @@ +#! /bin/sh + +set -e + +if [ "$1" = "configure" ]; then + ldconfig +fi --- binutils-2.23.1.orig/debian/binutils-spu.shlibs.in +++ binutils-2.23.1/debian/binutils-spu.shlibs.in @@ -0,0 +1,2 @@ +libbfd @VER@-spu@DATE_EXT@ binutils-spu +libopcodes @VER@-spu@DATE_EXT@ binutils-spu --- binutils-2.23.1.orig/debian/binutils-multiarch.postinst +++ binutils-2.23.1/debian/binutils-multiarch.postinst @@ -0,0 +1,52 @@ +#! /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 +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 + +if [ "$1" = "configure" ]; then + ldconfig +fi --- binutils-2.23.1.orig/debian/binutils-gold.overrides +++ binutils-2.23.1/debian/binutils-gold.overrides @@ -0,0 +1,5 @@ +# don't warn about missing man pages for diverted binaries +binutils-gold 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 --- binutils-2.23.1.orig/debian/control.in +++ binutils-2.23.1/debian/control.in @@ -0,0 +1,120 @@ +Source: binutils +Section: devel +Priority: optional +Maintainer: Ubuntu Core developers +XSBC-Original-Maintainer: Matthias Klose +Uploaders: James Troup , Daniel Jacobowitz +Standards-Version: 3.9.4 +Build-Depends: dpkg-dev (>= 1.13.9), autoconf (>= 2.64), bison, flex, gettext, texinfo, dejagnu (>= 1.4.2-1.1), quilt, file, xz-utils, lsb-release, zlib1g-dev +XS-Testsuite: autopkgtest + +Package: binutils +Architecture: any +Depends: ${shlibs:Depends} +Conflicts: gas, elf-binutils, modutils (<< 2.4.19-1), ${extraConflicts}, binutils-gold (<< 2.20.51.20100415) +Replaces: binutils-gold (<< 2.20.51.20100415) +Provides: elf-binutils +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: binutils-dev +Architecture: any +Priority: extra +Depends: binutils (= ${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: extra +Depends: ${shlibs:Depends}, binutils (= ${binary:Version}) +Provides: multiarch-binutils +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-gold +Architecture: amd64 armel armhf i386 powerpc powerpcspe ppc64 sparc sparc64 x32 +Priority: extra +Depends: ${shlibs:Depends}, binutils (= ${binary:Version}) +Description: GNU gold linker utility + Gold is a new linker, which is faster than the current linker included + in binutils. + . + This package diverts the GNU linker (ld) with the gold linker. + +Package: binutils-static +Architecture: any +Description: statically linked binutils tools + This package contains statically linked binutils tools used + for linking kernel modules needed to mount /usr or /. At the moment, + it only contains ld. + +Package: binutils-static-udeb +Section: debian-installer +Architecture: any +Description: statically linked binutils tools for for the Debian installer + This package contains statically linked binutils tools used + for linking kernel modules needed to mount /usr or /. At the moment, + it only contains ld. + +Package: binutils-hppa64 +Architecture: any +Depends: ${shlibs:Depends}, binutils (= ${binary:Version}) +Recommends: libc6-dev +Suggests: binutils-doc (>= ${source:Version}) +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-spu +Architecture: powerpc ppc64 +Depends: ${shlibs:Depends}, binutils (= ${binary:Version}) +Recommends: libc6-dev +Conflicts: spu-binutils +Replaces: spu-binutils +Provides: spu-binutils +Suggests: binutils-doc (>= ${source:Version}) +Description: GNU assembler, linker and binary utilities targeted for spu-elf + 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 programs for Cell Broadband Engine SPU + processors. + +Package: binutils-doc +Section: doc +Architecture: all +Priority: optional +Depends: dpkg (>= 1.15.4) | install-info +Conflicts: binutils (<< 2.9.1.0.25-3) +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 +Priority: optional +Depends: texinfo, zlib1g-dev, make, python +Description: GNU assembler, linker and binary utilities (source) + This package contains the sources and patches which are needed to + build binutils. --- binutils-2.23.1.orig/debian/binutils-hppa64.shlibs.in +++ binutils-2.23.1/debian/binutils-hppa64.shlibs.in @@ -0,0 +1,2 @@ +libbfd @VER@-hppa64@DATE_EXT@ binutils-hppa64 +libopcodes @VER@-hppa64@DATE_EXT@ binutils-hppa64 --- binutils-2.23.1.orig/debian/strip.cross.in +++ binutils-2.23.1/debian/strip.cross.in @@ -0,0 +1,3 @@ +#! /bin/sh + +__TARGET__strip --remove-section=.comment --remove-section=.note $* --- binutils-2.23.1.orig/debian/binutils-hppa64.postrm +++ binutils-2.23.1/debian/binutils-hppa64.postrm @@ -0,0 +1,7 @@ +#! /bin/sh + +set -e + +if [ "$1" = "remove" ]; then + ldconfig +fi --- binutils-2.23.1.orig/debian/README.source +++ binutils-2.23.1/debian/README.source @@ -0,0 +1,2 @@ +The package uses dpatch to apply patches on top of the upstream source. +See /usr/share/doc/dpatch/README.source.gz. --- binutils-2.23.1.orig/debian/binutils-spu.postrm +++ binutils-2.23.1/debian/binutils-spu.postrm @@ -0,0 +1,7 @@ +#! /bin/sh + +set -e + +if [ "$1" = "remove" ]; then + ldconfig +fi --- binutils-2.23.1.orig/debian/binutils-multiarch.prerm.in +++ binutils-2.23.1/debian/binutils-multiarch.prerm.in @@ -0,0 +1,66 @@ +#! /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 +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 --- binutils-2.23.1.orig/debian/README.cross +++ binutils-2.23.1/debian/README.cross @@ -0,0 +1,26 @@ +Cross-binutils debian packages can be built directly from the binutils +source package. + +To build a cross-binutils package: + + 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 + "") + +--- +Nikita Youshchenko +Hector Oron +Marcin Juszkiewicz --- binutils-2.23.1.orig/debian/binutils-spu.overrides +++ binutils-2.23.1/debian/binutils-spu.overrides @@ -0,0 +1,8 @@ +# don't warn about missing man pages for diverted binaries +binutils-spu binary: binary-without-manpage + +# the API of the shared libs is not public, don't care about the name +binutils-spu binary: package-name-doesnt-match-sonames + +# it's a cross toolchain +binutils-spu binary: binary-or-shlib-defines-rpath --- binutils-2.23.1.orig/debian/binutils-multiarch.preinst.in +++ binutils-2.23.1/debian/binutils-multiarch.preinst.in @@ -0,0 +1,27 @@ +#! /bin/sh +set -e +new_ver=@DEB_VER@; # this version +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.9.5.0.16-1 "/usr/bin/$prog" +done --- binutils-2.23.1.orig/debian/rules +++ binutils-2.23.1/debian/rules @@ -0,0 +1,1349 @@ +#!/usr/bin/make -f +# debian/rules file - for binutils (2.20) +# 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-2009 Canonical Ltd. +# Portions Copyright 2008-2009 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 + +################################################################################ + +p_bin = binutils +p_dev = $(p_bin)-dev +p_mul = $(p_bin)-multiarch +p_gold = $(p_bin)-gold +p_doc = $(p_bin)-doc +p_hppa64 = $(p_bin)-hppa64 +p_spu = $(p_bin)-spu +p_src = $(p_bin)-source +p_static = $(p_bin)-static +p_udeb = $(p_static)-udeb + +# 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_dev = debian/$(p_dev) +d_mul = debian/$(p_mul) +d_gold = debian/$(p_gold) +d_doc = debian/$(p_doc) +d_hppa64 = debian/$(p_hppa64) +d_spu = debian/$(p_spu) +d_src = debian/$(p_src) +d_static = debian/$(p_static) +d_udeb = debian/$(p_udeb) + +install_dir = install -d -m 755 +install_file = install -m 644 +install_script = install -m 755 +install_binary = install -m 755 -s + +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_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_TYPE) +DEB_HOST_MULTIARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_MULTIARCH) + +#--------------------------------------------------------------------------- +# set target +# - Debian arch or GNU triplet via DEB_TARGET_ARCH +# - Debian arch or GNU triplet via deprecated TARGET +# - Debian arch or GNU triplet in debian/target + +# Support the old TARGET variable whilst it's still used +DEB_TARGET_ARCH ?= $(TARGET) + +ifeq (,$(DEB_TARGET_ARCH)) + ifneq (,$(wildcard debian/target)) + DEB_TARGET_ARCH := $(shell cat debian/target 2>/dev/null) + endif +endif + +ifneq (,$(DEB_TARGET_ARCH)) + # Support DEB_TARGET_ARCH both as Debian architecture specification (e.g. arm), + # and as the target name (e.g. arm-linux-gnu). + try_convert := $(shell dpkg-architecture -f -t$(DEB_TARGET_ARCH) -qDEB_HOST_ARCH 2>/dev/null) + ifneq ($(try_convert),) + override DEB_TARGET_ARCH := $(try_convert) + endif + DPKG_TARGET_VARS := $(shell dpkg-architecture -f -a$(DEB_TARGET_ARCH)) + DEB_TARGET_MULTIARCH = $(call vafilt,$(DPKG_TARGET_VARS),DEB_HOST_MULTIARCH) + DEB_TARGET_ARCH = $(call vafilt,$(DPKG_TARGET_VARS),DEB_HOST_ARCH) +else + DEB_TARGET_MULTIARCH = $(DEB_HOST_MULTIARCH) + DEB_TARGET_ARCH = $(DEB_HOST_ARCH) +endif + +ifeq ($(DEB_TARGET_ARCH),) + $(error Invalid architecure) +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 + +ifneq (,$(filter $(DEB_HOST_ARCH), amd64 armel armhf i386 powerpc powerpcspe ppc64 sparc sparc64 x32)) + with_gold = yes +endif + +with_multiarch := yes +with_static := yes + +CC = gcc +CXX = g++ +CFLAGS = -g -O2 -Wno-format-security +STRIP = strip --remove-section=.comment --remove-section=.note +CROSS := +ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + CROSS := $(DEB_HOST_GNU_TYPE)- + CC = $(CROSS)gcc + CXX = $(CROSS)g++ + STRIP= $(CURDIR)/debian/strip.cross + install_binary = install -m 755 -s --strip-program="$(STRIP)" +endif + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS = -g -O0 +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) +#DATE := $(shell sed -n 's/.* \([0-9]*\)$$/\1/p' bfd/version.h) +ifneq (,$(DATE)) + DATE_EXT := .$(DATE) +endif + +ifneq ($(DEB_UPSTREAM),$(VERSION)$(DATE_EXT)) + $(error upstream ($(DEB_UPSTREAM)) and debian ($(VERSION)$(DATE_EXT)) version mismatch) +endif + +STATIC_UDEB = $(p_udeb)_$(DEB_VERSION)_$(DEB_HOST_ARCH).udeb + +SINGLE_VERSION= $(VERSION)-system +MULTI_VERSION = $(VERSION)-multiarch +HPPA64_VERSION= $(VERSION)-hppa64 +SPU_VERSION = $(VERSION)-spu + +DISTRIBUTION := $(shell lsb_release -is) +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 nostat,$(DEB_BUILD_OPTIONS))) + with_static = disabled in DEB_BUILD_OPTIONS +endif +ifneq (,$(findstring nomult,$(DEB_BUILD_OPTIONS))) + with_multiarch = 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 + +######################################## + +CONFARGS = \ + --enable-shared \ + --enable-plugins \ + --prefix=/$(PF) \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --host=$(DEB_HOST_GNU_TYPE) \ + --with-pkgversion="GNU Binutils for $(DISTRIBUTION)" + +ifeq ($(DEB_TARGET_MULTIARCH),x86_64-linux-gnu) + DEB_TARGET_MULTIARCH32 = i386-linux-gnu + DEB_TARGET_MULTIARCHX32 = x86_64-linux-gnux32 +else ifeq ($(DEB_TARGET_MULTIARCH),x86_64-linux-gnux32) + DEB_TARGET_MULTIARCH32 = i386-linux-gnu + DEB_TARGET_MULTIARCH64 = x86_64-linux-gnu +else ifeq ($(DEB_TARGET_MULTIARCH),powerpc64-linux-gnu) + DEB_TARGET_MULTIARCH32 = powerpc-linux-gnu +else ifeq ($(DEB_TARGET_MULTIARCH),s390x-linux-gnu) + DEB_TARGET_MULTIARCH32 = s390-linux-gnu +else ifeq ($(DEB_TARGET_MULTIARCH),sparc64-linux-gnu) + DEB_TARGET_MULTIARCH32 = sparc-linux-gnu +else ifeq ($(DEB_TARGET_MULTIARCH),x86_64-kfreebsd-gnu) + DEB_TARGET_MULTIARCH32 = i386-kfreebsd-gnu +else ifeq ($(DEB_TARGET_MULTIARCH),i386-linux-gnu) + DEB_TARGET_MULTIARCH64 = x86_64-linux-gnu + DEB_TARGET_MULTIARCHX32 = x86_64-linux-gnux32 +else ifeq ($(DEB_TARGET_MULTIARCH),powerpc-linux-gnu) + DEB_TARGET_MULTIARCH64 = powerpc64-linux-gnu +else ifeq ($(DEB_TARGET_MULTIARCH),sparc-linux-gnu) + DEB_TARGET_MULTIARCH64 = sparc64-linux-gnu +else ifeq ($(DEB_TARGET_MULTIARCH),s390-linux-gnu) + DEB_TARGET_MULTIARCH64 = s390x-linux-gnu +else ifeq ($(DEB_TARGET_MULTIARCH),i386-kfreebsd-gnu) + DEB_TARGET_MULTIARCH64 = x86_64-kfreebsd-gnu +else ifeq ($(DEB_TARGET_MULTIARCH),mips-linux-gnu) + DEB_TARGET_MULTIARCH64 = mips64-linux-gnu +else ifeq ($(DEB_TARGET_MULTIARCH),mipsel-linux-gnu) + DEB_TARGET_MULTIARCH64 = mips64el-linux-gnu +endif +export DEB_TARGET_MULTIARCH DEB_TARGET_MULTIARCH32 DEB_TARGET_MULTIARCH64 +export DEB_TARGET_MULTIARCHX32 + +ifeq ($(DEB_TARGET_ARCH),sparc) + CONFARGS += --enable-targets=sparc64-linux-gnu + CONFLICTS = -VextraConflicts="libc6-dev-sparc64 (<< 2.2.5-7)" +endif +ifeq ($(DEB_TARGET_ARCH),sparc64) + CONFARGS += --enable-targets=sparc-linux-gnu + CONFLICTS = -VextraConflicts="libc6-dev-sparc64 (<< 2.2.5-7)" +endif +ifeq ($(DEB_TARGET_ARCH),powerpc) + CONFARGS += --enable-targets=powerpc64-linux-gnu,spu +endif +ifeq ($(DEB_TARGET_ARCH),ppc64) + CONFARGS += --enable-targets=powerpc-linux-gnu,spu +endif +ifeq ($(DEB_TARGET_ARCH),s390) + CONFARGS += --enable-targets=s390x-linux-gnu +endif +ifeq ($(DEB_TARGET_ARCH),s390x) + CONFARGS += --enable-targets=s390-linux-gnu +endif +ifeq ($(DEB_TARGET_ARCH),amd64) + CONFARGS += --enable-targets=x86_64-linux-gnux32 +endif +ifeq ($(DEB_TARGET_ARCH),i386) + CONFARGS += --enable-targets=x86_64-linux-gnu,x86_64-linux-gnux32 +endif +ifeq ($(DEB_TARGET_ARCH),kfreebsd-i386) + CONFARGS += --enable-targets=x86_64-kfreebsd-gnu +endif +ifeq ($(DEB_TARGET_ARCH),mips) + CONFARGS += --enable-targets=mips64-linux-gnu +endif +ifeq ($(DEB_TARGET_ARCH),mipsel) + CONFARGS += --enable-targets=mips64el-linux-gnu +endif + +with_check := yes +ifneq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS))) + with_check := disabled through DEB_BUILD_OPTIONS +endif +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 %-stamp .pc CVS debian builddir-% test-summary, $(wildcard *))) + +################################################################################ + +################# +# patch targets # +################# + +patch: patch-stamp +patch-stamp: +ifneq ($(PATCHED_SOURCES),yes) + QUILT_PATCHES=$(CURDIR)/debian/patches \ + quilt --quiltrc /dev/null push -a || test $$? = 2 +endif + touch $@ + +unpatch: + QUILT_PATCHES=$(CURDIR)/debian/patches \ + quilt --quiltrc /dev/null pop -a -R || test $$? = 2 + rm -rf .pc + +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: unpatch + $(checkdir) + -rm -fr builddir-multi builddir-single builddir-hppa64 builddir-spu builddir-gold + -find . -name \*.gmo -o -name \*~ -o -name \*.info ! -name sysroff.info | xargs rm -f + -rm -f $(pwd)/test-summary* + -rm -fr $(d_bin) $(d_dev) $(d_mul) $(d_doc) $(d_hppa64) $(d_src) $(d_spu) $(d_gold) + -rm -fr builddir-static + -rm -fr $(d_static) $(d_udeb) + -rm -rf debian/patched debian/tmp debian/files* debian/substvars + -rm -f debian/*.orig debian/*.rej + -rm -rf $(d_cross) debian/files debian/substvars + -rm -rf builddir-$(TARGET) {configure,build,install}-cross-stamp + for i in debian/*.in; do \ + case "$$i" in debian/control*.in) continue; esac; \ + rm -f $${i%*.in}; \ + done + + -rm -f *-stamp + +################################################################################ + +control-stamp: debian/control.in $(if $(TARGET),debian/control.cross.in) +ifneq (,$(TARGET)) + sed "/^$$/ q" < debian/control.in > debian/control + sed -e "s/__TARGET__/$$(echo -n $(TARGET) | sed s/_/-/g)/" \ + < debian/control.cross.in >> debian/control +else + cp debian/control.in debian/control +endif +ifneq (,$(CROSS)) + sed -e "s/__TARGET__/$$(echo -n $(CROSS) | sed s/_/-/g)/" \ + < debian/strip.cross.in >> debian/strip.cross + chmod 755 debian/strip.cross +endif + touch $@ + +####################### +# single-arch targets # +####################### + +SINGLE_CONFARGS = $(CONFARGS) +ifeq ($(with_gold),yes) + SINGLE_CONFARGS += --enable-ld=default --enable-gold +endif + +configure-single-stamp: patch-stamp control-stamp + $(checkdir) + +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 configure-single-stamp \ + builddir-single + mkdir builddir-single + cd builddir-single && env CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" \ + ../configure --with-sysroot=/ $(SINGLE_CONFARGS) + $(MAKE) -C builddir-single configure-host + touch configure-single-stamp + +build-single-stamp: configure-single-stamp + $(checkdir) + env MAKE="$(MAKE) VERSION=$(SINGLE_VERSION)" \ + $(MAKE) -C builddir-single/bfd headers + env MAKE="$(MAKE) VERSION=$(SINGLE_VERSION)" \ + $(MAKE) $(NJOBS) -C builddir-single +ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) +ifeq ($(with_check),yes) + -env MAKE="$(MAKE) VERSION=$(SINGLE_VERSION)" \ + $(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; \ + if [ ! -f /usr/share/doc/binutils/test-summary.gz ]; then \ + echo "No test results available for the installed binutils version"; \ + elif [ -x /usr/bin/python ]; then \ + echo "Test results, compared with installed binutils:"; \ + zcat /usr/share/doc/binutils/test-summary.gz > test-summary-installed; \ + if python debian/test-suite-compare.py test-summary-installed test-summary; then \ + : ; \ + elif [ -n "$(ignore_regressions)" ]; then \ + echo "$(ignore_regressions)"; \ + else \ + case "$(DEB_HOST_ARCH)" in \ + powerpc) \ + echo "WARNING: ignoring test results";; \ + *) \ + false;; \ + esac; \ + fi; \ + else \ + echo "python not installed, not comparing test results."; \ + fi +endif +endif + touch build-single-stamp + + +################################################################################ + +##################### +# multiarch targets # +##################### + +# strictly speaking this is incorrect as the first column of this file should +# be ignored, but it's not obvious how to compute a proper list of triplets +# which Debian cares about since this table only lists official ports and the +# other tables combined give too many ports and generate triplets which break +# the binutils build; also, it's not possible to use --enable-targets=all +# either; see: +# http://lists.debian.org/debian-dpkg/2011/02/msg00085.html +multiarch_targets := $(shell sed -n 's/^\([^[:space:]\#]\+\).*/\1/p' /usr/share/dpkg/archtable) + +# some extra targets which were present in earlier versions of the +# multiarch_targets list; would be good to find out who needs them for what +multiarch_targets += \ + aarch64-linux-gnu \ + i686-linux-gnu \ + m32r-linux-gnu \ + m68k-linux-gnu \ + m68k-rtems \ + mips64el-linux-gnu \ + mips64-linux-gnu \ + powerpc64-linux-gnu \ + s390x-linux-gnu \ + sh64-linux-gnu \ + sh-linux-gnu \ + sparc64-linux-gnu \ + x86_64-linux-gnu \ + x86_64-linux-gnux32 \ + spu \ + x86_64-pep + +configure-multi-stamp: patch-stamp + $(checkdir) + rm -rf configure-multi-stamp \ + builddir-multi + mkdir builddir-multi + cd builddir-multi \ + && env CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" ../configure $(CONFARGS) \ + --with-sysroot=/ \ + --enable-targets=$(subst $(SPACE),$(COMMA),$(multiarch_targets)) + $(MAKE) -C builddir-multi configure-host + touch configure-multi-stamp + +build-multi-stamp: configure-multi-stamp + $(checkdir) + $(MAKE) -C builddir-multi/bfd headers + env MAKE="$(MAKE) VERSION=$(MULTI_VERSION)" \ + $(MAKE) $(NJOBS) -C builddir-multi + touch build-multi-stamp + +################################################################################ + +################# +# static target # +################# + +configure-static-stamp: patch-stamp + $(checkdir) + rm -rf configure-static-stamp \ + builddir-static + mkdir builddir-static + cd builddir-static \ + && env CC="$(CC)" CXX="$(CXX)" CFLAGS="-g0 -Os" ../configure \ + $(filter-out --enable-shared --enable-plugins --enable-targets=%, $(CONFARGS)) + $(MAKE) -C builddir-static configure-bfd + $(MAKE) -C builddir-static configure-ld + touch configure-static-stamp + +build-static-stamp: configure-static-stamp + $(checkdir) + $(MAKE) $(NJOBS) -C builddir-static/libiberty CCLD='$(CC) -all-static' + $(MAKE) $(NJOBS) -C builddir-static/bfd CCLD='$(CC) -all-static' + $(MAKE) $(NJOBS) -C builddir-static/ld CCLD='$(CC) -all-static' + touch build-static-stamp + +################################################################################ + +################# +# hppa64 target # +################# + +configure-hppa64-stamp: patch-stamp + $(checkdir) + rm -rf configure-hppa64-stamp \ + builddir-hppa64 + mkdir builddir-hppa64 + cd builddir-hppa64 \ + && env CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" ../configure \ + $(CONFARGS) \ + --target=hppa64-linux-gnu + $(MAKE) -C builddir-hppa64 configure-host + touch configure-hppa64-stamp + +build-hppa64-stamp: configure-hppa64-stamp + $(checkdir) + $(MAKE) -C builddir-hppa64/bfd headers + env MAKE="$(MAKE) VERSION=$(HPPA64_VERSION)" \ + $(MAKE) $(NJOBS) -C builddir-hppa64 + touch build-hppa64-stamp + +################################################################################ + +############## +# spu target # +############## + +configure-spu-stamp: patch-stamp + $(checkdir) + rm -rf configure-spu-stamp \ + builddir-spu + mkdir builddir-spu + cd builddir-spu \ + && env CC="$(CC)" CFLAGS="$(CFLAGS)" ../configure \ + $(CONFARGS) \ + --program-prefix=spu- \ + --target=spu-elf + $(MAKE) -C builddir-spu configure-host + touch configure-spu-stamp + +build-spu-stamp: configure-spu-stamp + $(checkdir) + $(MAKE) -C builddir-spu/bfd headers + env MAKE="$(MAKE) VERSION=$(SPU_VERSION)" \ + $(MAKE) $(NJOBS) -C builddir-spu + touch build-spu-stamp + +################################################################################ + +pre-build: +#ifneq (,$(filter $(DEB_HOST_ARCH), amd64)) +# @echo Build it ... +#else +# @echo Explicitely fail the build for architecture $(DEB_HOST_ARCH) +# false +#endif + +build_stamps = build-single-stamp +ifeq ($(with_multiarch),yes) + build_stamps += build-multi-stamp +endif +ifeq ($(DEB_HOST_ARCH),hppa) + build_stamps += build-hppa64-stamp +endif +ifneq (,$(filter $(DEB_HOST_ARCH),powerpc ppc64)) + build_stamps += build-spu-stamp +endif +ifneq (,$(TARGET)) + ifneq (,$(findstring static-cross,$(DEB_BUILD_OPTIONS))) + build_stamps = build-static-cross-stamp + else + build_stamps = build-cross-stamp + endif +endif + +ifeq ($(BACKPORT),true) + build_stamps := + with_check := no +endif + +build: pre-build build-stamp +build-arch: pre-build build-stamp +build-indep: pre-build build-stamp +build-stamp: $(build_stamps) + touch build-stamp + +################################################################################ + +################## +# install target # +################## + +install_stamps = install-stamp +ifeq ($(DEB_HOST_ARCH),hppa) + install_stamps += install-hppa64-stamp +endif +ifneq (,$(filter $(DEB_HOST_ARCH),powerpc ppc64)) + install_stamps += install-spu-stamp +endif +ifeq ($(with_static),yes) + install_stamps += install-static-stamp +endif +ifneq (,$(TARGET)) + ifneq (,$(findstring static-cross,$(DEB_BUILD_OPTIONS))) + install_stamps = install-static-cross-stamp + else + install_stamps = install-cross-stamp + endif +endif +ifeq ($(BACKPORT),true) + install_stamps := +endif +install: $(install_stamps) +install-stamp: checkroot build-stamp + $(checkdir) + + rm -fr $(d_bin) $(d_dev) $(d_mul) $(d_doc) $(d_src) + $(install_dir) $(d_bin) $(d_dev) $(d_mul) $(d_doc) $(d_src) + + : # install binutils and -dev stuff + env MAKE="$(MAKE) VERSION=$(SINGLE_VERSION)" \ + $(MAKE) -C builddir-single \ + CFLAGS="$(CFLAGS)" prefix=$(pwd)/$(d_bin)/$(PF) \ + mandir=$(pwd)/$(d_bin)/$(PF)/share/man \ + infodir=$(pwd)/$(d_doc)/$(PF)/share/info install + +ifeq ($(with_multiarch),yes) + : # now install binutils-multiarch stuff + env MAKE="$(MAKE) VERSION=$(MULTI_VERSION)" \ + $(MAKE) -C builddir-multi \ + CFLAGS="$(CFLAGS)" \ + prefix=$(pwd)/$(d_mul)/$(PF) \ + mandir=$(pwd)/$(d_mul)/$(PF)/share/man \ + infodir=$(pwd)/$(d_doc)/$(PF)/share/info 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 libiberty.h ... not too keen on this, but it was requested + cp -f include/libiberty.h $(d_bin)/$(PF)/include + + : # copy demangle.h ... not too keen on this, but it was requested + cp -f include/demangle.h $(d_bin)/$(PF)/include + + : # 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_bin)/$(PF)/man/man1/configure.1 + rm -f $(d_doc)/$(PF)/share/info/configure.* $(d_doc)/$(PF)/share/info/standards.* + : # *sigh*, bugs.debian.org/213524 + rm -f $(d_doc)/$(PF)/share/info/dir* + +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 + rm -fr $(d_mul)/$(PF)/lib/ldscripts + + ifneq (,$(filter $(DEB_HOST_ARCH),powerpc ppc64)) + rm -f $(d_mul)/$(PF)/bin/embedspu + endif +endif + + $(install_dir) $(d_dev)/$(PF)/include/ $(d_dev)/$(PF)/lib/ + mv $(d_bin)/$(PF)/include/* $(d_dev)/$(PF)/include/ + mv $(d_bin)/$(PF)/lib/*.a $(d_bin)/$(PF)/lib/libbfd.so $(d_bin)/$(PF)/lib/libopcodes.so \ + $(d_dev)/$(PF)/lib/ + +ifeq ($(with_multiarch),yes) + rm -f $(d_mul)/$(PF)/lib/libbfd.so $(d_mul)/$(PF)/lib/libopcodes.so + rm -f $(d_mul)/$(PF)/lib/*.la $(d_mul)/$(PF)/lib/*.a + rm -f $(d_mul)/$(PF)/lib*/libiberty* +endif + + : # Get rid of .la files since libtool obviously has no idea about transient paths + rm -f $(d_bin)/$(PF)/lib/*.la + + chmod ugo-x $(d_bin)/$(PF)/lib/*.so + $(call strip_package, $(p_bin), $(d_bin)) +ifeq ($(with_multiarch),yes) + chmod ugo-x $(d_mul)/$(PF)/lib/*.so + $(call strip_package, $(p_mul), $(d_mul)) +endif + + : # Don't want /usr/-linux to exist in any package + rm -rf $(d_bin)/$(PF)/$(DEB_HOST_GNU_TYPE) + + : # Remove windres manpages + rm -f $(d_bin)/$(PF)/share/man/man1/windres.1 + +ifeq ($(with_multiarch),yes) + rm -rf $(d_mul)/$(PF)/$(DEB_HOST_GNU_TYPE) + rm -f $(d_mul)/$(PF)/share/man/man1/windres.1 +endif + + rm -f $(d_bin)/$(PF)/bin/ld + ln -s ld.bfd $(d_bin)/$(PF)/bin/ld +ifeq ($(with_gold),yes) + ln -s ld.gold $(d_bin)/$(PF)/bin/gold + mv $(d_bin)/$(PF)/share/man/man1/ld.1 \ + $(d_bin)/$(PF)/share/man/man1/ld.bfd.1 + ln -s ld.bfd.1.gz $(d_bin)/$(PF)/share/man/man1/ld.1.gz + ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + if which help2man >/dev/null 2>&1; then \ + help2man -n 'The GNU ELF linker' $(d_bin)/$(PF)/bin/ld.gold \ + | sed 's,$(d_bin)/$(PF)/bin/,,g' > debian/ld.gold.1; \ + fi + endif + cp debian/ld.gold.1 $(d_bin)/$(PF)/share/man/man1/ + ln -s ld.gold.1.gz $(d_bin)/$(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 + + : # only keep the gold linker diversion to it's own package. + rm -fr $(d_gold) + $(install_dir) $(d_gold) + $(install_dir) $(d_gold)/$(PF)/bin + $(install_dir) $(d_gold)/$(PF)/share/man/man1 + ln -s ld.gold $(d_gold)/$(PF)/bin/ld + ln -s ld.gold.1.gz $(d_gold)/$(PF)/share/man/man1/ld.1.gz +endif + : # install a symlink for the old 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/ + + : # install libiberty PIC library + $(install_file) builddir-single/libiberty/pic/libiberty.a \ + $(d_dev)/$(PF)/lib/libiberty_pic.a + + touch install-stamp + +install-hppa64-stamp: checkroot build-hppa64-stamp + $(checkdir) + + rm -fr $(d_hppa64) + $(install_dir) $(d_hppa64) + $(install_dir) $(d_hppa64)/$(PF)/lib + + : # install binutils-hppa64 stuff + env MAKE="$(MAKE) VERSION=$(HPPA64_VERSION)" \ + $(MAKE) -C builddir-hppa64 \ + CFLAGS="$(CFLAGS)" \ + prefix=$(pwd)/$(d_hppa64)/$(PF)/ \ + mandir=$(pwd)/$(d_hppa64)/$(PF)/share/man \ + infodir=$(pwd)/$(d_hppa64)/$(PF)/share/info 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/. + + : # 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 + + $(call strip_package, $(p_hppa64), $(d_hppa64)) + chmod ugo-x $(d_hppa64)/$(PF)/lib/*.so + + : # Don't want /usr/-linux to exist in any package + rm -rf $(d_hppa64)/$(PF)/hppa64-linux-gnu + + touch install-hppa64-stamp + +install-static-stamp: checkroot build-static-stamp + $(checkdir) + + rm -fr $(d_static) $(d_udeb) + $(install_dir) $(d_static) $(d_udeb) + + : # Copy static ld-new into /bin for both -static and -static-udeb + $(install_dir) $(d_static)/bin + $(install_binary) builddir-static/ld/ld-new $(d_static)/bin/ld_static + $(install_dir) $(d_udeb)/bin + $(install_binary) builddir-static/ld/ld-new $(d_udeb)/bin/ld_static +ifeq ($(with_strip),yes) + pkg_create_dbgsym $(p_static) $(d_static) || true + $(STRIP) --strip-unneeded $(d_static)/bin/ld_static $(d_udeb)/bin/ld_static +endif + + touch install-static-stamp + +install-spu-stamp: checkroot build-spu-stamp + $(checkdir) + + rm -fr $(d_spu) + $(install_dir) $(d_spu) + $(install_dir) $(d_spu)/$(PF)/lib + + : # install binutils-spu stuff + env MAKE="$(MAKE) VERSION=$(SPU_VERSION)" \ + $(MAKE) -C builddir-spu \ + CFLAGS="$(CFLAGS)" \ + prefix=$(pwd)/$(d_spu)/$(PF)/ \ + mandir=$(pwd)/$(d_spu)/$(PF)/share/man \ + infodir=$(pwd)/$(d_spu)/$(PF)/share/info install + + : # move shared libs to the standard path + mv $(d_spu)/$(PF)/$(DEB_HOST_GNU_TYPE)/spu-elf/lib/lib*-*.so \ + $(d_spu)/$(PF)/lib/. + + : # Now get rid of just about everything in binutils-spu + rm -rf $(d_spu)/$(PF)/man + rm -rf $(d_spu)/$(PF)/info + rm -rf $(d_spu)/$(PF)/include + rm -rf $(d_spu)/$(PF)/share + rm -rf $(d_spu)/$(PF)/$(DEB_HOST_GNU_TYPE) + rm -rf $(d_spu)/$(PF)/lib/libiberty.a + rm -rf $(d_spu)/$(PF)/lib/ldscripts + + $(call strip_package, $(p_spu), $(d_spu)) + chmod ugo-x $(d_spu)/$(PF)/lib/*.so + + : # Don't want /usr/-linux to exist in any package + rm -rf $(d_spu)/$(PF)/spu-elf + + touch install-spu-stamp + +################################################################################ + +####################### +# 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)//usr/share/info/bfd.info* + rm -f $(d_doc)//usr/share/info/bfdint.info* + rm -f $(d_doc)//usr/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 -9 + gzip -9 $(d_doc)/$(PF)/share/info/* + + dpkg-gencontrol -isp -P$(d_doc) -p$(p_doc) + chown -R root:root $(d_doc) + chmod -R go=rX $(d_doc) + 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 -9 +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/ + tar -c --xz -C .. --exclude=CVS \ + -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/patches' -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 -isp -P$(d_src) -p$(p_src) + chown -R root:root $(d_src) + chmod -R go=rX $(d_src) + dpkg --build $(d_src) .. + +endif + +################################################################################ + +####################### +# binary-arch target # +####################### + +binary-arch: 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 -9f $(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/* + dpkg-gencontrol -isp -P$(d_cross) -p$(p_cross) + dpkg --build $(d_cross) .. + +else + : # generate some control & helper files + nver=$$(echo $(DEB_UPSTREAM) | awk -F. '{ OFS="."; $$NF=$$NF+1; print }'); \ + for i in debian/*.in; do \ + case "$$i" in debian/control.cross.in) continue; 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' \ + $$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_gold),yes) + $(install_dir) $(d_gold)/$(PF)/share/bug + ln -sf $(p_bin) $(d_gold)/$(PF)/share/bug/$(p_gold) +endif +ifneq (,$(filter $(DEB_HOST_ARCH),powerpc ppc64)) + $(install_dir) $(d_spu)/$(PF)/share/bug + ln -sf $(p_bin) $(d_spu)/$(PF)/share/bug/$(p_spu) +endif +ifeq ($(DEB_HOST_ARCH),hppa) + $(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_bin).overrides \ + $(d_bin)/$(PF)/share/lintian/overrides/$(p_bin) +ifeq ($(with_multiarch),yes) + $(install_file) -D debian/$(p_mul).overrides \ + $(d_mul)/$(PF)/share/lintian/overrides/$(p_mul) +endif +ifeq ($(with_static),yes) + $(install_file) -D debian/$(p_static).overrides \ + $(d_static)/$(PF)/share/lintian/overrides/$(p_static) + $(install_file) -D debian/$(p_udeb).overrides \ + $(d_udeb)/$(PF)/share/lintian/overrides/$(p_udeb) +endif +ifeq ($(with_gold),yes) + $(install_file) -D debian/$(p_gold).overrides \ + $(d_gold)/$(PF)/share/lintian/overrides/$(p_gold) +endif +ifneq (,$(filter $(DEB_HOST_ARCH),powerpc ppc64)) + $(install_file) -D debian/$(p_spu).overrides \ + $(d_spu)/$(PF)/share/lintian/overrides/$(p_spu) +endif +ifeq ($(DEB_HOST_ARCH),hppa) + $(install_file) -D debian/$(p_hppa64).overrides \ + $(d_hppa64)/$(PF)/share/lintian/overrides/$(p_hppa64) +endif + + : # install maintainer scrtips + $(install_dir) $(d_bin)/DEBIAN + $(install_script) debian/binutils.postinst $(d_bin)/DEBIAN/postinst + $(install_script) debian/binutils.postrm $(d_bin)/DEBIAN/postrm + $(install_file) debian/binutils.shlibs $(d_bin)/DEBIAN/shlibs + + $(install_dir) $(d_dev)/DEBIAN + +ifeq ($(with_multiarch),yes) + $(install_dir) $(d_mul)/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 +endif + +ifeq ($(with_static),yes) + $(install_dir) $(d_static)/DEBIAN + $(install_script) debian/binutils-static.preinst $(d_static)/DEBIAN/preinst + $(install_dir) $(d_udeb)/DEBIAN +endif + +ifeq ($(with_gold),yes) + $(install_dir) $(d_gold)/DEBIAN + $(install_script) debian/binutils-gold.postrm $(d_gold)/DEBIAN/postrm + $(install_script) debian/binutils-gold.preinst $(d_gold)/DEBIAN/preinst +endif + +ifneq (,$(filter $(DEB_HOST_ARCH),powerpc ppc64)) + $(install_dir) $(d_spu)/DEBIAN + $(install_script) debian/binutils-spu.postinst $(d_spu)/DEBIAN/postinst + $(install_script) debian/binutils-spu.postrm $(d_spu)/DEBIAN/postrm + $(install_file) debian/binutils-spu.shlibs $(d_spu)/DEBIAN/shlibs +endif + +ifeq ($(DEB_HOST_ARCH),hppa) + $(install_dir) $(d_hppa64)/DEBIAN + $(install_script) debian/binutils-hppa64.postinst $(d_hppa64)/DEBIAN/postinst + $(install_script) debian/binutils-hppa64.postrm $(d_hppa64)/DEBIAN/postrm + $(install_file) debian/binutils-hppa64.shlibs $(d_hppa64)/DEBIAN/shlibs +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)/ + +ifeq ($(with_static),yes) + $(install_dir) $(d_static)/$(PF)/share/doc/$(p_static)/ + $(install_file) debian/changelog $(d_static)/$(PF)/share/doc/$(p_static)/changelog.Debian + $(install_file) debian/copyright $(d_static)/$(PF)/share/doc/$(p_static)/ +endif + + $(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) +endif +ifeq ($(with_gold),yes) + $(install_dir) $(d_gold)/$(PF)/share/doc/ + ln -sf $(p_bin) $(d_gold)/$(PF)/share/doc/$(p_gold) +endif +ifneq (,$(filter $(DEB_HOST_ARCH),powerpc ppc64)) + $(install_dir) $(d_spu)/$(PF)/share/doc/ + ln -sf $(p_bin) $(d_spu)/$(PF)/share/doc/$(p_spu) +endif +ifeq ($(DEB_HOST_ARCH),hppa) + $(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) + $(install_file) $(pwd)/test-summary $(d_bin)/$(PF)/share/doc/$(p_bin)/ +endif +endif + $(install_file) binutils/NEWS debian/README.cross \ + $(d_bin)/$(PF)/share/doc/$(p_bin)/ + + $(install_file) binutils/ChangeLog $(d_bin)/$(PF)/share/doc/$(p_bin)/changelog + + for pkg in bfd gas gprof ld; do \ + $(install_dir) $(d_bin)/$(PF)/share/doc/$(p_bin)/$$pkg; \ + done + $(install_file) bfd/ChangeLog bfd/PORTING bfd/TODO \ + $(d_bin)/$(PF)/share/doc/$(p_bin)/bfd/ + $(install_file) gas/ChangeLog gas/NEWS $(d_bin)/$(PF)/share/doc/$(p_bin)/gas/ + $(install_file) gprof/ChangeLog gprof/TODO gprof/TEST \ + $(d_bin)/$(PF)/share/doc/$(p_bin)/gprof/ + $(install_file) ld/ChangeLog ld/TODO ld/NEWS \ + $(d_bin)/$(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_bin)/$(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_bin)/$(PF)/share/doc/$(p_bin)/gprof/. + + : # Compress stuff that needs it + gzip -9 $(d_bin)/$(PF)/share/man/man1/*.1 + find $(d_bin)/$(PF)/share/doc/$(p_bin)/ -type f ! -name copyright -a ! -name bbconv.pl | xargs gzip -9 +ifeq ($(with_static),yes) + find $(d_static)/$(PF)/share/doc/$(p_static)/ -type f ! -name copyright | xargs gzip -9 +endif + + : # Finish it all up + find $(d_bin) -type f | xargs file | grep ELF | cut -d: -f 1 | xargs dpkg-shlibdeps + dpkg-gencontrol -isp -P$(d_bin) -p$(p_bin) $(CONFLICTS) + cd $(d_bin) && find -type f ! -regex './DEBIAN/.*' -printf '%P\n' | xargs md5sum > DEBIAN/md5sums + + rm -f debian/substvars + dpkg-gencontrol -isp -P$(d_dev) -p$(p_dev) + cd $(d_dev) && find -type f ! -regex './DEBIAN/.*' -printf '%P\n' | 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 -isp -P$(d_mul) -p$(p_mul) + cd $(d_mul) && find -type f ! -regex './DEBIAN/.*' -printf '%P\n' | xargs md5sum > DEBIAN/md5sums +endif + +ifeq ($(with_static),yes) + dpkg-gencontrol -isp -P$(d_static) -p$(p_static) + dpkg-gencontrol -isp -P$(d_udeb) -p$(p_udeb) -fdebian/files~ + dpkg-distaddfile $(STATIC_UDEB) debian-installer optional +endif + +ifeq ($(with_gold),yes) + rm -f debian/substvars +# no binary +# find $(d_gold) -type f | xargs file | grep ELF | cut -d: -f 1 | xargs dpkg-shlibdeps + dpkg-gencontrol -isp -P$(d_gold) -p$(p_gold) + cd $(d_gold) && find -type f ! -regex './DEBIAN/.*' -printf '%P\n' | xargs md5sum > DEBIAN/md5sums +endif +ifneq (,$(filter $(DEB_HOST_ARCH),powerpc ppc64)) + rm -f debian/substvars + find $(d_spu) -type f | xargs file | grep ELF | cut -d: -f 1 | xargs dpkg-shlibdeps + dpkg-gencontrol -isp -P$(d_spu) -p$(p_spu) + cd $(d_spu) && find -type f ! -regex './DEBIAN/.*' -printf '%P\n' | xargs md5sum > DEBIAN/md5sums +endif +ifeq ($(DEB_HOST_ARCH),hppa) + rm -f debian/substvars + find $(d_hppa64) -type f | xargs file | grep ELF | cut -d: -f 1 | xargs dpkg-shlibdeps + dpkg-gencontrol -isp -P$(d_hppa64) -p$(p_hppa64) + cd $(d_hppa64) && find -type f ! -regex './DEBIAN/.*' -printf '%P\n' | xargs md5sum > DEBIAN/md5sums +endif + + chown -R root:root $(d_bin) $(d_dev) + chmod -R go=rX $(d_bin) $(d_dev) + dpkg --build $(d_bin) .. + dpkg --build $(d_dev) .. +ifeq ($(with_multiarch),yes) + chown -R root:root $(d_mul) + chmod -R go=rX $(d_mul) + dpkg --build $(d_mul) .. +endif +ifeq ($(with_gold),yes) + chown -R root:root $(d_gold) + chmod -R go=rX $(d_gold) + dpkg --build $(d_gold) .. +endif +ifeq ($(with_static),yes) + chown -R root:root $(d_static) $(d_udeb) + chmod -R go=rX $(d_static) $(d_udeb) + dpkg --build $(d_static) .. + dpkg --build $(d_udeb) ../$(STATIC_UDEB) +endif +ifneq (,$(filter $(DEB_HOST_ARCH),powerpc ppc64)) + chown -R root:root $(d_spu) + chmod -R go=rX $(d_spu) + dpkg --build $(d_spu) .. +endif +ifeq ($(DEB_HOST_ARCH),hppa) + chown -R root:root $(d_hppa64) + chmod -R go=rX $(d_hppa64) + dpkg --build $(d_hppa64) .. +endif + +endif # Process the following only if $(TARGET) is set +endif # ifndef BACKPORT +################################################################################ + +################# +# cross targets # +################# + +# Process the following only if $(TARGET) is set +ifneq (,$(TARGET)) + +p_cross = $(subst _,-,binutils-$(TARGET)) +d_cross = debian/$(p_cross) + +#----------------------------------------------------------------- +# sysroot options +ifdef WITH_SYSROOT + with_sysroot = $(WITH_SYSROOT) +endif +ifdef WITH_BUILD_SYSROOT + with_build_sysroot = $(WITH_BUILD_SYSROOT) +endif + +ifneq ($(with_sysroot),) + CONFARGS += --with-sysroot=$(with_sysroot) +endif +ifneq ($(with_build_sysroot),) + CONFARGS += --with-build-sysroot=$(with_build_sysroot) +endif +ifeq ($(with_gold),yes) + CONFARGS += --enable-ld=default --enable-gold +endif + +configure-cross-stamp: patch-stamp control-stamp + $(checkdir) + test "" != "$(TARGET)" + rm -rf configure-cross-stamp builddir-$(TARGET) + mkdir builddir-$(TARGET) + cd builddir-$(TARGET) \ + && env CC="$(CC)" CXX="$(CXX)" ../configure \ + $(CONFARGS) \ + --target=$(TARGET) + touch $@ + +build-cross-stamp: configure-cross-stamp + $(checkdir) + test "" != "$(TARGET)" + $(MAKE) -C builddir-$(TARGET) $(NJOBS) CFLAGS="$(CFLAGS)" + touch $@ + +install-cross-stamp: build-cross-stamp + $(checkdir) + test "" != "$(TARGET)" + rm -rf $(d_cross) + $(MAKE) -C builddir-$(TARGET) prefix=$(pwd)/$(d_cross)/$(PF) \ + mandir=$(pwd)/$(d_cross)/$(PF)/share/man install + rm -rf $(d_cross)/$(PF)/lib* $(d_cross)/$(PF)/info $(d_cross)/$(PF)/share/locale + + $(call strip_package, $(p_cross), $(d_cross),$(DEB_HOST_GNU_TYPE)/$(TARGET)) + chmod ugo-x $(d_cross)/$(PF)/$(DEB_HOST_GNU_TYPE)/$(TARGET)/lib/*.so + + : # Get rid of .la files since libtool obviously has no idea about transient paths + rm -f $(d_cross)/$(PF)/$(DEB_HOST_GNU_TYPE)/$(TARGET)/lib/*.la + + gzip -9 $(d_cross)/$(PF)/share/man/man1/* + touch $@ + +configure-host-cross-stamp: configure-cross-stamp + $(checkdir) + test "" != "$(TARGET)" + $(MAKE) configure-host -C builddir-$(TARGET) $(NJOBS) CFLAGS="$(CFLAGS)" + touch $@ + +build-static-cross-stamp: configure-host-cross-stamp + $(checkdir) + test "" != "$(TARGET)" + $(MAKE) -C builddir-$(TARGET) $(NJOBS) CFLAGS="$(CFLAGS)" LDFLAGS="-all-static" + touch $@ + +install-static-cross-stamp: build-static-cross-stamp install-cross-stamp + +binary-cross: + @echo "Please use dpkg-buildpackage instead of calling binary-cross directly; see README.cross" + @false + +endif # ifneq ($(TARGET),) + +################################################################################ + +define checkdir + test -f bfd/elf32.c -a -f debian/rules +endef + +ifeq ($(with_strip),yes) +define strip_package + : # Strip shared libraries + if which pkg_create_dbgsym >/dev/null 2>&1; then \ + pkg_create_dbgsym $1 $2; \ + fi + $(STRIP) --strip-unneeded $2/$(PF)/$3/lib/libbfd-*so + $(STRIP) --strip-unneeded $2/$(PF)/$3/lib/libopcodes-*so + $(STRIP) $$(file $2/$(PF)/bin/* |awk -F: '$$0 !~ /script/ {print $$1}') +endef +else +define strip_package +endef +endif + +remove-gfdl-files: +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) +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 --- binutils-2.23.1.orig/debian/binutils-gold.preinst +++ binutils-2.23.1/debian/binutils-gold.preinst @@ -0,0 +1,25 @@ +#! /bin/sh + +set -e + +if [ install = "$1" -o upgrade = "$1" ]; then + if [ -n "$2" ] && dpkg --compare-versions $2 lt 2.20-3; then + case "$(dpkg-divert --list /usr/bin/ld)" in + *ld.single*) + rm -f /usr/bin/ld + dpkg-divert \ + --package binutils-gold \ + --remove --rename \ + --divert /usr/bin/ld.single /usr/bin/ld + esac + fi + + dpkg-divert \ + --package binutils-gold \ + --add --rename \ + --divert /usr/bin/ld.bfd-link /usr/bin/ld + dpkg-divert \ + --package binutils-gold \ + --add --rename \ + --divert /usr/share/man/man1/ld.bfd-link.1.gz /usr/share/man/man1/ld.1.gz +fi --- binutils-2.23.1.orig/debian/binutils-multiarch.overrides +++ binutils-2.23.1/debian/binutils-multiarch.overrides @@ -0,0 +1,10 @@ +# 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 + +# 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 + --- binutils-2.23.1.orig/debian/binutils-static-udeb.overrides +++ binutils-2.23.1/debian/binutils-static-udeb.overrides @@ -0,0 +1,2 @@ +# yes, it's embedded +binutils-static-udeb udeb: embedded-zlib --- binutils-2.23.1.orig/debian/binutils-static.overrides +++ binutils-2.23.1/debian/binutils-static.overrides @@ -0,0 +1,5 @@ +# yes, it's embedded +binutils-static binary: embedded-zlib + +# not needed +binutils-static binary: binary-without-manpage --- binutils-2.23.1.orig/debian/gfdl.texi +++ binutils-2.23.1/debian/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 --- binutils-2.23.1.orig/debian/binutils-gold.postrm +++ binutils-2.23.1/debian/binutils-gold.postrm @@ -0,0 +1,15 @@ +#! /bin/sh + +set -e + +if [ "$1" = "remove" -o "$1" = "abort-install" ]; then + dpkg-divert \ + --package binutils-gold \ + --remove --rename \ + --divert /usr/bin/ld.bfd-link /usr/bin/ld + dpkg-divert \ + --package binutils-gold \ + --remove --rename \ + --divert /usr/share/man/man1/ld.bfd-link.1.gz /usr/share/man/man1/ld.1.gz + +fi --- binutils-2.23.1.orig/debian/changelog +++ binutils-2.23.1/debian/changelog @@ -0,0 +1,4739 @@ +binutils (2.23.1-0ubuntu8) raring; 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:45:29 +0100 + +binutils (2.23.1-0ubuntu6) raring; 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:20:15 +0100 + +binutils (2.23.1-0ubuntu5) raring; urgency=low + + * Drop build dependency on g++. + + -- Matthias Klose Wed, 12 Dec 2012 08:55:12 +0100 + +binutils (2.23.1-0ubuntu4) raring; 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. + * Revert the gettext:any build dependency hack. + + -- Matthias Klose Wed, 05 Dec 2012 08:45:10 +0100 + +binutils (2.23.1-0ubuntu3) raring; urgency=low + + * debian/control.in: Drop Vcs-*, that branch hasn't been updated since + natty. + * Add simple rebuild autopkgtest. (LP: #1081500) + * Add a simple test to compile, link, and run a program against libc6 and + build/use a shared library with the system-installed binutils, to ensure + basic binutils functionality. + + -- Martin Pitt Thu, 22 Nov 2012 07:49:25 +0100 + +binutils (2.23.1-0ubuntu2) raring; urgency=low + + * Update from the 2.23 branch (20121121). + - arm, aarch64 and x32 updates. + - Fix build error with -Werror. LP: #1079676. + + -- Matthias Klose Wed, 21 Nov 2012 14:14:55 +0100 + +binutils (2.23.1-0ubuntu1) raring; urgency=low + + * binutils 2.23.1 release. + + -- Matthias Klose Thu, 15 Nov 2012 14:07:23 +0100 + +binutils (2.23-2ubuntu1) raring; urgency=low + + * Merge with Debian; remaining changes: + - Build from upstream tarball. + + -- Matthias Klose Tue, 06 Nov 2012 19:40:21 +0100 + +binutils (2.23-2) 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.20120924-0ubuntu2) quantal; urgency=low + + * Fix inclusion of bfd.h, removing the safety inclusion guard. + * Fix multilib conflicts of generated values by __WORDSIZE-based expressions. + + -- Matthias Klose Tue, 25 Sep 2012 18:40:36 +0200 + +binutils (2.22.90.20120924-0ubuntu1) quantal; urgency=low + + * Update from the 2.23 branch: + - Fix PR ld/14591 (wrong symbol type with common symbol and weak function). + * d/p/211-hjl-binutils-weakdef.patch, d/p/213-hjl-binutils-sec64k.patch: + Remove, not found anymore in the hjl releases. + * Remove all other (not applied) patches from the hjl releases. + + -- Matthias Klose Mon, 24 Sep 2012 22:16:17 +0200 + +binutils (2.22.90.20120919-0ubuntu1) quantal; urgency=low + + * Update from the 2.23 branch: + - armv8 fixes. + + -- Matthias Klose Wed, 19 Sep 2012 16:49:35 +0200 + +binutils (2.22.90.20120913-2ubuntu1) quantal; urgency=low + + * Merge with Debian. + + -- Matthias Klose Sat, 15 Sep 2012 11:29:42 +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-1ubuntu1) quantal; urgency=low + + * Merge with Debian. + + -- Matthias Klose Thu, 13 Sep 2012 21:06:18 +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-1ubuntu1) quantal; urgency=low + + * Build-depend on gettext:any to fix the cross build. LP: #1043442. + Work around until libgettext is split out of gettext (see #683751). + + -- Matthias Klose Sat, 08 Sep 2012 13:43:51 +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-2ubuntu1) quantal; urgency=low + + * Merge with Debian. + + -- Matthias Klose Wed, 22 Aug 2012 13:54:26 +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-1ubuntu1) quantal; urgency=low + + * New upstream snapshot (taken from the 2.23 branch). + * Configure for aarch64 and x32 targets. + + -- Matthias Klose Thu, 16 Aug 2012 16:35:48 +0200 + +binutils (2.22.90.20120731-0ubuntu1) quantal; urgency=low + + * New upstream snapshot (taken from the 2.23 branch). + + -- Matthias Klose Wed, 01 Aug 2012 16:31:30 +0200 + +binutils (2.22.52.20120713-0ubuntu1) quantal; urgency=low + + * New upstream snapshot. + + -- Matthias Klose Sat, 14 Jul 2012 00:56:30 +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-6ubuntu1) precise; urgency=low + + * Merge with Debian. + + -- Matthias Klose Thu, 08 Mar 2012 19:21:22 +0100 + +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-5ubuntu1) precise; urgency=low + + * Merge with Debian. + + -- Matthias Klose Wed, 25 Jan 2012 11:47:53 +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-4ubuntu1) precise; urgency=low + + * Merge with Debian. + + -- Matthias Klose Sat, 07 Jan 2012 10:27:24 +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-3ubuntu1) precise; urgency=low + + * Merge with Debian. + + -- Matthias Klose Tue, 03 Jan 2012 07:28:18 +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-2ubuntu1) precise; urgency=low + + * Merge with Debian. + + -- Matthias Klose Sun, 11 Dec 2011 17:37:30 +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-1ubuntu1) precise; urgency=low + + * Merge with Debian. + + -- Matthias Klose Mon, 21 Nov 2011 17:47:56 +0100 + +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-1ubuntu1) precise; urgency=low + + * Merge with Debian. + + -- Matthias Klose Tue, 25 Oct 2011 15:46:41 +0200 + +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-3ubuntu1) precise; urgency=low + + * Merge with Debian. + + -- Matthias Klose Sun, 23 Oct 2011 13:41:58 +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-2ubuntu1) precise; urgency=low + + * Merge with Debian. + + -- Matthias Klose Thu, 20 Oct 2011 13:12:50 +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-2ubuntu1) oneiric; urgency=low + + * Merge with Debian. + + -- Matthias Klose Tue, 11 Oct 2011 12:36:33 +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.20110810-0ubuntu4) oneiric-proposed; 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 09:22:34 +0200 + +binutils (2.21.53.20110810-0ubuntu3) oneiric; urgency=low + + * Fix PR ld/13201, link error with --as-needed and -flto. LP: #778292. + LP: #690194. + + -- Matthias Klose Tue, 20 Sep 2011 11:34:33 +0200 + +binutils (2.21.53.20110810-0ubuntu2) oneiric; urgency=low + + * Build with proposed patch for PR ld/12965. LP: #641126. + * Don't ship .la files in the cross binutils packages. LP: #760420. + * For native builds, add the multiarch directories to the default + search path. LP: #780455. + + -- Matthias Klose Wed, 07 Sep 2011 15:36:22 +0200 + +binutils (2.21.53.20110810-0ubuntu1) oneiric; urgency=low + + * Snapshot, taken from the trunk 20110810. + + -- Matthias Klose Thu, 11 Aug 2011 22:51:48 +0200 + +binutils (2.21.53.20110805-1ubuntu1) oneiric; urgency=low + + * Merge with Debian. + + -- Matthias Klose Fri, 05 Aug 2011 12:34:26 +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-1ubuntu1) oneiric; urgency=low + + * Merge with Debian. + + -- Matthias Klose Thu, 07 Jul 2011 07:28: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-1ubuntu1) oneiric; urgency=low + + * Merge with Debian. + + -- Matthias Klose Mon, 04 Jul 2011 10:31:01 +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-1ubuntu1) oneiric; urgency=low + + * Merge with Debian. + + -- Matthias Klose Tue, 07 Jun 2011 11:56:41 +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-6ubuntu1) oneiric; urgency=low + + * Merge with Debian. + + -- Matthias Klose Thu, 19 May 2011 16:02:39 +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.20110421-0ubuntu6) oneiric; urgency=low + + * Fix PR ld/12730, taken from the trunk. Closes: #625616. + + -- Matthias Klose Sun, 08 May 2011 02:17:37 +0200 + +binutils (2.21.51.20110421-0ubuntu5) oneiric; urgency=low + + * Cortex A8 workarounds for PLT tail calls (Richard Sandiford). + + -- Matthias Klose Fri, 06 May 2011 11:55:11 +0200 + +binutils (2.21.51.20110421-0ubuntu4) oneiric; urgency=low + + * Fix segfault in ar, delete_members. + + -- Matthias Klose Sun, 01 May 2011 17:30:42 +0200 + +binutils (2.21.51.20110421-0ubuntu3) oneiric; urgency=low + + * 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 20:26:20 +0200 + +binutils (2.21.51.20110421-0ubuntu1) oneiric; urgency=low + + * Snapshot, taken from the trunk 20110421. + + -- Matthias Klose Thu, 21 Apr 2011 14:24:45 +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.0.20110327-2ubuntu2) natty; urgency=low + + * Fix architecture field for binutils-gold (powerpcspe). + * Add support for arm-*-gnueabihf targets. Closes: #621029. + * Fix PR ld/12654: Pproperly handle R_386_TLS_LDO_32 for PIE. LP: #663294. + + -- Matthias Klose Sat, 09 Apr 2011 13:35:11 +0200 + +binutils (2.21.0.20110327-2ubuntu1) natty; urgency=low + + [ Marcin Juszkiewicz ] + * Build -dbgsym package for cross builds. LP: #711523. + + -- Matthias Klose Thu, 31 Mar 2011 16:24:10 +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-1ubuntu2) natty; urgency=low + + * Add multiarch directories to linker search path. Closes: #369064. + LP: #738098. + + -- Matthias Klose Sat, 26 Mar 2011 11:27:54 +0100 + +binutils (2.21.0.20110322-1ubuntu1) natty; urgency=low + + * Merge with Debian. + + -- Matthias Klose Tue, 22 Mar 2011 23:36:26 +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-2ubuntu1) natty; urgency=low + + * Merge with Debian. + + -- Matthias Klose Fri, 11 Mar 2011 00:14:22 +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-1ubuntu1) natty; urgency=low + + * Merge with Debian. + + -- Matthias Klose Fri, 04 Mar 2011 01:37:26 +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-1ubuntu3) natty; urgency=low + + * Read multiarch targets from the first column of /usr/share/dpkg/archtable; + it's not the ideal list, but it's better than a hardcoded list and + enabling all targets was breaking too many tools; LP: #726428. + + -- Loïc Minier Wed, 02 Mar 2011 18:57:13 +0100 + +binutils (2.21.0.20110216-1ubuntu2) natty; urgency=low + + * Remove leftover bfd/elflink.c.rej. + * Pass --enable-targets=all to configure in the multiarch pass; + Debian #610745. + + -- Loïc Minier Thu, 24 Feb 2011 11:46:06 +0100 + +binutils (2.21.0.20110216-1ubuntu1) natty; urgency=low + + * Upload to natty. + + -- Matthias Klose Wed, 16 Feb 2011 19:43:02 +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-5ubuntu1) natty; urgency=low + + * Upload to natty. + + -- Matthias Klose Tue, 25 Jan 2011 05:46:53 +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-4ubuntu1) natty; urgency=low + + * Revert the soname change. + + -- Matthias Klose Wed, 12 Jan 2011 22:09:24 +0100 + +binutils (2.21-4ubuntu0) natty; urgency=low + + * Intermediate upload to natty to change the soversion on amd64. + + -- Matthias Klose Wed, 12 Jan 2011 21:51:03 +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-3ubuntu1) natty; urgency=low + + * Upload to natty. + + -- Matthias Klose Fri, 31 Dec 2010 16:31:48 +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-1ubuntu4) natty; urgency=low + + * Don't install ld.bfd in binutils-multiarch. LP: #688497. + * Fix assembler bug blocking Thumb-2 kernel builds (CS issue #8775). + + -- Matthias Klose Fri, 10 Dec 2010 15:35:54 +0100 + +binutils (2.21-1ubuntu2) natty; urgency=low + + * Fix build dependencies. + + -- Matthias Klose Fri, 10 Dec 2010 00:57:01 +0100 + +binutils (2.21-1ubuntu1) natty; urgency=low + + * Upload to natty. + + -- Matthias Klose Fri, 10 Dec 2010 00:17:07 +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-0ubuntu1) natty; urgency=low + + * Update from the binutils 2.21 release branch. + + -- Matthias Klose Sun, 21 Nov 2010 13:53:59 +0100 + +binutils (2.20.90.20101105-0ubuntu1) natty; urgency=low + + * binutils 2.21 prerelease 1. + + -- Matthias Klose Wed, 10 Nov 2010 01:47:38 +0200 + +binutils (2.20.51.20101028-0ubuntu1) natty; urgency=low + + * Snapshot, taken from the trunk 20100928. + + -- Matthias Klose Thu, 28 Oct 2010 17:55:49 +0200 + +binutils (2.20.51.20101014-0ubuntu1) natty; urgency=low + + * Snapshot, taken from the trunk 20100914. + * ld: Accept --sysroot again. LP: #660257. + + -- Matthias Klose Thu, 14 Oct 2010 11:10:06 +0200 + +binutils (2.20.51.20101009-0ubuntu1) natty; urgency=low + + * Snapshot, taken from the trunk 20100909. + * For cross builds, build without sysroot support. Closes LP: #598389. + + -- Matthias Klose Sat, 09 Oct 2010 15:08:04 +0200 + +binutils (2.20.51.20100908-0ubuntu2) maverick; urgency=low + + * debian/patches/216-tilde-in-ar-filenames: Allow ar scripts to contain ~ + in the filename, fixes u-boot-linaro rc build failures that ended up + using pathnames with ~ in them. LP: #641488 + + -- Zygmunt Krynicki Fri, 17 Sep 2010 19:20:28 +0200 + +binutils (2.20.51.20100908-0ubuntu1) maverick; urgency=low + + * Snapshot, taken from the trunk 20100908. + * Build binutils-hppa64 in cross builds (Al Viro). Closes: #595319. + * Don't build the binutils-hppa64 package for Ubuntu. + * Fix some lintian warnings. + + -- Matthias Klose Wed, 08 Sep 2010 15:26:18 +0200 + +binutils (2.20.51.20100813-1ubuntu3) maverick; urgency=low + + * Add missing patch file. + + -- Matthias Klose Fri, 03 Sep 2010 10:32:25 +0200 + +binutils (2.20.51.20100813-1ubuntu2) maverick; urgency=low + + * 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. + + -- Matthias Klose Fri, 27 Aug 2010 16:52:19 +0200 + +binutils (2.20.51.20100813-1ubuntu1) maverick; urgency=low + + * Merge with Debian. + + -- Matthias Klose Fri, 13 Aug 2010 13:26:32 +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-1ubuntu2) maverick; urgency=low + + * Don't use configury for cross builds for native builds. LP: #604134. + + -- Matthias Klose Sun, 11 Jul 2010 10:15:01 +0200 + +binutils (2.20.51.20100710-1ubuntu1) maverick; urgency=low + + * Update HJ patches from binutils 2.20.51.0.10. + + -- Matthias Klose Sat, 10 Jul 2010 11:42:27 +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-0ubuntu1) maverick; urgency=low + + * Snapshot, taken from the trunk 20100617. + + -- Matthias Klose Thu, 17 Jun 2010 15:30:31 +0200 + +binutils (2.20.51.20100608-0ubuntu1) maverick; urgency=low + + * Snapshot, taken from the trunk 20100608. + * Merge 'binary-cross' target into 'binary' one (Marcin Juszkiewicz). + LP: #587851. + * debian/copyright: Update to GFDL 1.3. + + -- Matthias Klose Tue, 08 Jun 2010 13:26:49 +0200 + +binutils (2.20.51.20100527-1ubuntu1) maverick; urgency=low + + * Merge with Debian; remaining changes: + - Build binutils-static. + + -- Matthias Klose Thu, 27 May 2010 12:32:39 +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. + LP: #586227. + + -- Matthias Klose Thu, 27 May 2010 10:40:48 +0200 + +binutils (2.20.51.20100518-1ubuntu1) maverick; urgency=low + + * Snapshot, taken from the trunk 20100518. + * Merge with Debian; remaining changes: + - Build binutils-static. + * Update hjl patches from 2.20.51.0.8. + + -- Matthias Klose Tue, 18 May 2010 14:04:04 +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-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.20100407-0ubuntu1) lucid; urgency=low + + * Snapshot, taken from the trunk 20100407. + * debian/*.shlibs: Update to the version from the trunk. + * Configure native build --with-sysroot=/. Closes: #556126. + + -- Matthias Klose Thu, 08 Apr 2010 01:31:49 +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-9ubuntu1) maverick; urgency=low + + * Merge with Debian; remaining changes: + - Build binutils-static. + + -- Matthias Klose Thu, 06 May 2010 16:56:40 +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-8ubuntu2) maverick; urgency=low + + * Build gold for powerpc as well. + + -- Matthias Klose Sat, 01 May 2010 14:22:35 +0200 + +binutils (2.20.1-8ubuntu1) maverick; urgency=low + + * Merge with Debian; remaining changes: + - Build binutils-static. + + -- Matthias Klose Thu, 29 Apr 2010 21:40:16 +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-3ubuntu5) lucid; urgency=low + + * Rebuild statically linked ld.static binary against recent libc. + + -- Matthias Klose Sun, 18 Apr 2010 23:50:53 +0200 + +binutils (2.20.1-3ubuntu4) lucid; urgency=low + + * Apply patch for PR gas/11456: Use memcpy to copy overlap memory. + + -- Matthias Klose Wed, 31 Mar 2010 19:10:39 +0200 + +binutils (2.20.1-3ubuntu3) lucid; urgency=low + + * Fix versioned dependency in binutils shlibs file. + + -- Matthias Klose Wed, 31 Mar 2010 04:02:51 +0200 + +binutils (2.20.1-3ubuntu2) lucid; urgency=low + + * Mangle the soname of the binutils libraries to be different than + the default name. Closes: #557620. LP: #548451. + Packaged cross builds should do the same. + * Apply fix for PR ld/11426, taken from the trunk. + + -- Matthias Klose Tue, 30 Mar 2010 23:46:50 +0200 + +binutils (2.20.1-3ubuntu1) lucid; urgency=low + + * Merge with Debian; remaining changes: + - Build binutils-static. + + -- Matthias Klose Sun, 21 Mar 2010 13:42:52 +0100 + +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-2ubuntu1) lucid; urgency=low + + * Merge with Debian; remaining changes: + - Build binutils-static. + + -- Matthias Klose Mon, 08 Mar 2010 18:25:25 +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-1ubuntu1) lucid; urgency=low + + * Merge with Debian; remaining changes: + - Build binutils-static. + + -- Matthias Klose Mon, 08 Mar 2010 13:11:53 +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-6ubuntu3) lucid; urgency=low + + * Apply updates from the 2.20 branch up to 20100216 + - Apply patch to fix R_ARM_THM_JUMP24 relocation truncated bug. + * Don't set has_ifunc_symbols if the symbol comes from a shared library + (backport from the trunk). + + -- Matthias Klose Fri, 19 Feb 2010 17:19:09 +0100 + +binutils (2.20-6ubuntu2) lucid; urgency=low + + * Apply updates from the 2.20 branch up to 20100216 + - Fix broken global Thumb to ARM branches. + + -- Matthias Klose Tue, 16 Feb 2010 18:32:35 +0100 + +binutils (2.20-6ubuntu1) lucid; urgency=low + + * Merge with Debian; remaining changes: + - Build binutils-static. + + -- Matthias Klose Fri, 05 Feb 2010 20:30:59 +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-5ubuntu1) lucid; urgency=low + + * Merge with Debian; remaining changes: + - Build binutils-static. + + -- Matthias Klose Sat, 09 Jan 2010 12:13:43 +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-4ubuntu4) lucid; urgency=low + + * ARM - Fix b / bl ranges for Thumb2 (Ramana Radhakrishnan). + + -- Matthias Klose Mon, 21 Dec 2009 13:38:09 +0100 + +binutils (2.20-4ubuntu3) lucid; urgency=low + + * [arm] Prevent disassembler from aborting on an invalid Thumb2 instruction, + taken from the trunk. + + -- Matthias Klose Thu, 19 Nov 2009 18:48:28 +0100 + +binutils (2.20-4ubuntu1) lucid; urgency=low + + * On armel build with -marm; the testsuite is not ready to be run with + -mthumb. + + -- Matthias Klose Thu, 12 Nov 2009 01:10:33 +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-3ubuntu1) lucid; urgency=low + + * Merge with Debian; remaining changes: + - Build binutils-static. + + -- Matthias Klose Tue, 10 Nov 2009 11:14:38 +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-1ubuntu3) lucid; urgency=low + + * Work around build failure on powerpc, disable the gold build; re-enable + it later with a proper fix. + * Ignore regressions on sparc; the proper fix is to fix the testcases + for v9. + + -- Matthias Klose Sat, 31 Oct 2009 12:21:59 +0100 + +binutils (2.20-1ubuntu2) lucid; urgency=low + + * Don't build just on armel and i386. + + -- Matthias Klose Fri, 30 Oct 2009 14:51:13 +0100 + +binutils (2.20-1ubuntu1) lucid; urgency=low + + * 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; the proper fix is to build the + testcases using -fno-section-anchors. + + -- Matthias Klose Fri, 30 Oct 2009 01:27:43 +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.20-0ubuntu2) karmic-proposed; urgency=low + + * Fix PR gas/10856, wrong code with assembler files in intel syntax. + Patch taken from the 2.20 branch. LP: #461303. + + -- Matthias Klose Wed, 28 Oct 2009 09:46:50 +0100 + +binutils (2.20-0ubuntu1) karmic; urgency=low + + * binutils 2.20 final release. + - Fix PR binutils/10785, memory corruptions. + - gold updates. LP: #453278. + * debian/*.shlibs: Update to the release version. LP: #452526. + * Fix build failure on arm, building from the release tarball. + + -- Matthias Klose Sat, 17 Oct 2009 11:14:00 +0200 + +binutils (2.19.91.20091014-0ubuntu1) karmic; urgency=low + + * Snapshot, taken from the 2.20 release branch 20091014. + - PR ld/10749, ia64 linker failure. + - PR gas/2117, ia64 assembler fix. + * debian/*.shlibs: Update to the version from the branch. + * Fix build failures for cross build. + + -- Matthias Klose Wed, 14 Oct 2009 14:55:40 +0200 + +binutils (2.19.91.20091006-0ubuntu1) karmic; urgency=low + + * Snapshot, taken from the 2.20 release branch 20091006. + - cfi_sections changes applied, remove 129_cfi_sections.dpatch. + * 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. + + -- Matthias Klose Tue, 06 Oct 2009 18:14:37 +0200 + +binutils (2.19.91.20091005-0ubuntu2) karmic; urgency=low + + * Really re-enable the binutils-gold build on powerpc. + + -- Matthias Klose Tue, 06 Oct 2009 13:53:22 +0200 + +binutils (2.19.91.20091005-0ubuntu1) karmic; urgency=low + + * Snapshot, taken from the 2.20 release branch 20091005. + - no changes, bump the soname only. + * debian/*.shlibs: Update to the version from the branch. + * Re-enable the binutils-gold build on powerpc. + * Add 129_cfi_sections.dpatch, support for .cfi_sections, taken + from the trunk. LP: #440172. + * Add 150_gold_copyrelocs.dpatch, add -z copyrelocs option for gold. + + -- Matthias Klose Tue, 06 Oct 2009 10:31:58 +0200 + +binutils (2.19.91.20091003-0ubuntu1) karmic; urgency=low + + * Snapshot, taken from the 2.20 release branch 20091003. + - powerpc fixes. + * debian/*.shlibs: Update to the version from the branch. + * Reenable binutils-gold build on armel (build failures on just + one buildd). + * Disable binutils-gold build on powerpc, fails to build with the + version in the archive. + * binutils-source: Depend on texinfo, zlib1g-dev. + + -- Matthias Klose Tue, 06 Oct 2009 10:16:47 +0200 + +binutils (2.19.91.20091001-0ubuntu2) karmic; urgency=low + + * Don't build binutils-gold for armel, currently ftbfs. + + -- Matthias Klose Thu, 01 Oct 2009 23:54:41 +0200 + +binutils (2.19.91.20091001-0ubuntu1) karmic; urgency=low + + * Snapshot, taken from the 2.20 release branch 20091001. + - 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 Thu, 01 Oct 2009 16:53:04 +0200 + +binutils (2.19.91.20090923-0ubuntu1) karmic; urgency=low + + * 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:44:40 +0200 + +binutils (2.19.91.20090922-0ubuntu1) karmic; 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 22:01:19 +0200 + +binutils (2.19.91.20090910-0ubuntu1) karmic; 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. + * Update binutils-sec64k patch (H.J. Lu). + + -- Matthias Klose Thu, 10 Sep 2009 17:21:56 +0200 + +binutils (2.19.90.20090909-0ubuntu1) karmic; urgency=low + + * Snapshot, taken from the 2.20 release branch 20090909. + * debian/*.shlibs: Update to the version from the branch. + + -- Matthias Klose Wed, 09 Sep 2009 10:01:29 +0200 + +binutils (2.19.51.20090827-1ubuntu1) karmic; urgency=low + + * Merge with Debian unstable; remaining changes: + - Build binutils-static and binutils-static-udeb packages. + - Apply patches derived from the binutils HJL release. + + -- Matthias Klose Fri, 28 Aug 2009 13:49:57 +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. + * Update build-dependency on autoconf. + * Fix some lintian warnings. + + -- Matthias Klose Thu, 27 Aug 2009 17:09:28 +0200 + +binutils (2.19.51.20090805-1ubuntu1) karmic; urgency=low + + * Snapshot, taken from the trunk 20090805. + * debian/*.shlibs: Update to the version from the trunk. + - 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:29:44 +0200 + +binutils (2.19.51.20090723-1ubuntu1) karmic; urgency=low + + * Snapshot, taken from the trunk 20090723. + * debian/*.shlibs: Update to the version from the trunk. + * Apply build-id patch to avoid memory corruption (taken from Fedora). + + -- Matthias Klose Thu, 23 Jul 2009 13:47:19 +0200 + +binutils (2.19.51.20090714-0ubuntu1) karmic; urgency=low + + * Snapshot, taken from the trunk 20090714. + - Fix PR gas/10387 (branch instruction with no operand causes gas + to segfault on armel). LP: #396049. + - 128_arm_eabi_align64.dpatch: Remove, integrated upstream. + * debian/*.shlibs: Update to the version from the trunk. + + -- Matthias Klose Tue, 14 Jul 2009 12:48:09 -0400 + +binutils (2.19.51.20090713-0ubuntu1) karmic; urgency=low + + * Snapshot, taken from the trunk 20090713. + * debian/*.shlibs: Update to the version from the trunk. + * 128_arm_eabi_align64.dpatch: Adjust expected output to changed objdump + output. LP: #398732. + + -- Matthias Klose Mon, 13 Jul 2009 13:21:56 -0400 + +binutils (2.19.51.20090704-1ubuntu1) karmic; urgency=low + + * Snapshot, taken from the trunk 20090704. + * debian/*.shlibs: Update to the version from the trunk. + + -- Matthias Klose Sat, 04 Jul 2009 11:46:03 +0200 + +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.20090622-0ubuntu1) karmic; urgency=low + + * Snapshot, taken from the trunk 20090622. + - debian/patches/128_arm_eabi_auto_it.dpatch: Remove, applied upstream. + * debian/*.shlibs: Update to the version from the trunk. + + -- Matthias Klose Tue, 23 Jun 2009 01:36:34 +0200 + +binutils (2.19.51.20090620-0ubuntu1) karmic; urgency=low + + * Snapshot, taken from the trunk 20090620. + * debian/*.shlibs: Update to the version from the trunk. + * Build the binutils-gold package on armel. + * Update hjl patches from the binutils-2.19.51.0.10 release. + + -- Matthias Klose Sat, 20 Jun 2009 22:56:32 +0200 + +binutils (2.19.51.20090616reallz0515-0ubuntu1) karmic; urgency=low + + * Reupload snapshot from trunk 20090515. + * Apply proposed patch to augment maximum alignment size to 64 (ARM gas). + * Apply proposed patch for new option for automatically generating IT blocks. + + -- Matthias Klose Wed, 17 Jun 2009 23:02:25 +0000 + +binutils (2.19.51.20090515-0ubuntu1) karmic; urgency=low + + * Snapshot, taken from the trunk 20090515. + - Fix PR ld/10152. LP: #375991. + * Revert work-around from last upload. + * debian/*.shlibs: Update to the version from the trunk. + * Build the binutils-gold package again. + + -- Matthias Klose Fri, 15 May 2009 16:34:56 +0200 + +binutils (2.19.51.20090508-0ubuntu2) karmic; urgency=low + + * Revert change for ARM unwind table linker processing. Addresses #375991. + + -- Matthias Klose Wed, 13 May 2009 17:46:20 +0200 + +binutils (2.19.51.20090508-0ubuntu1) karmic; urgency=low + + * Snapshot, taken from the trunk 20090508. + * debian/*.shlibs: Update to the version from the trunk. + + -- Matthias Klose Fri, 08 May 2009 11:22:40 +0200 + +binutils (2.19.51.20090423-0ubuntu2) karmic; urgency=low + + * Snapshot, taken from the trunk 20090423. + * debian/*.shlibs: Update to the version from the trunk. + * Fix build failure when building with -Os. + * debian/patches/013_bash_in_ld_testsuite.dpatch: Update. + + -- Matthias Klose Fri, 24 Apr 2009 12:29:23 +0200 + +binutils (2.19.1-0ubuntu3) jaunty; urgency=low + + * Re-add -a to dpkg-architecture call; the addition of -f is all what's + needed to ignore the dpkg-architecture env set by dpkg-buildpackage (since + we don't care about the DEB_BUILD_* or DEB_HOST_* arches but only about + the TARGET arch). + + -- Loic Minier Tue, 10 Feb 2009 16:42:28 +0100 + +binutils (2.19.1-0ubuntu2) jaunty; urgency=low + + * binutils-source: Make .dpatch files executable. + * Use dpkg-architecture -f instead of -a for cross builds. + * Call pkg_create_dbgsym explicitly to build debug symbols packages. + LP: #322243. + + -- Matthias Klose Tue, 10 Feb 2009 12:05:51 +0100 + +binutils (2.19.1-0ubuntu1) jaunty; urgency=low + + * Binutils 2.19.1 release. + - 128_arm_relocs_against_weak.dpatch 129_scale-DW_CFA_advance_loc.dpatch: + Remove, applied upstream. + * debian/*.shlibs: Update to the release version. + + -- Matthias Klose Wed, 04 Feb 2009 10:14:33 +0100 + +binutils (2.19.0.20090110-0ubuntu1) jaunty; 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:47:35 +0100 + +binutils (2.19-0ubuntu3) jaunty; 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 Sat, 29 Nov 2008 11:25:22 +0100 + +binutils (2.19-0ubuntu2) jaunty; urgency=low + + * No-change rebuild to remove translations from the binary package, + accidentally included due to a misbuild. + + -- Steve Langasek Fri, 21 Nov 2008 04:35:45 +0000 + +binutils (2.19-0ubuntu1) jaunty; urgency=low + + * Binutils 2.19 release. + * debian/*.shlibs: Update to the release version. + * debian/control: Update to GPL3, reference the GFDL. + * Make lintian more happy. + + -- Matthias Klose Thu, 30 Oct 2008 15:37:05 +0100 + +binutils (2.18.93.20081009-0ubuntu1) intrepid; 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. + * In gprof(1), remove references to monitor(3) and profil(2). + + -- Matthias Klose Wed, 08 Oct 2008 15:27:50 +0200 + +binutils (2.18.92.20081003-0ubuntu2) intrepid; urgency=low + + * Add build dependency on zlib1g-dev. + + -- Matthias Klose Tue, 07 Oct 2008 12:52:33 +0200 + +binutils (2.18.92.20081003-0ubuntu1) intrepid; urgency=low + + * Snapshot, taken from the 2.19 branch 20081003 (corresponding to the + 2.18.92 upstream snapshot. + * Stop building binutils-gold for the intrepid release (still + experimental). + * debian/*.shlibs: Update to the version from the branch. + + -- Matthias Klose Fri, 03 Oct 2008 11:16:43 +0000 + +binutils (2.18.91.20080923-0ubuntu1) intrepid; urgency=low + + * Snapshot, taken from the 2.19 branch 20080923 (corresponding to the + 2.18.91 upstream snapshot. + * debian/*.shlibs: Update to the version from the branch. + * debian/patches/201-hjl-bfd-ref_addr.dpatch: Remove, integrated upstream. + * Fail the build if the testsuite shows regressions compared to the + last (installed) build. + + -- Matthias Klose Tue, 23 Sep 2008 13:22:34 +0200 + +binutils (2.18.90.20080910-0ubuntu1) intrepid; urgency=low + + * Snapshot, taken from the 2.19 branch 20080910. + - No testsuite regressions on amd64, i386, lpia, sparc. + * debian/*.shlibs: Update to the version from the branch. + * debian/patches/201-hjl-bfd-ref_addr.dpatch: Update. + + -- Matthias Klose Sat, 13 Sep 2008 19:40:31 +0200 + +binutils (2.18.50.20080814-0ubuntu1) intrepid; urgency=low + + * Snapshot, taken from the trunk 20080814. + * debian/*.shlibs: Update to the version from the trunk. + * debian/patches/201-hjl-bfd-ref_addr.dpatch: Update. + * debian/patches/209-hjl-binutils-error.dpatch: Likewise. + + -- Matthias Klose Thu, 14 Aug 2008 16:37:01 +0000 + +binutils (2.18.50.20080806-0ubuntu1) intrepid; urgency=low + + * Snapshot, taken from the trunk 20080806. + - Fix PR ld/6656, disable gas generated debug info if compiler generated + debug info is seen. LP: #240884. Closes: #481592. + * debian/*.shlibs: Update to the version from the trunk. + * Build binutils-gold for powerpc. + + -- Matthias Klose Wed, 06 Aug 2008 08:39:52 +0200 + +binutils (2.18.50.20080707-0ubuntu1) intrepid; 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). + + -- Matthias Klose Mon, 07 Jul 2008 10:21:30 +0000 + +binutils (2.18.50.20080610-0ubuntu1) intrepid; urgency=low + + * Snapshot, taken from the trunk 20080610. + * debian/*.shlibs: Update to the version from the trunk. LP: #237461. + + -- Matthias Klose Tue, 10 Jun 2008 17:18:50 +0200 + +binutils (2.18.50.20080530-0ubuntu1) intrepid; urgency=low + + * Snapshot, taken from the trunk 20080530. + - gold recognizes -z relro and -z norelro. + * debian/rules: Explicitely set SHELL to /bin/bash, build-depend on bash. + * debian/rules: Fix setting of TARGET for cross builds. + * binutils-static: Remove dependency on libc6. LP: #184582. + + -- Matthias Klose Fri, 30 May 2008 23:55:07 +0200 + +binutils (2.18.50.20080509-0ubuntu1) intrepid; urgency=low + + * Snapshot, taken from the trunk 20080509. + * Add -Wno-format-security to CFLAGS, CXXFLAGS, due to picky default + hardening options. + * Let gold ignore -z relro and -z norelro for now. + * Build gold with -Wno-error. + + -- Matthias Klose Fri, 09 May 2008 11:09:24 +0200 + +binutils (2.18.50.20080507-0ubuntu1) intrepid; 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, + 311_pr5006.dpatch, 312_pr5011.dpatch, 313_pr5025.dpatch. + * Update patches from the hjl releases: 200-hjl-ld-env (not applied), + 206-hjl-binutils-shr.dpatch (not applied), + * Remove patches from the hjl release: 204-hjl-binutils-tls-relro.dpatch, + 208-hjl-libtool-relink.dpatch, 209-hjl-binutils-error.dpatch, + 210-hjl-binutils-signed.dpatch, + * New patches from the hjl release: 212-hjl-bfd-64k.dpatch. + * debian/*.shlibs: Update to the version from the trunk. + * On amd64, i386, lpia and sparc, build a binutils-gold package, + diverting /usr/bin/ld. + + -- Matthias Klose Wed, 07 May 2008 17:41:05 +0200 + +binutils (2.18.1~cvs20080103-4ubuntu1) hardy; urgency=low + + * Merge with Debian unstable; remaining changes: + - Build binutils-static and binutils-static-udeb packages. + + -- Matthias Klose Tue, 22 Apr 2008 12:02:51 +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 fiiles 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-0ubuntu1) hardy; 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). + * debian/*.shlibs: Update to version from the branch. + * debian/patches/305_arm-dis.dpatch: Fix segfault when disassembling ARM + code. Closes: #438956. + + -- Matthias Klose Thu, 03 Jan 2008 21:26:56 +0000 + +binutils (2.18.1~cvs20071027-1ubuntu2) hardy; urgency=low + + * Do not include static libraries in the multiarch package. + * Install a libiberty compiled with -fPIC as libiberty_pic.a. + LP: #50512. + * Don't include /usr/lib64 for cross packages. Closes: #450429. + + -- Matthias Klose Fri, 23 Nov 2007 12:14:31 +0000 + +binutils (2.18.1~cvs20071027-1ubuntu1) hardy; 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. + * Drop the build dependency on expect-tcl8.3, don't run the + testsuite on hppa. + + -- Matthias Klose Sat, 27 Oct 2007 17:33:13 +0000 + +binutils (2.18-1ubuntu1) hardy; urgency=low + + * Rebuild using gcc-4.2. + + -- Matthias Klose Sun, 21 Oct 2007 08:31:26 +0000 + +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-0ubuntu3) gutsy; urgency=low + + * Apply patches for: + - PR binutils/5011, readelf reads past end of buffer. + - PR ld/5025, downgrade error to a warning if .note.gnu.build-id + has been discarded. + + -- Matthias Klose Wed, 19 Sep 2007 00:31:23 +0200 + +binutils (2.18-0ubuntu2) gutsy; urgency=low + + * Apply fix for PR ld/5008, taken from the trunk. + + -- Matthias Klose Sun, 09 Sep 2007 22:08:19 +0200 + +binutils (2.18-0ubuntu1) gutsy; urgency=low + + * Final 2.18 release. + * debian/*.shlibs: Update to release version. + + -- Matthias Klose Wed, 29 Aug 2007 13:22:09 +0200 + +binutils (2.18~cvs20070827-0ubuntu1) gutsy; urgency=low + + * New upstream CVS snapshot, taken from the binutils-2_18-branch. + - Remove patches applied upstream: 311_sse4_intel_mode, 400_gcc42_fix, + 401_builddoc. + * debian/*.shlibs: Update to snapshot version. + + -- Matthias Klose Mon, 27 Aug 2007 19:30:21 +0200 + +binutils (2.18~cvs20070812-0ubuntu1) gutsy; urgency=low + + * 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. + * debian/patches/311_sse4_intel_mode.dpatch: Fix SSE4 for Intel mode. + * Update patches: 200-hjl-ld-env (not applied), 203-hjl-binutils-indirect, + 204-hjl-binutils-tls-relro, 209-hjl-binutils-error, + * Remove patches: 201-hjl-bfd-dwarf-dup.dpatch, 201-hjl-bfd-dwarf-dup, + 205-hjl-bfd-kept, 208-hjl-libtool-relink. + * New patches: 210-hjl-binutils-signed, 211-hjl-binutils-weakdef. + + -- Matthias Klose Sun, 12 Aug 2007 12:42:57 +0200 + +binutils (2.17.20070804cvs-0ubuntu1) gutsy; urgency=low + + * 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. + * Build using the default compiler on all architectures. + + -- Matthias Klose Sat, 04 Aug 2007 11:29:10 +0000 + +binutils (2.17.20070801cvs-0ubuntu2) gutsy; urgency=low + + * Build-depend on gcc-4.1 on lpia, since we're calling it explicitly. + + -- Adam Conrad Fri, 3 Aug 2007 13:24:26 +1000 + +binutils (2.17.20070801cvs-0ubuntu1) gutsy; urgency=low + + * CVS snapshot 20070801, taken from the trunk. + - Fixes objcopy --only-keep-debug on amd64. + + -- Matthias Klose Wed, 01 Aug 2007 18:46:10 +0200 + +binutils (2.17.20070718cvs-0ubuntu2) gutsy; urgency=low + + * debian/patches/305_ungetc.dpatch: Allow UNGETC to work with empty buffer, + taken from CVS HEAD. + + -- Matthias Klose Fri, 20 Jul 2007 12:47:44 +0200 + +binutils (2.17.20070718cvs-0ubuntu1) gutsy; urgency=low + + * CVS snapshot 20070718, taken from the trunk. + * Fix cross build failure while stripping binaries. Closes: #432907. + + -- Matthias Klose Wed, 18 Jul 2007 15:19:15 +0000 + +binutils (2.17.20070713cvs-0ubuntu2) gutsy; urgency=low + + * Fix build failure with gcc-4.2. + + -- Matthias Klose Tue, 17 Jul 2007 11:09:25 +0000 + +binutils (2.17.20070713cvs-0ubuntu1) gutsy; urgency=low + + * CVS snapshot 20070713, taken from the trunk. + - Remove patches applied upstream: 301_pr4436.dpatch, 302_pr4448.dpatch, + 303_pr4454.dpatch, 305_pr4497.dpatch, 306_ld_demangler_segfault.dpatch, + 307_pr4558.dpatch. + * Update hjl patches: + - Remove 207-hjl-libtool-archive.dpatch. + - Add 201-hjl-bfd-dwarf-dup.dpatch, 209-hjl-binutils-error.dpatch. + - Update 200-hjl-ld-env.dpatch, 201-hjl-bfd-ref_addr.dpatch, + 204-hjl-binutils-tls-relro.dpatch, hjl-binutils-shr.dpatch. + * debian/copyright: Include GPL-3. + * debian/rules: Fix version extraction. + * debian/rules: Honor `noopt' in DEB_BUILD_OPTIONS. Closes LP: #65607. + * debian/patches/013_bash_in_ld_testsuite.dpatch: Use bash in the ld + testsuite. Closes LP: #124435. + + -- Matthias Klose Fri, 13 Jul 2007 15:43:07 +0200 + +binutils (2.17.20070426cvs-7ubuntu2) gutsy; urgency=low + + * Fix PR gas/4558. + + -- Matthias Klose Mon, 28 May 2007 08:48:33 +0000 + +binutils (2.17.20070426cvs-7ubuntu1) gutsy; urgency=low + + * Merge with Debian. + + -- Matthias Klose Fri, 25 May 2007 08:24:08 +0200 + +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.17.20070426cvs-2ubuntu7) gutsy; urgency=low + + * Fix PR ld/4497, regression introduced with the fix for PR ld/4454. + + -- Matthias Klose Mon, 14 May 2007 08:13:50 +0000 + +binutils (2.17.20070426cvs-2ubuntu6) gutsy; urgency=low + + * Fix binutils/4476, readelf support for --hash-style=gnu. + + -- Matthias Klose Thu, 10 May 2007 07:32:28 +0000 + +binutils (2.17.20070426cvs-2ubuntu5) gutsy; urgency=low + + * Fix PR ld/4454. + + -- Matthias Klose Sun, 06 May 2007 13:02:11 +0000 + +binutils (2.17.20070426cvs-2ubuntu4) gutsy; urgency=low + + * Fix PR gas/4448, overstrict check for powerpc lswi. + + -- Matthias Klose Wed, 2 May 2007 13:42:10 +0200 + +binutils (2.17.20070426cvs-2ubuntu3) gutsy; urgency=low + + * Update debian/*.shlibs files. + * Fix PR gas/4436, wrong reject in powerpc opcode table checks. + + -- Matthias Klose Mon, 30 Apr 2007 08:02:30 +0200 + +binutils (2.17.20070426cvs-2ubuntu2) gutsy; urgency=low + + * Add binutils-udeb as a dist file with priority optional. + + -- Matthias Klose Fri, 27 Apr 2007 17:27:23 +0200 + +binutils (2.17.20070426cvs-2ubuntu1) gutsy; urgency=low + + * Merge with Debian. + + -- Matthias Klose Fri, 27 Apr 2007 10:16:54 +0200 + +binutils (2.17cvs20070426-2) unstable; urgency=low + + * Fix typo preparing the binutils-hppa64 package. Closes: #421199. + * Compare testsuite results of the installed binutils with the built one. + + -- 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.20070420cvs-0ubuntu1) gutsy; urgency=low + + * CVS snapshot 20070420, taken from the trunk. + - debian/patches/007_binutils_soversion.dpatch: Remove, applied upstream. + + -- Matthias Klose Fri, 20 Apr 2007 13:46:05 +0200 + +binutils (2.17.20070406cvs-0ubuntu1) toolchain-test; urgency=low + + * CVS snapshot 20070406, taken from the trunk. + * Do not apply: 200-hjl-ld-env. + * Enable spu target in powerpc, ppc64 builds and in the + binutils-multiarch build. + * Don't include embedspu in binutils-multiarch on powerpc, ppc64. + Closes: #411486. + + -- Matthias Klose Fri, 6 Apr 2007 06:57:41 +0200 + +binutils (2.17.20070329cvs-0ubuntu1) toolchain-test; urgency=low + + * CVS snapshot 20070329, taken from the trunk. + * Patches from the hjl 2.17.50.0.13 release: + - 202-hjl-binutils-check-phdr: Remove, applied upstream. + - 205-hjl-bfd-kept.dpatch: Address the link speed issue by caching + the result of _bfd_elf_check_kept_section. + - 206-hjl-binutils-shr.dpatch: Implementation of ELF sharable section + proposal (not applied by default). + - 208-hjl-libtool-relink.dpatch: Avoid unnecessary linker messages + when running "make check". + + -- Matthias Klose Thu, 29 Mar 2007 07:16:28 +0200 + +binutils (2.17.20070321cvs-0ubuntu2) toolchain-test; urgency=low + + * Configure --with-pkgversion, not including the package version, + which may break ld version detection in configure scripts. + * debian/patches/000_cvs_version_string.dpatch: Remove. + * debian/patches/007_binutils_soversion.dpatch: Use date for non-release + builds in soversion. + + -- Matthias Klose Thu, 22 Mar 2007 07:01:14 +0100 + +binutils (2.17.20070321cvs-0ubuntu1) toolchain-test; urgency=low + + * CVS snapshot 20070321, taken from the trunk. + * debian/patches/000_print_{debian,ubuntu}_version.dpatch: Remove. + * debian/control: Build-depend on lsb-release. + * Configure --with-pkgversion to include the distribution name. + * Apply patches from the hjl 2.17.50.0.13 release: + - 200-hjl-ld-env.dpatch: Handle LD_SYMBOLIC and LD_SYMBOLIC_FUNCTIONS + env vars. + - 201-hjl-bfd-ref_addr.dpatch: Support DW_FORM_ref_addr in Dwarf 2 reader + in linker. + - 202-hjl-binutils-check-phdr.dpatch: Fix PR ld/4007: Linker failed + to issue an error on bad section in segment. + - 203-hjl-binutils-indirect.dpatch: PR ld/3351; avoid linker crash on ia64. + - 204-hjl-binutils-tls-relro.dpatch: PR binutils/3281; objcopy changes + PT_GNU_RELRO when there is PT_TLS. + - 207-hjl-libtool-archive.dpatch: Allow linking against an archive when + building a shared library. + * Set Ubuntu maintainer address. + + -- Matthias Klose Wed, 21 Mar 2007 09:17:21 +0100 + +binutils (2.17.20070210cvs-1ubuntu1) toolchain-test; urgency=low + + * Merge with Debian experimental; remaining changes: + - Build binutils-static and binutils-static-udeb packages. + + -- Matthias Klose Mon, 12 Feb 2007 16:03:23 +0100 + +binutils (2.17.20070210cvs-1) experimental; urgency=low + + * CVS snapshot 20070210, taken from the trunk. + * debian/rules: Don't try to strip shell scripts. + + -- Matthias Klose Sat, 10 Feb 2007 15:59:45 +0100 + +binutils (2.17.20070103cvs-2) experimental; urgency=low + + * Overwrite the VERSION string (date) from the snapshot with + a parsable version string (2.17.50), as found on the trunk. + + -- Matthias Klose Fri, 5 Jan 2007 10:06:09 +0100 + +binutils (2.17.20070103cvs-1) experimental; urgency=low + + * binutils snapshot 20070103, taken from + ftp://sourceware.org/pub/binutils/snapshots/ + * Build a binutils-source package (containing the patched sources). + * Check for a working expect before building the package. + * Configure binutils-multiarch for i486-gnu as well. + * 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. + + -- Matthias Klose Thu, 4 Jan 2007 22:13:54 +0100 + +binutils (2.17.20070103cvs-0ubuntu1) feisty; urgency=low + + * binutils snapshot 20070103, taken from + ftp://sourceware.org/pub/binutils/snapshots/ + * Merge with Debian experimental; remaining changes: + - Build binutils-static and binutils-static-udeb packages. + - Build a binutils-source package (containing the patched + sources). + - Check for a working expect before building the package. + - Configure binutils-multiarch for i486-gnu as well. + * 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. + * Strip binaries in binutils-static and in the binutils udeb. + + -- Matthias Klose Thu, 4 Jan 2007 15:17:45 +0100 + +binutils (2.17.20061210cvs-1) experimental; urgency=low + + * CVS snapshot 20061210, taken from the trunk. + * debian/patches/121_i386_x86_64_biarch.dpatch: Remove, applied upstream. + + -- Matthias Klose Sun, 10 Dec 2006 20:43:41 +0100 + +binutils (2.17.20070103cvs-0ubuntu2) feisty; urgency=low + + * Overwrite the VERSION string (date) from the snapshot with + a parsable version string (2.17.50), as found on the trunk. + + -- Matthias Klose Fri, 5 Jan 2007 09:02:06 +0000 + +binutils (2.17.50.0.6-0ubuntu1) feisty; urgency=low + + [Fabio M. Di Nitto] + + * we are supposed to upload to feisty, aren't we? ;) + + [Jeff Bailey] + + * New upstream snapshot from HJ Lu. + * debian/patches/121_i386_x86_64_biarch: Drop, merged upstream. + + -- Fabio M. Di Nitto Tue, 31 Oct 2006 15:43:58 +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-1ubuntu1) edgy; urgency=low + + * New upstream release. + - ld checks for libs in the same order as ld.so does. Ubuntu #40214. + * Synchronise with Debian unstable. + * Remove patch 122_sparc64_UA2005_instruction_set.dpatch, integrated + upstream. + * Remove patch 130_tekhex_buffer_overflow.dpatch, integrated upstream. + * 122_x86_64_i386_biarch.dpatch: New, search libraries in (/usr)/lib32 on + amd64. Closes: #369052. + * Build a binutils-source package; obsoletes toolchain-source package. + + -- Matthias Klose Wed, 28 Jun 2006 10:29:16 +0200 + +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-1ubuntu2.1) dapper-security; urgency=low + + * SECURITY UPDATE: Crash and possible arbitrary code execution in apps using + libbfd (such as 'strings'). + * Add debian/patches/130_tekhex_buffer_overflow.dpatch: + - Fix buffer overflow on hexadecimal number parsing in the Tektronix Hex + Format BFD library backend. + - Patch ported from CVS HEAD. + * CVE-2006-2362 + + -- Martin Pitt Tue, 6 Jun 2006 11:35:55 +0200 + +binutils (2.16.1cvs20060117-1ubuntu2) dapper; urgency=low + + * [SPARC64] Add support for new UA2005 instruction set: + - Add patch 122_sparc64_UA2005_instruction_set.dpatch. + (Thanks David S. Miller for providing the patch) + + NOTE: the patch is sparc specific and does NOT touch any other code. + It is a plain rebuild on all other arches. + + -- Fabio M. Di Nitto Sat, 25 Feb 2006 07:11:28 +0100 + +binutils (2.16.1cvs20060117-1ubuntu1) dapper; urgency=low + + * Synchronise with Debian untstable. + + -- Matthias Klose Thu, 19 Jan 2006 09:21:47 +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-1ubuntu1) dapper; urgency=low + + * Synchronise with Debian unstable. + + -- Matthias Klose Thu, 15 Dec 2005 00:11:16 +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-1ubuntu1) dapper; urgency=low + + * Synchronise with Debian unstable. + + -- Matthias Klose Fri, 18 Nov 2005 14:09:29 +0100 + +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-1ubuntu1) dapper; urgency=low + + * Synchronise with Debian unstable. + * Reenable the testsuite on hppa and sparc. + * debian/control: + - Set standards version to 3.6.2 (no changes). + - Add alternative build dependency on expect-tcl8.3. + + -- Matthias Klose Mon, 14 Nov 2005 10:52:27 +0100 + +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-2ubuntu7) dapper; urgency=low + + * debian/rules: Stop calling pkgstriptranslations, we now get it + for free with the new and improved dpkg-deb diversion hack. + + -- Adam Conrad Wed, 26 Oct 2005 10:39:15 +1000 + +binutils (2.16.1-2ubuntu6) breezy; urgency=low + + * debian/control: Create a new binutils-static-udeb udeb for d-i. + * debian/rules: Copy stuff from -static to -static-udeb for above. + * debian/rules: compress changelog in /usr/share/doc/binutils-static + + -- Adam Conrad Tue, 4 Oct 2005 16:51:06 +1000 + +binutils (2.16.1-2ubuntu5) breezy; urgency=low + + [ Jeff Bailey ] + * debian/control: binutils-static no longer depends on binutils. + * debian/rules: Install the copyright and changelog into + /usr/share/doc/binutils-static. + + [ Adam Conrad ] + * debian/binutils-static.preinst: Make sure that we lose our doc + symlink before we upgrade, or some Very Bad Things could happen. + * debian/rules: Make the above get installed to the right location. + + -- Adam Conrad Tue, 4 Oct 2005 15:45:12 +1000 + +binutils (2.16.1-2ubuntu4) breezy; urgency=low + + The " jbailey: how soon should I expect an upload?" release. + + * debian/patches/122_sparc_hppa_got.dpatch: New patch to allow + --as-needed on sparc, and to avoid issues with duplicate + GLOBAL_OFFSET_TABLES on hppa. + + * debian/patches/00list.sparc: New file, add this patch there. + + * debian/patches/00list.hppa: New file, add this patch there. + + -- Jeff Bailey Wed, 31 Aug 2005 16:46:13 -0400 + +binutils (2.16.1-2ubuntu3) breezy; urgency=low + + * debian/patches/121_i386_x86_64_biarch: New patch to allow + ld to work in an i386/x86_64 biarch configuration. + + -- Jeff Bailey Fri, 5 Aug 2005 16:24:23 +0000 + +binutils (2.16.1-2ubuntu2) breezy; urgency=low + + * debian/rules: Call it /bin/ld_static, not /bin/ld to avoid + confusion. + + -- Jeff Bailey Tue, 26 Jul 2005 01:34:43 +0000 + +binutils (2.16.1-2ubuntu1) breezy; urgency=low + + * debian/rules: Add binutils-static pass. This provides /bin/ld + for use in linking objects that might be needed at boot time + for mounting /usr or /. + Also remove stamps when cleaning. + + -- Jeff Bailey Tue, 26 Jul 2005 00:12:07 +0000 + +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 Sept 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 + --- binutils-2.23.1.orig/debian/ld.gold.1 +++ binutils-2.23.1/debian/ld.gold.1 @@ -0,0 +1,702 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.40.11. +.TH GOLD "1" "December 2012" "gold (GNU Binutils for Ubuntu 2.23.1) 1.11" "User Commands" +.SH NAME +gold \- The GNU ELF linker +.SH SYNOPSIS +.B ld.gold +[\fIoptions\fR] \fIfile\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 +.HP +\fB\-\-allow\-multiple\-definition\fR Allow multiple definitions of symbols +.TP +\fB\-\-no\-allow\-multiple\-definition\fR +Do not allow multiple definitions +.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 +.TP +\fB\-\-as\-needed\fR +Only set DT_NEEDED for shared libraries if used +.TP +\fB\-\-no\-as\-needed\fR +Always DT_NEEDED for shared libraries +.TP +\fB\-assert\fR [ignored] +Ignored +.TP +\fB\-b\fR [elf,binary], \fB\-\-format\fR [elf,binary] +Set input format +.HP +\fB\-Bdynamic\fR \fB\-l\fR searches for shared libraries +.HP +\fB\-Bstatic\fR \fB\-l\fR does not search for shared libraries +.TP +\fB\-dy\fR +alias for \fB\-Bdynamic\fR +.TP +\fB\-dn\fR +alias for \fB\-Bstatic\fR +.TP +\fB\-Bgroup\fR +Use group name lookup rules for shared library +.TP +\fB\-Bsymbolic\fR +Bind defined symbols locally +.TP +\fB\-Bsymbolic\-functions\fR +Bind defined function symbols locally +.TP +\fB\-\-build\-id\fR [=STYLE] +Generate build ID note +.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] +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 +.TP +\fB\-\-cref\fR +Output cross reference table +.TP +\fB\-\-no\-cref\fR +Do not output cross reference table +.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 +.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\-\-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 +.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\-\-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 +.HP +\fB\-e\fR ADDRESS, \fB\-\-entry\fR ADDRESS Set program start address +.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. +.TP +\fB\-\-eh\-frame\-hdr\fR +Create exception frame header +.TP +\fB\-\-no\-enum\-size\-warning\fR +(ARM only) Do not warn about objects with incompatible enum sizes +.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 +.TP +\fB\-fini\fR SYMBOL +Call SYMBOL at unload\-time +.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. +.TP +\fB\-\-fix\-arm1176\fR +(ARM only) Fix binaries for ARM1176 erratum. +.TP +\fB\-\-no\-fix\-arm1176\fR +(ARM only) Do not fix binaries for ARM1176 erratum. +.TP +\fB\-\-merge\-exidx\-entries\fR +(ARM only) Merge exidx entries in debuginfo. +.TP +\fB\-\-no\-merge\-exidx\-entries\fR +(ARM only) Do not merge exidx entries in debuginfo. +.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\-g\fR +Ignored +.TP +\fB\-\-gdb\-index\fR +Generate .gdb_index section +.TP +\fB\-\-no\-gdb\-index\fR +Do not generate .gdb_index section +.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\-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 PROGRAM, \fB\-\-dynamic\-linker\fR PROGRAM +Set dynamic linker path +.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 +.TP +\fB\-init\fR SYMBOL +Call SYMBOL at load\-time +.TP +\fB\-\-just\-symbols\fR FILE +Read only symbol values from FILE +.TP +\fB\-\-map\-whole\-files\fR +Map whole files to memory (default on 64\-bit hosts) +.TP +\fB\-\-no\-map\-whole\-files\fR +Map relevant file parts to memory (default on 32\-bit hosts) +.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\-\-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 LIBNAME, \fB\-\-library\fR LIBNAME +Search for library LIBNAME +.TP +\fB\-L\fR DIR, \fB\-\-library\-path\fR DIR +Add directory to search path +.TP +\fB\-nostdlib\fR +Only search directories specified on the command line. +.TP +\fB\-\-rosegment\fR +Put read\-only non\-executable sections in their own segment +.TP +\fB\-m\fR EMULATION +Set GNU linker emulation; obsolete +.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 +.TP +\fB\-\-enable\-new\-dtags\fR +Enable use of DT_RUNPATH and DT_FLAGS +.TP +\fB\-\-disable\-new\-dtags\fR +Disable use of DT_RUNPATH and DT_FLAGS +.TP +\fB\-\-noinhibit\-exec\fR +Create an output file even if errors occur +.TP +\fB\-\-no\-undefined\fR +Report undefined symbols (even with \fB\-\-shared\fR) +.TP +\fB\-o\fR FILE, \fB\-\-output\fR FILE +Set output file name +.TP +\fB\-O\fR LEVEL, \fB\-optimize\fR LEVEL +Optimize output file size +.TP +\fB\-\-oformat\fR [binary] +Set output format +.TP +\fB\-p\fR +(ARM only) Ignore for backward compatibility +.TP +\fB\-pie\fR +Create a position independent executable +.TP +\fB\-\-pic\-executable\fR +Create a position independent executable +.TP +\fB\-no\-pipeline\-knowledge\fR +(ARM only) Ignore for backward compatibility +.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\-\-preread\-archive\-symbols\fR +Preread archive symbols when multi\-threaded +.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\-Qy\fR +Ignored for SVR4 compatibility +.TP +\fB\-q\fR, \fB\-\-emit\-relocs\fR +Generate relocations in output +.TP +\fB\-r\fR, \fB\-relocatable\fR +Generate relocatable output +.TP +\fB\-i\fR +Synonym for \fB\-r\fR +.TP +\fB\-\-relax\fR +Relax branches on certain targets +.TP +\fB\-\-retain\-symbols\-file\fR FILE +keep only symbols listed in this file +.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\-\-section\-ordering\-file\fR FILENAME +Layout sections in the order specified. +.TP +\fB\-\-section\-start\fR SECTION=ADDRESS +Set address of section +.TP +\fB\-\-sort\-common\fR [={ascending,descending}] +Sort common symbols by alignment +.TP +\fB\-\-spare\-dynamic\-tags\fR COUNT +Dynamic tag slots to reserve (default 5) +.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 +.TP +\fB\-\-stub\-group\-size\fR SIZE +(ARM 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 using default size. +.TP +\fB\-\-no\-keep\-memory\fR +Use less memory and more disk I/O (included only for compatibility with GNU ld) +.TP +\fB\-G\fR, \fB\-shared\fR +Generate shared library +.TP +\fB\-Bshareable\fR +Generate shared library +.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\-\-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 2) +.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 +.TP +\fB\-\-keep\-unique\fR SYMBOL +Do not fold this symbol during ICF +.TP +\fB\-\-gc\-sections\fR +Remove unused sections +.TP +\fB\-\-no\-gc\-sections\fR +Don't remove unused sections (default) +.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 +.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\-T\fR FILE, \fB\-\-script\fR FILE +Read linker script +.TP +\fB\-\-threads\fR +Run the linker multi\-threaded +.TP +\fB\-\-no\-threads\fR +Do not run the linker multi\-threaded +.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\-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\-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 +Synonym for \fB\-\-debug\fR=\fIfiles\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\-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 +.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 +.TP +\fB\-\-no\-wchar\-size\-warning\fR +(ARM only) Do not warn about objects with incompatible wchar_t sizes +.TP +\fB\-\-whole\-archive\fR +Include all archive contents +.TP +\fB\-\-no\-whole\-archive\fR +Include only needed archive contents +.TP +\fB\-\-wrap\fR SYMBOL +Use wrapper functions for SYMBOL +.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\-\-start\-lib\fR +Start a library +.TP +\fB\-\-end\-lib\fR +End a library +.TP +\fB\-fuse\-ld\fR +Ignored for GCC linker option compatibility +.TP +\fB\-z\fR combreloc +Sort dynamic relocs +.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 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 +.TP +\fB\-z\fR norelro +Don't mark variables read\-only after relocation +.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 buildd +Dummy z option +.PP +ld.gold: supported targets: elf32\-i386 elf32\-i386\-freebsd elf32\-i386\-nacl elf32\-x86\-64 elf32\-x86\-64\-freebsd elf32\-x86\-64\-nacl elf64\-x86\-64 elf64\-x86\-64\-freebsd elf64\-x86\-64\-nacl +ld.gold: supported emulations: elf_i386 elf_i386_nacl elf32_x86_64 elf32_x86_64_nacl elf_x86_64 elf_x86_64_nacl +.SH "REPORTING BUGS" +Report bugs to +.SH COPYRIGHT +Copyright 2011 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. +.SH "SEE ALSO" +The full documentation for +.B gold +is maintained as a Texinfo manual. If the +.B info +and +.B gold +programs are properly installed at your site, the command +.IP +.B info gold +.PP +should give you access to the complete manual. --- binutils-2.23.1.orig/debian/binutils.presubj +++ binutils-2.23.1/debian/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! --- binutils-2.23.1.orig/debian/patches/129_ld_mulitarch_dirs.patch +++ binutils-2.23.1/debian/patches/129_ld_mulitarch_dirs.patch @@ -0,0 +1,86 @@ +# DP: Add multiarch directories to linker search path. + +Index: b/ld/genscripts.sh +=================================================================== +--- a/ld/genscripts.sh 2012-07-04 08:28:08.000000000 +0000 ++++ b/ld/genscripts.sh 2012-11-01 17:13:05.000000000 +0000 +@@ -242,6 +242,79 @@ + fi + + LIB_SEARCH_DIRS=`echo ${LIB_PATH} | sed -e 's/:/ /g' -e 's/\([^ ][^ ]*\)/SEARCH_DIR(\\"\1\\");/g'` ++if [ -n "$DEB_TARGET_MULTIARCH" ]; then ++ temp_dirs=' ' ++ for dir in `echo ${LIB_PATH} | sed -e 's/:/ /g'`; do ++ case "$dir" in ++ ${tool_lib}*|*/${target_alias}/*) ++ ;; ++ */lib) ++ if [ -n "$DEB_TARGET_MULTIARCH32" ]; then ++ case $EMULATION_NAME in ++ elf_i386|elf32*) ++ temp_dirs="${temp_dirs}${dir}/$DEB_TARGET_MULTIARCH32 ";; ++ *) ++ temp_dirs="${temp_dirs}${dir}/$DEB_TARGET_MULTIARCH " ++ esac ++ elif [ -n "$DEB_TARGET_MULTIARCH64" ]; then ++ case $EMULATION_NAME in ++ elf*_64|elf64*) ++ temp_dirs="${temp_dirs}${dir}/$DEB_TARGET_MULTIARCH64 ";; ++ *) ++ temp_dirs="${temp_dirs}${dir}/$DEB_TARGET_MULTIARCH " ++ esac ++ else ++ temp_dirs="${temp_dirs}${dir}/$DEB_TARGET_MULTIARCH " ++ fi ++ ;; ++ */lib32) ++ if [ -n "$DEB_TARGET_MULTIARCH32" ]; then ++ dir2=$(echo $dir | sed "s,32$,,") ++ temp_dirs="${temp_dirs}${dir2}/$DEB_TARGET_MULTIARCH32 " ++ fi ++ ;; ++ */lib64) ++ case "${target}" in ++ powerpc64-*-*|s390x-*-*|sparc64-*-*|x86_64-*-linux-gnu) ++ #dir=$(echo $dir | sed "s,64$,,") ++ dir2=$(echo $dir | sed "s,64$,,") ++ temp_dirs="${temp_dirs}${dir2}/$DEB_TARGET_MULTIARCH " ++ ;; ++ *) ++ if [ -n "$DEB_TARGET_MULTIARCH64" ]; then ++ dir2=$(echo $dir | sed "s,64$,,") ++ temp_dirs="${temp_dirs}${dir2}/$DEB_TARGET_MULTIARCH64 " ++ fi ++ ;; ++ esac ++ ;; ++ */libx32) ++ case "${target}" in ++ x86_64-*-linux-gnux32) ++ dir2=$(echo $dir | sed "s,x32$,,") ++ temp_dirs="${temp_dirs}${dir2}/$DEB_TARGET_MULTIARCH " ++ ;; ++ *) ++ if [ -n "$DEB_TARGET_MULTIARCHX32" ]; then ++ dir2=$(echo $dir | sed "s,x32$,,") ++ temp_dirs="${temp_dirs}${dir2}/$DEB_HOST_MULTIARCHX32 " ++ fi ++ ;; ++ esac ++ ;; ++ *) ++ ;; ++ esac ++ temp_dirs="${temp_dirs}${dir} " ++ done ++ LIB_SEARCH_DIRS= ++ for dir in $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 --- binutils-2.23.1.orig/debian/patches/branch-updates.diff +++ binutils-2.23.1/debian/patches/branch-updates.diff @@ -0,0 +1,22229 @@ +# DP: updates from the binutils-2.23 branch + +# git diff 7dbb7d8db8003ff73d80956bd3271f9588437aa7 4fcccf6a7169adab451072332015e7d5b3d90626 +# exclude bfd/{configure{,.ac},Makefile.{am,in}} + +diff --git a/bfd/ChangeLog b/bfd/ChangeLog +index 7aa83bf..bb8114d 100644 +--- a/bfd/ChangeLog ++++ b/bfd/ChangeLog +@@ -1,3 +1,250 @@ ++2013-02-11 Richard Sandiford ++ ++ * elfxx-mips.c (mips_elf_recreate_got): Remove free. ++ (mips_elf_resolve_final_got_entries): Remove bogus comment. ++ ++2013-02-10 Alan Modra ++ ++ PR ld/15113 ++ * elf32-sh.c (sh_elf_link_hash_table_create): Use bfd_zmalloc. ++ ++2013-02-08 Alan Modra ++ ++ PR binutils/15106 ++ * elf-bfd.h (struct elf_obj_tdata): Add elf_find_function_cache. ++ * elf.c (elf_find_function): Revert last change. Use new ++ tdata field rather than static vars for cache. ++ ++2013-02-07 Roberto Agostino Vitillo ++ ++ PR binutils/15106 ++ * elf.c (elf_find_function): Don't cache if symbols change. ++ ++2013-02-07 Alan Modra ++ ++ PR binutils/14873 ++ * elf-attrs.c (_bfd_elf_copy_obj_attributes): Don't attempt to ++ copy attributes from or to non-ELF. ++ ++2013-02-01 Alan Modra ++ ++ * elf64-ppc.c (dec_dynrel_count): Don't error when elf_gc_sweep_symbol ++ clears def_regular. ++ ++2013-01-31 Alan Modra ++ David S. Miller ++ ++ PR ld/15056 ++ * elfxx-sparc.c (_bfd_sparc_elf_gc_mark_hook): Handle implicit ++ references to __tls_get_addr. ++ * elf32-tilpro.c (tilepro_elf_gc_mark_hook): Likewise. Correct ++ vtinherit and vtentry reloc handling too. ++ * elfxx-tilegx.c (tilegx_elf_gc_mark_hook): As for tilepro. ++ ++2013-01-31 Alan Modra ++ ++ * elf64-ppc.c (build_plt_stub): Correct plt stub branch to glink. ++ ++ 2013-01-28 Alan Modra ++ * elf64-ppc.c: Use %T to print symbols names and remove redundant ++ "relocation" in error messages throughout file. ++ (ppc64_elf_relocate_section): Remove sibling call error message, ++ replace with "call lacks nop". Specially report errors for ++ branches to function entry points via OPD lookup and branches ++ to stubs. Remove NULL symbol handling now done by %T. ++ ++2013-01-22 Alan Modra ++ ++ Apply mainline patches ++ 2013-01-15 Alan Modra ++ * elf64-ppc.c (ppc64_elf_size_stubs): Default shared libs to ++ plt-thread-safe. ++ ++ 2013-01-14 Alan Modra ++ PR binutils/14813 ++ * bfdio.c (struct bfd_iovec ): Revert 2012-11-06. ++ (memory_bclose): Likewise. Return 0 on success. ++ * cache.c (cache_bclose): Likewise. ++ * opncls.c (opncls_bclose, bfd_close): Likewise. ++ * vms-lib.c (vms_lib_bclose): Likewise. ++ * libbfd.h: Regenerate. ++ ++ 2013-01-13 Alan Modra ++ * elf-bfd.h (struct elf_link_hash_entry): Delete dynamic_weak. ++ Add ref_dynamic_nonweak. ++ * elflink.c (_bfd_elf_mark_dynamic_def_weak): Delete. ++ (_bfd_elf_merge_symbol): Don't call above function. Move ++ setting of ref_dynamic_nonweak and dynamic_def earlier. Don't ++ clear dynamic_def. ++ (elf_link_add_object_symbols): Delete redundant "override" test. ++ Don't set dynamic_def here. ++ (elf_link_output_extsym): Update. ++ ++ 2013-01-12 Alan Modra ++ * elf-bfd.h (_bfd_elf_strtab_refcount): Declare. ++ * elf-strtab.c (_bfd_elf_strtab_refcount): New function. ++ * elflink.c (elf_add_dt_needed_tag): Use _bfd_elf_strtab_refcount. ++ ++ 2013-01-12 Alan Modra ++ PR ld/12549 ++ * elf-bfd.h (_bfd_elf_strtab_clear_refs): Declare. ++ (_bfd_elf_strtab_clear_all_refs): Define. ++ * elf-strtab.c (_bfd_elf_strtab_clear_refs): New function. ++ (_bfd_elf_strtab_clear_all_refs): Delete. ++ * elflink.c (elf_link_add_object_symbols): Clear out added ++ strtab refs. Correct handling of warning common symbols. ++ ++ 2012-12-19 H.J. Lu ++ * elf32-i386.c (elf_i386_relocate_section): Replace ++ bfd_elf32_swap_reloc_out with elf_append_rel. ++ (elf_i386_finish_dynamic_symbol): Likewise. ++ * elflink.c (elf_append_rel): Call swap_reloc_out instead of ++ swap_reloca_out. ++ ++ 2012-12-18 Alan Modra ++ * elf.c (swap_out_syms): Set shndx to SHN_ABS when not one of ++ the special MAP_* values. ++ ++ 2012-12-07 Alan Modra ++ PR ld/14926 ++ * elf.c (_bfd_elf_map_sections_to_segments): Include elf header ++ size when determining phdr_in_segment. ++ ++ 2012-12-05 Alan Modra ++ * elf64-ppc.c (build_plt_stub): Fix off by one error in branch ++ to glink. ++ ++ 2012-11-21 H.J. Lu ++ PR binutils/14493 ++ * elf.c (copy_elf_program_header): When rewriting program ++ header, set the output maxpagesize to the maximum alignment ++ of input PT_LOAD segments. ++ ++ 2012-11-13 Joe Seymour ++ * elf.c (rewrite_elf_program_header): Allocate elf_segment_map ++ with bfd_zalloc, instead of bfd_alloc. ++ ++ 2012-11-06 H.J. Lu ++ PR binutils/14813 ++ * bfdio.c (bfd_iovec): Change return type of bclose to ++ bfd_boolean. ++ (memory_bclose): Change return type to bfd_boolean. ++ * cache.c (cache_bclose): Likewise. ++ * opncls.c (opncls_bclose): Likewise. Return TRUE on success. ++ * vms-lib.c (vms_lib_bclose): Likewise. Return TRUE. ++ * libbfd.h: Regenerated. ++ ++ 2012-11-06 Alan Modra ++ PR binutils/14567 ++ * opncls.c (opncls_iovec): Forward declare. ++ (_bfd_new_bfd_contained_in): If using opncls_iovec, copy iostream ++ to new bfd. ++ ++ 2012-11-06 Alan Modra ++ * elf64-ppc.c (maybe_strip_output): Heed SEC_KEEP. ++ ++ 2012-11-05 Alan Modra ++ * elf64-ppc.c (ppc64_elf_edit_toc): Clear "repeat" inside ++ loop. Really mark toc entry referring to another toc entry ++ only if the first is used. ++ ++ 2012-10-29 Alan Modra ++ * elf32-ppc.c (ppc_elf_howto_raw): Correct dst_mask in ++ R_PPC_VLE_LO16A, R_PPC_VLE_HI16A, R_PPC_VLE_HA16A, ++ R_PPC_VLE_SDAREL_LO16A, R_PPC_VLE_SDAREL_HI16A, ++ R_PPC_VLE_SDAREL_HA16A reloc howtos. ++ ++ 2012-10-26 Alan Modra ++ PR gas/14758 ++ * elf32-ppc.c (ppc_elf_reloc_type_lookup): Decode ppc64 _DS ++ bfd_reloc values. Map to corresponding D-form relocs. ++ (is_insn_ds_form, is_insn_qs_form): New functions. ++ (ppc_elf_relocate_section): Validate insn with DS-form or DQ-form ++ fields using D-form reloc. ++ ++ 2012-10-21 Hans-Peter Nilsson ++ * linker.c (_bfd_generic_link_output_symbols): Handle a ++ no-longer-global symbol entered as a BFD_PLUGIN. ++ ++ 2012-10-08 Alan Modra ++ PR binutils/14662 ++ * elf.c (_bfd_elf_make_section_from_shdr): Treat .gdb_index as ++ SEC_DEBUGGING. ++ ++ 2012-09-04 H.J. Lu ++ PR binutils/14493 ++ * elf.c (ignore_section_sym): Also ignore section symbols without ++ a BFD section. ++ ++2012-12-21 H.J. Lu ++ ++ * elf64-x86-64.c (elf_x86_64_relocate_section): Check ++ R_X86_64_standard instead of R_X86_64_max for unrecognized ++ relocation. ++ ++2012-12-21 H.J. Lu ++ ++ PR ld/14980 ++ * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Properly ++ adjust h->plt.refcount. ++ * elf64-x86-64.c (elf_x86_64_adjust_dynamic_symbol): Likewise. ++ ++2012-12-20 H.J. Lu ++ ++ PR ld/14968 ++ * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Also check ++ local IFUNC references. ++ * elf64-x86-64.c (elf_x86_64_adjust_dynamic_symbol): Likewise. ++ ++2012-12-20 H.J. Lu ++ ++ PR ld/14956 ++ * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Check local ++ IFUNC calls. ++ * elf64-x86-64.c (elf_x86_64_adjust_dynamic_symbol): Likewise. ++ ++2012-12-17 Roland McGrath ++ Alan Modra ++ ++ * elf32-arm.c (elf32_arm_size_stubs): Skip input BFDs that are ++ not ARM ELF. ++ ++2012-12-09 H.J. Lu ++ ++ PR binutils/14933 ++ * archive.c (bsd_write_armap): Properly check indicies bigger than ++ 4Gb. ++ ++2012-11-29 Roland McGrath ++ ++ * elf-nacl.c (segment_eligible_for_headers): Disallow writable segments. ++ ++2012-11-26 Roland McGrath ++ ++ * elf-nacl.c (nacl_modify_segment_map): Don't crash when INFO is null. ++ ++2012-11-21 Roland McGrath ++ ++ * elf-nacl.c (segment_nonexecutable_and_has_contents): Renamed to ... ++ (segment_eligible_for_headers): ... this. Take new arguments ++ MAXPAGESIZE and SIZEOF_HEADERS. Return false if the first section's ++ start address doesn't leave space for the headers. ++ (nacl_modify_segment_map): Update caller. ++ ++2012-11-19 Joey Ye ++ ++ * elf32-arm.c (elf32_arm_final_link_relocate, ++ case R_ARM_THM_ALU_PREL_11_0, case R_ARM_THM_PC12): Align address of ++ the place being relocated. ++ (elf32_arm_final_link_relocate, case R_ARM_THM_PC8): Align address ++ of the place being relocated and truncate addend. ++ (Pa): New macro. ++ ++2012-11-14 Roland McGrath ++ ++ * elf32-arm.c (elf32_arm_nacl_plt0_entry): Use bic rather than bfc ++ instruction for data sandboxing. ++ + 2012-11-13 Tristan Gingold + + * configure.in: Bump version to 2.23.1 +diff --git a/bfd/archive.c b/bfd/archive.c +index fe57755..5814b46 100644 +--- a/bfd/archive.c ++++ b/bfd/archive.c +@@ -2408,9 +2408,6 @@ bsd_write_armap (bfd *arch, + unsigned int count; + struct ar_hdr hdr; + long uid, gid; +- file_ptr max_first_real = 1; +- +- max_first_real <<= 31; + + firstreal = mapsize + elength + sizeof (struct ar_hdr) + SARMAG; + +@@ -2453,6 +2450,7 @@ bsd_write_armap (bfd *arch, + + for (count = 0; count < orl_count; count++) + { ++ unsigned int offset; + bfd_byte buf[BSD_SYMDEF_SIZE]; + + if (map[count].u.abfd != last_elt) +@@ -2472,7 +2470,8 @@ bsd_write_armap (bfd *arch, + /* The archive file format only has 4 bytes to store the offset + of the member. Check to make sure that firstreal has not grown + too big. */ +- if (firstreal >= max_first_real) ++ offset = (unsigned int) firstreal; ++ if (firstreal != (file_ptr) offset) + { + bfd_set_error (bfd_error_file_truncated); + return FALSE; +diff --git a/bfd/bfdio.c b/bfd/bfdio.c +index 43a7684..be05581 100644 +--- a/bfd/bfdio.c ++++ b/bfd/bfdio.c +@@ -586,7 +586,7 @@ memory_bclose (struct bfd *abfd) + free (bim); + abfd->iostream = NULL; + +- return TRUE; ++ return 0; + } + + static int +diff --git a/bfd/cache.c b/bfd/cache.c +index 574d8b2..a191e2d 100644 +--- a/bfd/cache.c ++++ b/bfd/cache.c +@@ -362,7 +362,7 @@ cache_bwrite (struct bfd *abfd, const void *where, file_ptr nbytes) + static int + cache_bclose (struct bfd *abfd) + { +- return bfd_cache_close (abfd); ++ return bfd_cache_close (abfd) - 1; + } + + static int +diff --git a/bfd/elf-attrs.c b/bfd/elf-attrs.c +index 4237af5..9a6ff6f 100644 +--- a/bfd/elf-attrs.c ++++ b/bfd/elf-attrs.c +@@ -347,6 +347,10 @@ _bfd_elf_copy_obj_attributes (bfd *ibfd, bfd *obfd) + int i; + int vendor; + ++ if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour ++ || bfd_get_flavour (obfd) != bfd_target_elf_flavour) ++ return; ++ + for (vendor = OBJ_ATTR_FIRST; vendor <= OBJ_ATTR_LAST; vendor++) + { + in_attr +diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h +index 2ae8538..d9ef23c 100644 +--- a/bfd/elf-bfd.h ++++ b/bfd/elf-bfd.h +@@ -191,8 +191,8 @@ struct elf_link_hash_entry + FIXME: There is no real need for this field if def_dynamic is never + cleared and all places that test def_dynamic also test def_regular. */ + unsigned int dynamic_def : 1; +- /* Symbol is weak in all shared objects. */ +- unsigned int dynamic_weak : 1; ++ /* Symbol has a non-weak reference from a shared object. */ ++ unsigned int ref_dynamic_nonweak : 1; + /* Symbol is referenced with a relocation where C/C++ pointer equality + matters. */ + unsigned int pointer_equality_needed : 1; +@@ -1590,6 +1590,9 @@ struct elf_obj_tdata + /* A place to stash dwarf2 info for this bfd. */ + void *dwarf2_find_line_info; + ++ /* Stash away info for yet another find line/function variant. */ ++ void *elf_find_function_cache; ++ + /* An array of stub sections indexed by symbol number, used by the + MIPS ELF linker. FIXME: We should figure out some way to only + include this field for a MIPS ELF target. */ +@@ -1931,8 +1934,12 @@ extern void _bfd_elf_strtab_addref + (struct elf_strtab_hash *, bfd_size_type); + extern void _bfd_elf_strtab_delref + (struct elf_strtab_hash *, bfd_size_type); +-extern void _bfd_elf_strtab_clear_all_refs +- (struct elf_strtab_hash *); ++extern unsigned int _bfd_elf_strtab_refcount ++ (struct elf_strtab_hash *, bfd_size_type); ++extern void _bfd_elf_strtab_clear_refs ++ (struct elf_strtab_hash *, bfd_size_type); ++#define _bfd_elf_strtab_clear_all_refs(tab) \ ++ do { _bfd_elf_strtab_clear_refs (tab, 1); } while (0) + extern bfd_size_type _bfd_elf_strtab_size + (struct elf_strtab_hash *); + extern bfd_size_type _bfd_elf_strtab_offset +diff --git a/bfd/elf-nacl.c b/bfd/elf-nacl.c +index 842e367..6753c7c 100644 +--- a/bfd/elf-nacl.c ++++ b/bfd/elf-nacl.c +@@ -42,14 +42,21 @@ segment_executable (struct elf_segment_map *seg) + return FALSE; + } + ++/* Determine if this segment is eligible to receive the file and program ++ headers. It must be read-only, non-executable, and have contents. ++ Its first section must start far enough past the page boundary to ++ allow space for the headers. */ + static bfd_boolean +-segment_nonexecutable_and_has_contents (struct elf_segment_map *seg) ++segment_eligible_for_headers (struct elf_segment_map *seg, ++ bfd_vma maxpagesize, bfd_vma sizeof_headers) + { + bfd_boolean any_contents = FALSE; + unsigned int i; ++ if (seg->count == 0 || seg->sections[0]->lma % maxpagesize < sizeof_headers) ++ return FALSE; + for (i = 0; i < seg->count; ++i) + { +- if (seg->sections[i]->flags & SEC_CODE) ++ if ((seg->sections[i]->flags & (SEC_CODE|SEC_READONLY)) != SEC_READONLY) + return FALSE; + if (seg->sections[i]->flags & SEC_HAS_CONTENTS) + any_contents = TRUE; +@@ -68,6 +75,8 @@ nacl_modify_segment_map (bfd *abfd, struct bfd_link_info *info) + struct elf_segment_map **first_load = NULL; + struct elf_segment_map **last_load = NULL; + bfd_boolean moved_headers = FALSE; ++ int sizeof_headers = info == NULL ? 0 : bfd_sizeof_headers (abfd, info); ++ bfd_vma maxpagesize = get_elf_backend_data (abfd)->maxpagesize; + + if (info != NULL && info->user_phdrs) + /* The linker script used PHDRS explicitly, so don't change what the +@@ -93,7 +102,8 @@ nacl_modify_segment_map (bfd *abfd, struct bfd_link_info *info) + /* Now that we've noted the first PT_LOAD, we're looking for + the first non-executable PT_LOAD with a nonempty p_filesz. */ + else if (!moved_headers +- && segment_nonexecutable_and_has_contents (seg)) ++ && segment_eligible_for_headers (seg, maxpagesize, ++ sizeof_headers)) + { + /* This is the one we were looking for! + +@@ -139,8 +149,7 @@ nacl_modify_segment_map (bfd *abfd, struct bfd_link_info *info) + proper order for the ELF rule that they must appear in ascending address + order. So find the two segments we swapped before, and swap them back. */ + bfd_boolean +-nacl_modify_program_headers (bfd *abfd, +- struct bfd_link_info *info ATTRIBUTE_UNUSED) ++nacl_modify_program_headers (bfd *abfd, struct bfd_link_info *info) + { + struct elf_segment_map **m = &elf_tdata (abfd)->segment_map; + Elf_Internal_Phdr *phdr = elf_tdata (abfd)->phdr; +diff --git a/bfd/elf-strtab.c b/bfd/elf-strtab.c +index 7d2fad4..45743f6 100644 +--- a/bfd/elf-strtab.c ++++ b/bfd/elf-strtab.c +@@ -201,13 +201,17 @@ _bfd_elf_strtab_delref (struct elf_strtab_hash *tab, bfd_size_type idx) + --tab->array[idx]->refcount; + } + +-void +-_bfd_elf_strtab_clear_all_refs (struct elf_strtab_hash *tab) ++unsigned int ++_bfd_elf_strtab_refcount (struct elf_strtab_hash *tab, bfd_size_type idx) + { +- bfd_size_type idx; ++ return tab->array[idx]->refcount; ++} + +- for (idx = 1; idx < tab->size; ++idx) +- tab->array[idx]->refcount = 0; ++void ++_bfd_elf_strtab_clear_refs (struct elf_strtab_hash *tab, bfd_size_type idx) ++{ ++ while (idx < tab->size) ++ tab->array[idx++]->refcount = 0; + } + + bfd_size_type +diff --git a/bfd/elf.c b/bfd/elf.c +index 0ac4032..062967e 100644 +--- a/bfd/elf.c ++++ b/bfd/elf.c +@@ -880,45 +880,25 @@ _bfd_elf_make_section_from_shdr (bfd *abfd, + { + /* The debugging sections appear to be recognized only by name, + not any sort of flag. Their SEC_ALLOC bits are cleared. */ +- static const struct +- { +- const char *name; +- int len; +- } debug_sections [] = +- { +- { STRING_COMMA_LEN ("debug") }, /* 'd' */ +- { NULL, 0 }, /* 'e' */ +- { NULL, 0 }, /* 'f' */ +- { STRING_COMMA_LEN ("gnu.linkonce.wi.") }, /* 'g' */ +- { NULL, 0 }, /* 'h' */ +- { NULL, 0 }, /* 'i' */ +- { NULL, 0 }, /* 'j' */ +- { NULL, 0 }, /* 'k' */ +- { STRING_COMMA_LEN ("line") }, /* 'l' */ +- { NULL, 0 }, /* 'm' */ +- { NULL, 0 }, /* 'n' */ +- { NULL, 0 }, /* 'o' */ +- { NULL, 0 }, /* 'p' */ +- { NULL, 0 }, /* 'q' */ +- { NULL, 0 }, /* 'r' */ +- { STRING_COMMA_LEN ("stab") }, /* 's' */ +- { NULL, 0 }, /* 't' */ +- { NULL, 0 }, /* 'u' */ +- { NULL, 0 }, /* 'v' */ +- { NULL, 0 }, /* 'w' */ +- { NULL, 0 }, /* 'x' */ +- { NULL, 0 }, /* 'y' */ +- { STRING_COMMA_LEN ("zdebug") } /* 'z' */ +- }; +- + if (name [0] == '.') + { +- int i = name [1] - 'd'; +- if (i >= 0 +- && i < (int) ARRAY_SIZE (debug_sections) +- && debug_sections [i].name != NULL +- && strncmp (&name [1], debug_sections [i].name, +- debug_sections [i].len) == 0) ++ const char *p; ++ int n; ++ if (name[1] == 'd') ++ p = ".debug", n = 6; ++ else if (name[1] == 'g' && name[2] == 'n') ++ p = ".gnu.linkonce.wi.", n = 17; ++ else if (name[1] == 'g' && name[2] == 'd') ++ p = ".gdb_index", n = 11; /* yes we really do mean 11. */ ++ else if (name[1] == 'l') ++ p = ".line", n = 5; ++ else if (name[1] == 's') ++ p = ".stab", n = 5; ++ else if (name[1] == 'z') ++ p = ".zdebug", n = 7; ++ else ++ p = NULL, n = 0; ++ if (p != NULL && strncmp (name, p, n) == 0) + flags |= SEC_DEBUGGING; + } + } +@@ -3264,13 +3244,21 @@ sym_is_global (bfd *abfd, asymbol *sym) + } + + /* Don't output section symbols for sections that are not going to be +- output, or that are duplicates. */ ++ output, that are duplicates or there is no BFD section. */ + + static bfd_boolean + ignore_section_sym (bfd *abfd, asymbol *sym) + { +- return ((sym->flags & BSF_SECTION_SYM) != 0 +- && !(sym->section->owner == abfd ++ elf_symbol_type *type_ptr; ++ ++ if ((sym->flags & BSF_SECTION_SYM) == 0) ++ return FALSE; ++ ++ type_ptr = elf_symbol_from (abfd, sym); ++ return ((type_ptr != NULL ++ && type_ptr->internal_elf_sym.st_shndx != 0 ++ && bfd_is_abs_section (sym->section)) ++ || !(sym->section->owner == abfd + || (sym->section->output_section->owner == abfd + && sym->section->output_offset == 0) + || bfd_is_abs_section (sym->section))); +@@ -3883,6 +3871,7 @@ _bfd_elf_map_sections_to_segments (bfd *abfd, struct bfd_link_info *info) + + if (phdr_size == (bfd_size_type) -1) + phdr_size = get_program_header_size (abfd, info); ++ phdr_size += bed->s->sizeof_ehdr; + if ((abfd->flags & D_PAGED) == 0 + || (sections[0]->lma & addr_mask) < phdr_size + || ((sections[0]->lma & addr_mask) % maxpagesize +@@ -6040,7 +6029,7 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd) + and carry on looping. */ + amt = sizeof (struct elf_segment_map); + amt += ((bfd_size_type) section_count - 1) * sizeof (asection *); +- map = (struct elf_segment_map *) bfd_alloc (obfd, amt); ++ map = (struct elf_segment_map *) bfd_zalloc (obfd, amt); + if (map == NULL) + { + free (sections); +@@ -6350,6 +6339,26 @@ copy_private_bfd_data (bfd *ibfd, bfd *obfd) + } + + rewrite: ++ if (ibfd->xvec == obfd->xvec) ++ { ++ /* When rewriting program header, set the output maxpagesize to ++ the maximum alignment of input PT_LOAD segments. */ ++ Elf_Internal_Phdr *segment; ++ unsigned int i; ++ unsigned int num_segments = elf_elfheader (ibfd)->e_phnum; ++ bfd_vma maxpagesize = 0; ++ ++ for (i = 0, segment = elf_tdata (ibfd)->phdr; ++ i < num_segments; ++ i++, segment++) ++ if (segment->p_type == PT_LOAD ++ && maxpagesize < segment->p_align) ++ maxpagesize = segment->p_align; ++ ++ if (maxpagesize != get_elf_backend_data (obfd)->maxpagesize) ++ bfd_emul_set_maxpagesize (bfd_get_target (obfd), maxpagesize); ++ } ++ + return rewrite_elf_program_header (ibfd, obfd); + } + +@@ -6764,6 +6773,7 @@ swap_out_syms (bfd *abfd, + shndx = elf_tdata (abfd)->symtab_shndx_section; + break; + default: ++ shndx = SHN_ABS; + break; + } + } +@@ -7474,18 +7484,29 @@ elf_find_function (bfd *abfd, + const char **filename_ptr, + const char **functionname_ptr) + { +- static asection *last_section; +- static asymbol *func; +- static const char *filename; +- static bfd_size_type func_size; ++ struct elf_find_function_cache ++ { ++ asection *last_section; ++ asymbol *func; ++ const char *filename; ++ bfd_size_type func_size; ++ } *cache; + + if (symbols == NULL) + return FALSE; + +- if (last_section != section +- || func == NULL +- || offset < func->value +- || offset >= func->value + func_size) ++ cache = elf_tdata (abfd)->elf_find_function_cache; ++ if (cache == NULL) ++ { ++ cache = bfd_zalloc (abfd, sizeof (*cache)); ++ elf_tdata (abfd)->elf_find_function_cache = cache; ++ if (cache == NULL) ++ return FALSE; ++ } ++ if (cache->last_section != section ++ || cache->func == NULL ++ || offset < cache->func->value ++ || offset >= cache->func->value + cache->func_size) + { + asymbol *file; + bfd_vma low_func; +@@ -7501,13 +7522,13 @@ elf_find_function (bfd *abfd, + enum { nothing_seen, symbol_seen, file_after_symbol_seen } state; + const struct elf_backend_data *bed = get_elf_backend_data (abfd); + +- filename = NULL; +- func = NULL; + file = NULL; + low_func = 0; + state = nothing_seen; +- func_size = 0; +- last_section = section; ++ cache->filename = NULL; ++ cache->func = NULL; ++ cache->func_size = 0; ++ cache->last_section = section; + + for (p = symbols; *p != NULL; p++) + { +@@ -7528,29 +7549,29 @@ elf_find_function (bfd *abfd, + && code_off <= offset + && (code_off > low_func + || (code_off == low_func +- && size > func_size))) ++ && size > cache->func_size))) + { +- func = sym; +- func_size = size; ++ cache->func = sym; ++ cache->func_size = size; ++ cache->filename = NULL; + low_func = code_off; +- filename = NULL; + if (file != NULL + && ((sym->flags & BSF_LOCAL) != 0 + || state != file_after_symbol_seen)) +- filename = bfd_asymbol_name (file); ++ cache->filename = bfd_asymbol_name (file); + } + if (state == nothing_seen) + state = symbol_seen; + } + } + +- if (func == NULL) ++ if (cache->func == NULL) + return FALSE; + + if (filename_ptr) +- *filename_ptr = filename; ++ *filename_ptr = cache->filename; + if (functionname_ptr) +- *functionname_ptr = bfd_asymbol_name (func); ++ *functionname_ptr = bfd_asymbol_name (cache->func); + + return TRUE; + } +diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c +index a287fbb..2acf84c 100644 +--- a/bfd/elf32-arm.c ++++ b/bfd/elf32-arm.c +@@ -63,6 +63,9 @@ + #define ARM_ELF_ABI_VERSION 0 + #define ARM_ELF_OS_ABI_VERSION ELFOSABI_ARM + ++/* The Adjusted Place, as defined by AAELF. */ ++#define Pa(X) ((X) & 0xfffffffc) ++ + static bfd_boolean elf32_arm_write_section (bfd *output_bfd, + struct bfd_link_info *link_info, + asection *sec, +@@ -2209,21 +2212,21 @@ static const bfd_vma elf32_arm_nacl_plt0_entry [] = + 0xe08cc00f, /* add ip, ip, pc */ + 0xe52dc008, /* str ip, [sp, #-8]! */ + /* Second bundle: */ +- 0xe7dfcf1f, /* bfc ip, #30, #2 */ +- 0xe59cc000, /* ldr ip, [ip] */ ++ 0xe3ccc103, /* bic ip, ip, #0xc0000000 */ ++ 0xe59cc000, /* ldr ip, [ip] */ + 0xe3ccc13f, /* bic ip, ip, #0xc000000f */ +- 0xe12fff1c, /* bx ip */ ++ 0xe12fff1c, /* bx ip */ + /* Third bundle: */ +- 0xe320f000, /* nop */ +- 0xe320f000, /* nop */ +- 0xe320f000, /* nop */ ++ 0xe320f000, /* nop */ ++ 0xe320f000, /* nop */ ++ 0xe320f000, /* nop */ + /* .Lplt_tail: */ + 0xe50dc004, /* str ip, [sp, #-4] */ + /* Fourth bundle: */ +- 0xe7dfcf1f, /* bfc ip, #30, #2 */ +- 0xe59cc000, /* ldr ip, [ip] */ ++ 0xe3ccc103, /* bic ip, ip, #0xc0000000 */ ++ 0xe59cc000, /* ldr ip, [ip] */ + 0xe3ccc13f, /* bic ip, ip, #0xc000000f */ +- 0xe12fff1c, /* bx ip */ ++ 0xe12fff1c, /* bx ip */ + }; + #define ARM_NACL_PLT_TAIL_OFFSET (11 * 4) + +@@ -4984,6 +4987,9 @@ elf32_arm_size_stubs (bfd *output_bfd, + asection *section; + Elf_Internal_Sym *local_syms = NULL; + ++ if (!is_arm_elf (input_bfd)) ++ continue; ++ + num_a8_relocs = 0; + + /* We'll need the symbol table in a second. */ +@@ -8619,9 +8625,9 @@ elf32_arm_final_link_relocate (reloc_howto_type * howto, + } + + relocation = value + signed_addend; +- relocation -= (input_section->output_section->vma +- + input_section->output_offset +- + rel->r_offset); ++ relocation -= Pa (input_section->output_section->vma ++ + input_section->output_offset ++ + rel->r_offset); + + value = abs (relocation); + +@@ -8651,12 +8657,12 @@ elf32_arm_final_link_relocate (reloc_howto_type * howto, + insn = bfd_get_16 (input_bfd, hit_data); + + if (globals->use_rel) +- addend = (insn & 0x00ff) << 2; ++ addend = ((((insn & 0x00ff) << 2) + 4) & 0x3ff) -4; + + relocation = value + addend; +- relocation -= (input_section->output_section->vma +- + input_section->output_offset +- + rel->r_offset); ++ relocation -= Pa (input_section->output_section->vma ++ + input_section->output_offset ++ + rel->r_offset); + + value = abs (relocation); + +@@ -8691,9 +8697,9 @@ elf32_arm_final_link_relocate (reloc_howto_type * howto, + } + + relocation = value + signed_addend; +- relocation -= (input_section->output_section->vma +- + input_section->output_offset +- + rel->r_offset); ++ relocation -= Pa (input_section->output_section->vma ++ + input_section->output_offset ++ + rel->r_offset); + + value = abs (relocation); + +diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c +index 7d3652d..0a6b22e 100644 +--- a/bfd/elf32-i386.c ++++ b/bfd/elf32-i386.c +@@ -2066,10 +2066,44 @@ elf_i386_adjust_dynamic_symbol (struct bfd_link_info *info, + { + struct elf_i386_link_hash_table *htab; + asection *s; ++ struct elf_i386_link_hash_entry *eh; ++ struct elf_dyn_relocs *p; + + /* STT_GNU_IFUNC symbol must go through PLT. */ + if (h->type == STT_GNU_IFUNC) + { ++ /* All local STT_GNU_IFUNC references must be treate as local ++ calls via local PLT. */ ++ if (h->ref_regular ++ && SYMBOL_CALLS_LOCAL (info, h)) ++ { ++ bfd_size_type pc_count = 0, count = 0; ++ struct elf_dyn_relocs **pp; ++ ++ eh = (struct elf_i386_link_hash_entry *) h; ++ for (pp = &eh->dyn_relocs; (p = *pp) != NULL; ) ++ { ++ pc_count += p->pc_count; ++ p->count -= p->pc_count; ++ p->pc_count = 0; ++ count += p->count; ++ if (p->count == 0) ++ *pp = p->next; ++ else ++ pp = &p->next; ++ } ++ ++ if (pc_count || count) ++ { ++ h->needs_plt = 1; ++ h->non_got_ref = 1; ++ if (h->plt.refcount <= 0) ++ h->plt.refcount = 1; ++ else ++ h->plt.refcount += 1; ++ } ++ } ++ + if (h->plt.refcount <= 0) + { + h->plt.offset = (bfd_vma) -1; +@@ -2155,9 +2189,6 @@ elf_i386_adjust_dynamic_symbol (struct bfd_link_info *info, + if (ELIMINATE_COPY_RELOCS + && !get_elf_i386_backend_data (info->output_bfd)->is_vxworks) + { +- struct elf_i386_link_hash_entry * eh; +- struct elf_dyn_relocs *p; +- + eh = (struct elf_i386_link_hash_entry *) h; + for (p = eh->dyn_relocs; p != NULL; p = p->next) + { +@@ -3257,7 +3288,6 @@ elf_i386_relocate_section (bfd *output_bfd, + if (info->shared && h->non_got_ref) + { + Elf_Internal_Rela outrel; +- bfd_byte *loc; + asection *sreloc; + bfd_vma offset; + +@@ -3291,10 +3321,7 @@ elf_i386_relocate_section (bfd *output_bfd, + outrel.r_info = ELF32_R_INFO (h->dynindx, r_type); + + sreloc = htab->elf.irelifunc; +- loc = sreloc->contents; +- loc += (sreloc->reloc_count++ +- * sizeof (Elf32_External_Rel)); +- bfd_elf32_swap_reloc_out (output_bfd, &outrel, loc); ++ elf_append_rel (output_bfd, sreloc, &outrel); + + /* If this reloc is against an external symbol, we + do not want to fiddle with the addend. Otherwise, +@@ -3448,7 +3475,6 @@ elf_i386_relocate_section (bfd *output_bfd, + { + asection *s; + Elf_Internal_Rela outrel; +- bfd_byte *loc; + + s = htab->elf.srelgot; + if (s == NULL) +@@ -3458,9 +3484,7 @@ elf_i386_relocate_section (bfd *output_bfd, + + htab->elf.sgot->output_offset + + off); + outrel.r_info = ELF32_R_INFO (0, R_386_RELATIVE); +- loc = s->contents; +- loc += s->reloc_count++ * sizeof (Elf32_External_Rel); +- bfd_elf32_swap_reloc_out (output_bfd, &outrel, loc); ++ elf_append_rel (output_bfd, s, &outrel); + } + + local_got_offsets[r_symndx] |= 1; +@@ -3588,7 +3612,6 @@ elf_i386_relocate_section (bfd *output_bfd, + || h->root.type == bfd_link_hash_undefined))) + { + Elf_Internal_Rela outrel; +- bfd_byte *loc; + bfd_boolean skip, relocate; + asection *sreloc; + +@@ -3633,10 +3656,7 @@ elf_i386_relocate_section (bfd *output_bfd, + goto check_relocation_error; + } + +- loc = sreloc->contents; +- loc += sreloc->reloc_count++ * sizeof (Elf32_External_Rel); +- +- bfd_elf32_swap_reloc_out (output_bfd, &outrel, loc); ++ elf_append_rel (output_bfd, sreloc, &outrel); + + /* If this reloc is against an external symbol, we do + not want to fiddle with the addend. Otherwise, we +@@ -3651,7 +3671,6 @@ elf_i386_relocate_section (bfd *output_bfd, + if (!info->executable) + { + Elf_Internal_Rela outrel; +- bfd_byte *loc; + asection *sreloc; + + outrel.r_offset = rel->r_offset +@@ -3661,9 +3680,7 @@ elf_i386_relocate_section (bfd *output_bfd, + sreloc = elf_section_data (input_section)->sreloc; + if (sreloc == NULL) + abort (); +- loc = sreloc->contents; +- loc += sreloc->reloc_count++ * sizeof (Elf32_External_Rel); +- bfd_elf32_swap_reloc_out (output_bfd, &outrel, loc); ++ elf_append_rel (output_bfd, sreloc, &outrel); + } + /* Fall through */ + +@@ -3889,7 +3906,6 @@ elf_i386_relocate_section (bfd *output_bfd, + else + { + Elf_Internal_Rela outrel; +- bfd_byte *loc; + int dr_type; + asection *sreloc; + +@@ -3900,6 +3916,7 @@ elf_i386_relocate_section (bfd *output_bfd, + + if (GOT_TLS_GDESC_P (tls_type)) + { ++ bfd_byte *loc; + outrel.r_info = ELF32_R_INFO (indx, R_386_TLS_DESC); + BFD_ASSERT (htab->sgotplt_jump_table_size + offplt + 8 + <= htab->elf.sgotplt->size); +@@ -3912,7 +3929,7 @@ elf_i386_relocate_section (bfd *output_bfd, + loc += (htab->next_tls_desc_index++ + * sizeof (Elf32_External_Rel)); + BFD_ASSERT (loc + sizeof (Elf32_External_Rel) +- <= sreloc->contents + sreloc->size); ++ <= sreloc->contents + sreloc->size); + bfd_elf32_swap_reloc_out (output_bfd, &outrel, loc); + if (indx == 0) + { +@@ -3957,11 +3974,7 @@ elf_i386_relocate_section (bfd *output_bfd, + htab->elf.sgot->contents + off); + outrel.r_info = ELF32_R_INFO (indx, dr_type); + +- loc = sreloc->contents; +- loc += sreloc->reloc_count++ * sizeof (Elf32_External_Rel); +- BFD_ASSERT (loc + sizeof (Elf32_External_Rel) +- <= sreloc->contents + sreloc->size); +- bfd_elf32_swap_reloc_out (output_bfd, &outrel, loc); ++ elf_append_rel (output_bfd, sreloc, &outrel); + + if (GOT_TLS_GD_P (tls_type)) + { +@@ -3979,11 +3992,7 @@ elf_i386_relocate_section (bfd *output_bfd, + outrel.r_info = ELF32_R_INFO (indx, + R_386_TLS_DTPOFF32); + outrel.r_offset += 4; +- sreloc->reloc_count++; +- loc += sizeof (Elf32_External_Rel); +- BFD_ASSERT (loc + sizeof (Elf32_External_Rel) +- <= sreloc->contents + sreloc->size); +- bfd_elf32_swap_reloc_out (output_bfd, &outrel, loc); ++ elf_append_rel (output_bfd, sreloc, &outrel); + } + } + else if (tls_type == GOT_TLS_IE_BOTH) +@@ -3995,9 +4004,7 @@ elf_i386_relocate_section (bfd *output_bfd, + htab->elf.sgot->contents + off + 4); + outrel.r_info = ELF32_R_INFO (indx, R_386_TLS_TPOFF); + outrel.r_offset += 4; +- sreloc->reloc_count++; +- loc += sizeof (Elf32_External_Rel); +- bfd_elf32_swap_reloc_out (output_bfd, &outrel, loc); ++ elf_append_rel (output_bfd, sreloc, &outrel); + } + + dr_done: +@@ -4179,7 +4186,6 @@ elf_i386_relocate_section (bfd *output_bfd, + else + { + Elf_Internal_Rela outrel; +- bfd_byte *loc; + + if (htab->elf.srelgot == NULL) + abort (); +@@ -4192,9 +4198,7 @@ elf_i386_relocate_section (bfd *output_bfd, + bfd_put_32 (output_bfd, 0, + htab->elf.sgot->contents + off + 4); + outrel.r_info = ELF32_R_INFO (0, R_386_TLS_DTPMOD32); +- loc = htab->elf.srelgot->contents; +- loc += htab->elf.srelgot->reloc_count++ * sizeof (Elf32_External_Rel); +- bfd_elf32_swap_reloc_out (output_bfd, &outrel, loc); ++ elf_append_rel (output_bfd, htab->elf.srelgot, &outrel); + htab->tls_ldm_got.offset |= 1; + } + relocation = htab->elf.sgot->output_section->vma +@@ -4218,7 +4222,6 @@ elf_i386_relocate_section (bfd *output_bfd, + { + Elf_Internal_Rela outrel; + asection *sreloc; +- bfd_byte *loc; + + outrel.r_offset = rel->r_offset + + input_section->output_section->vma +@@ -4234,9 +4237,7 @@ elf_i386_relocate_section (bfd *output_bfd, + sreloc = elf_section_data (input_section)->sreloc; + if (sreloc == NULL) + abort (); +- loc = sreloc->contents; +- loc += sreloc->reloc_count++ * sizeof (Elf32_External_Rel); +- bfd_elf32_swap_reloc_out (output_bfd, &outrel, loc); ++ elf_append_rel (output_bfd, sreloc, &outrel); + if (indx) + continue; + else if (r_type == R_386_TLS_LE_32) +@@ -4524,7 +4525,6 @@ elf_i386_finish_dynamic_symbol (bfd *output_bfd, + && (elf_i386_hash_entry(h)->tls_type & GOT_TLS_IE) == 0) + { + Elf_Internal_Rela rel; +- bfd_byte *loc; + + /* This symbol has an entry in the global offset table. Set it + up. */ +@@ -4582,15 +4582,12 @@ do_glob_dat: + rel.r_info = ELF32_R_INFO (h->dynindx, R_386_GLOB_DAT); + } + +- loc = htab->elf.srelgot->contents; +- loc += htab->elf.srelgot->reloc_count++ * sizeof (Elf32_External_Rel); +- bfd_elf32_swap_reloc_out (output_bfd, &rel, loc); ++ elf_append_rel (output_bfd, htab->elf.srelgot, &rel); + } + + if (h->needs_copy) + { + Elf_Internal_Rela rel; +- bfd_byte *loc; + + /* This symbol needs a copy reloc. Set it up. */ + +@@ -4604,9 +4601,7 @@ do_glob_dat: + + h->root.u.def.section->output_section->vma + + h->root.u.def.section->output_offset); + rel.r_info = ELF32_R_INFO (h->dynindx, R_386_COPY); +- loc = htab->srelbss->contents; +- loc += htab->srelbss->reloc_count++ * sizeof (Elf32_External_Rel); +- bfd_elf32_swap_reloc_out (output_bfd, &rel, loc); ++ elf_append_rel (output_bfd, htab->srelbss, &rel); + } + + return TRUE; +diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c +index 09b1a02..31bc681 100644 +--- a/bfd/elf32-ppc.c ++++ b/bfd/elf32-ppc.c +@@ -1451,14 +1451,14 @@ static reloc_howto_type ppc_elf_howto_raw[] = { + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ +- FALSE, /* pc_relative */ /* FIXME: Does this apply to split relocs? */ ++ FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_PPC_VLE_LO16A", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ +- 0x1f00fff, /* dst_mask */ ++ 0x1f007ff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* The 16 LSBS in split16d format. */ +@@ -1488,7 +1488,7 @@ static reloc_howto_type ppc_elf_howto_raw[] = { + "R_PPC_VLE_HI16A", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ +- 0x1f00fff, /* dst_mask */ ++ 0x1f007ff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* Bits 16-31 split16d format. */ +@@ -1518,7 +1518,7 @@ static reloc_howto_type ppc_elf_howto_raw[] = { + "R_PPC_VLE_HA16A", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ +- 0x1f00fff, /* dst_mask */ ++ 0x1f007ff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* Bits 16-31 (High Adjusted) in split16d format. */ +@@ -1578,7 +1578,7 @@ static reloc_howto_type ppc_elf_howto_raw[] = { + "R_PPC_VLE_SDAREL_LO16A", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ +- 0x1f00fff, /* dst_mask */ ++ 0x1f007ff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* The 16 LSBS relative to _SDA_BASE_ in split16d format. */ +@@ -1609,7 +1609,7 @@ static reloc_howto_type ppc_elf_howto_raw[] = { + "R_PPC_VLE_SDAREL_HI16A", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ +- 0x1f00fff, /* dst_mask */ ++ 0x1f007ff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* Bits 16-31 relative to _SDA_BASE_ in split16d format. */ +@@ -1639,7 +1639,7 @@ static reloc_howto_type ppc_elf_howto_raw[] = { + "R_PPC_VLE_SDAREL_HA16A", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ +- 0x1f00fff, /* dst_mask */ ++ 0x1f007ff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* Bits 16-31 (HA) relative to _SDA_BASE split16d format. */ +@@ -1815,7 +1815,9 @@ ppc_elf_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, + case BFD_RELOC_NONE: r = R_PPC_NONE; break; + case BFD_RELOC_32: r = R_PPC_ADDR32; break; + case BFD_RELOC_PPC_BA26: r = R_PPC_ADDR24; break; ++ case BFD_RELOC_PPC64_ADDR16_DS: + case BFD_RELOC_16: r = R_PPC_ADDR16; break; ++ case BFD_RELOC_PPC64_ADDR16_LO_DS: + case BFD_RELOC_LO16: r = R_PPC_ADDR16_LO; break; + case BFD_RELOC_HI16: r = R_PPC_ADDR16_HI; break; + case BFD_RELOC_HI16_S: r = R_PPC_ADDR16_HA; break; +@@ -1826,7 +1828,9 @@ ppc_elf_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, + case BFD_RELOC_PPC_B16: r = R_PPC_REL14; break; + case BFD_RELOC_PPC_B16_BRTAKEN: r = R_PPC_REL14_BRTAKEN; break; + case BFD_RELOC_PPC_B16_BRNTAKEN: r = R_PPC_REL14_BRNTAKEN; break; ++ case BFD_RELOC_PPC64_GOT16_DS: + case BFD_RELOC_16_GOTOFF: r = R_PPC_GOT16; break; ++ case BFD_RELOC_PPC64_GOT16_LO_DS: + case BFD_RELOC_LO16_GOTOFF: r = R_PPC_GOT16_LO; break; + case BFD_RELOC_HI16_GOTOFF: r = R_PPC_GOT16_HI; break; + case BFD_RELOC_HI16_S_GOTOFF: r = R_PPC_GOT16_HA; break; +@@ -1837,26 +1841,34 @@ ppc_elf_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, + case BFD_RELOC_32_PCREL: r = R_PPC_REL32; break; + case BFD_RELOC_32_PLTOFF: r = R_PPC_PLT32; break; + case BFD_RELOC_32_PLT_PCREL: r = R_PPC_PLTREL32; break; ++ case BFD_RELOC_PPC64_PLT16_LO_DS: + case BFD_RELOC_LO16_PLTOFF: r = R_PPC_PLT16_LO; break; + case BFD_RELOC_HI16_PLTOFF: r = R_PPC_PLT16_HI; break; + case BFD_RELOC_HI16_S_PLTOFF: r = R_PPC_PLT16_HA; break; + case BFD_RELOC_GPREL16: r = R_PPC_SDAREL16; break; ++ case BFD_RELOC_PPC64_SECTOFF_DS: + case BFD_RELOC_16_BASEREL: r = R_PPC_SECTOFF; break; ++ case BFD_RELOC_PPC64_SECTOFF_LO_DS: + case BFD_RELOC_LO16_BASEREL: r = R_PPC_SECTOFF_LO; break; + case BFD_RELOC_HI16_BASEREL: r = R_PPC_SECTOFF_HI; break; + case BFD_RELOC_HI16_S_BASEREL: r = R_PPC_SECTOFF_HA; break; + case BFD_RELOC_CTOR: r = R_PPC_ADDR32; break; ++ case BFD_RELOC_PPC64_TOC16_DS: + case BFD_RELOC_PPC_TOC16: r = R_PPC_TOC16; break; + case BFD_RELOC_PPC_TLS: r = R_PPC_TLS; break; + case BFD_RELOC_PPC_TLSGD: r = R_PPC_TLSGD; break; + case BFD_RELOC_PPC_TLSLD: r = R_PPC_TLSLD; break; + case BFD_RELOC_PPC_DTPMOD: r = R_PPC_DTPMOD32; break; ++ case BFD_RELOC_PPC64_TPREL16_DS: + case BFD_RELOC_PPC_TPREL16: r = R_PPC_TPREL16; break; ++ case BFD_RELOC_PPC64_TPREL16_LO_DS: + case BFD_RELOC_PPC_TPREL16_LO: r = R_PPC_TPREL16_LO; break; + case BFD_RELOC_PPC_TPREL16_HI: r = R_PPC_TPREL16_HI; break; + case BFD_RELOC_PPC_TPREL16_HA: r = R_PPC_TPREL16_HA; break; + case BFD_RELOC_PPC_TPREL: r = R_PPC_TPREL32; break; ++ case BFD_RELOC_PPC64_DTPREL16_DS: + case BFD_RELOC_PPC_DTPREL16: r = R_PPC_DTPREL16; break; ++ case BFD_RELOC_PPC64_DTPREL16_LO_DS: + case BFD_RELOC_PPC_DTPREL16_LO: r = R_PPC_DTPREL16_LO; break; + case BFD_RELOC_PPC_DTPREL16_HI: r = R_PPC_DTPREL16_HI; break; + case BFD_RELOC_PPC_DTPREL16_HA: r = R_PPC_DTPREL16_HA; break; +@@ -7243,6 +7255,21 @@ _bfd_elf_ppc_at_tprel_transform (unsigned int insn, unsigned int reg) + return insn; + } + ++static bfd_boolean ++is_insn_ds_form (unsigned int insn) ++{ ++ return ((insn & (0x3f << 26)) == 58u << 26 /* ld,ldu,lwa */ ++ || (insn & (0x3f << 26)) == 62u << 26 /* std,stdu,stq */ ++ || (insn & (0x3f << 26)) == 57u << 26 /* lfdp */ ++ || (insn & (0x3f << 26)) == 61u << 26 /* stfdp */); ++} ++ ++static bfd_boolean ++is_insn_dq_form (unsigned int insn) ++{ ++ return (insn & (0x3f << 26)) == 56u << 26; /* lq */ ++} ++ + /* The RELOCATE_SECTION function is called by the ELF backend linker + to handle the relocations for a section. + +@@ -8788,6 +8815,54 @@ ppc_elf_relocate_section (bfd *output_bfd, + Bits 0:15 are not used. */ + addend += 0x8000; + break; ++ ++ case R_PPC_ADDR16: ++ case R_PPC_ADDR16_LO: ++ case R_PPC_GOT16: ++ case R_PPC_GOT16_LO: ++ case R_PPC_SDAREL16: ++ case R_PPC_SECTOFF: ++ case R_PPC_SECTOFF_LO: ++ case R_PPC_DTPREL16: ++ case R_PPC_DTPREL16_LO: ++ case R_PPC_TPREL16: ++ case R_PPC_TPREL16_LO: ++ case R_PPC_GOT_TLSGD16: ++ case R_PPC_GOT_TLSGD16_LO: ++ case R_PPC_GOT_TLSLD16: ++ case R_PPC_GOT_TLSLD16_LO: ++ case R_PPC_GOT_DTPREL16: ++ case R_PPC_GOT_DTPREL16_LO: ++ case R_PPC_GOT_TPREL16: ++ case R_PPC_GOT_TPREL16_LO: ++ { ++ /* The 32-bit ABI lacks proper relocations to deal with ++ certain 64-bit instructions. Prevent damage to bits ++ that make up part of the insn opcode. */ ++ unsigned int insn, mask, lobit; ++ ++ insn = bfd_get_32 (output_bfd, contents + rel->r_offset - d_offset); ++ mask = 0; ++ if (is_insn_ds_form (insn)) ++ mask = 3; ++ else if (is_insn_dq_form (insn)) ++ mask = 15; ++ else ++ break; ++ lobit = mask & (relocation + addend); ++ if (lobit != 0) ++ { ++ addend -= lobit; ++ info->callbacks->einfo ++ (_("%P: %H: error: %s against `%s' not a multiple of %u\n"), ++ input_bfd, input_section, rel->r_offset, ++ howto->name, sym_name, mask + 1); ++ bfd_set_error (bfd_error_bad_value); ++ ret = FALSE; ++ } ++ addend += insn & mask; ++ } ++ break; + } + + #ifdef DEBUG +diff --git a/bfd/elf32-sh.c b/bfd/elf32-sh.c +index cbd00aa..840b488 100644 +--- a/bfd/elf32-sh.c ++++ b/bfd/elf32-sh.c +@@ -2549,7 +2549,7 @@ sh_elf_link_hash_table_create (bfd *abfd) + struct elf_sh_link_hash_table *ret; + bfd_size_type amt = sizeof (struct elf_sh_link_hash_table); + +- ret = (struct elf_sh_link_hash_table *) bfd_malloc (amt); ++ ret = (struct elf_sh_link_hash_table *) bfd_zmalloc (amt); + if (ret == (struct elf_sh_link_hash_table *) NULL) + return NULL; + +@@ -2562,17 +2562,6 @@ sh_elf_link_hash_table_create (bfd *abfd) + return NULL; + } + +- ret->sgot = NULL; +- ret->sgotplt = NULL; +- ret->srelgot = NULL; +- ret->splt = NULL; +- ret->srelplt = NULL; +- ret->sdynbss = NULL; +- ret->srelbss = NULL; +- ret->srelplt2 = NULL; +- ret->sym_cache.abfd = NULL; +- ret->tls_ldm_got.refcount = 0; +- ret->plt_info = NULL; + ret->vxworks_p = vxworks_object_p (abfd); + ret->fdpic_p = fdpic_object_p (abfd); + +diff --git a/bfd/elf32-tilepro.c b/bfd/elf32-tilepro.c +index 9dff9e5..ce3773a 100644 +--- a/bfd/elf32-tilepro.c ++++ b/bfd/elf32-tilepro.c +@@ -1858,11 +1858,33 @@ tilepro_elf_gc_mark_hook (asection *sec, + if (h != NULL) + { + switch (ELF32_R_TYPE (rel->r_info)) +- { +- case R_TILEPRO_GNU_VTINHERIT: +- case R_TILEPRO_GNU_VTENTRY: +- break; +- } ++ { ++ case R_TILEPRO_GNU_VTINHERIT: ++ case R_TILEPRO_GNU_VTENTRY: ++ return NULL; ++ } ++ } ++ ++ /* FIXME: The test here, in check_relocs and in relocate_section ++ dealing with TLS optimization, ought to be !info->executable. */ ++ if (info->shared) ++ { ++ switch (ELF32_R_TYPE (rel->r_info)) ++ { ++ case R_TILEPRO_TLS_GD_CALL: ++ /* This reloc implicitly references __tls_get_addr. We know ++ another reloc will reference the same symbol as the one ++ on this reloc, so the real symbol and section will be ++ gc marked when processing the other reloc. That lets ++ us handle __tls_get_addr here. */ ++ h = elf_link_hash_lookup (elf_hash_table (info), "__tls_get_addr", ++ FALSE, FALSE, TRUE); ++ BFD_ASSERT (h != NULL); ++ h->mark = 1; ++ if (h->u.weakdef != NULL) ++ h->u.weakdef->mark = 1; ++ sym = NULL; ++ } + } + + return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym); +diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c +index e67bb8f..37775eb 100644 +--- a/bfd/elf64-ppc.c ++++ b/bfd/elf64-ppc.c +@@ -6608,7 +6608,7 @@ ppc64_elf_adjust_dynamic_symbol (struct bfd_link_info *info, + sections. Allow them to proceed, but warn that this might + break at runtime. */ + info->callbacks->einfo +- (_("%P: copy reloc against `%s' requires lazy plt linking; " ++ (_("%P: copy reloc against `%T' requires lazy plt linking; " + "avoid setting LD_BIND_NOW=1 or upgrade gcc\n"), + h->root.root.string); + } +@@ -7053,14 +7053,15 @@ dec_dynrel_count (bfd_vma r_info, + void *vpp = &elf_section_data (sec)->local_dynrel; + pp = (struct elf_dyn_relocs **) vpp; + } +- +- /* elf_gc_sweep may have already removed all dyn relocs associated +- with local syms for a given section. Don't report a dynreloc +- miscount. */ +- if (*pp == NULL) +- return TRUE; + } + ++ /* elf_gc_sweep may have already removed all dyn relocs associated ++ with local syms for a given section. Also, symbol flags are ++ changed by elf_gc_sweep_symbol, confusing the test above. Don't ++ report a dynreloc miscount. */ ++ if (*pp == NULL && info->gc_sections) ++ return TRUE; ++ + while ((p = *pp) != NULL) + { + if (p->sec == sec) +@@ -8372,150 +8373,156 @@ ppc64_elf_edit_toc (struct bfd_link_info *info) + goto error_ret; + + /* Mark toc entries referenced as used. */ +- repeat = 0; + do +- for (rel = relstart; rel < relstart + sec->reloc_count; ++rel) +- { +- enum elf_ppc64_reloc_type r_type; +- unsigned long r_symndx; +- asection *sym_sec; +- struct elf_link_hash_entry *h; +- Elf_Internal_Sym *sym; +- bfd_vma val; +- enum {no_check, check_lo, check_ha} insn_check; +- +- r_type = ELF64_R_TYPE (rel->r_info); +- switch (r_type) +- { +- default: +- insn_check = no_check; +- break; ++ { ++ repeat = 0; ++ for (rel = relstart; rel < relstart + sec->reloc_count; ++rel) ++ { ++ enum elf_ppc64_reloc_type r_type; ++ unsigned long r_symndx; ++ asection *sym_sec; ++ struct elf_link_hash_entry *h; ++ Elf_Internal_Sym *sym; ++ bfd_vma val; ++ enum {no_check, check_lo, check_ha} insn_check; + +- case R_PPC64_GOT_TLSLD16_HA: +- case R_PPC64_GOT_TLSGD16_HA: +- case R_PPC64_GOT_TPREL16_HA: +- case R_PPC64_GOT_DTPREL16_HA: +- case R_PPC64_GOT16_HA: +- case R_PPC64_TOC16_HA: +- insn_check = check_ha; +- break; ++ r_type = ELF64_R_TYPE (rel->r_info); ++ switch (r_type) ++ { ++ default: ++ insn_check = no_check; ++ break; + +- case R_PPC64_GOT_TLSLD16_LO: +- case R_PPC64_GOT_TLSGD16_LO: +- case R_PPC64_GOT_TPREL16_LO_DS: +- case R_PPC64_GOT_DTPREL16_LO_DS: +- case R_PPC64_GOT16_LO: +- case R_PPC64_GOT16_LO_DS: +- case R_PPC64_TOC16_LO: +- case R_PPC64_TOC16_LO_DS: +- insn_check = check_lo; +- break; +- } ++ case R_PPC64_GOT_TLSLD16_HA: ++ case R_PPC64_GOT_TLSGD16_HA: ++ case R_PPC64_GOT_TPREL16_HA: ++ case R_PPC64_GOT_DTPREL16_HA: ++ case R_PPC64_GOT16_HA: ++ case R_PPC64_TOC16_HA: ++ insn_check = check_ha; ++ break; + +- if (insn_check != no_check) +- { +- bfd_vma off = rel->r_offset & ~3; +- unsigned char buf[4]; +- unsigned int insn; ++ case R_PPC64_GOT_TLSLD16_LO: ++ case R_PPC64_GOT_TLSGD16_LO: ++ case R_PPC64_GOT_TPREL16_LO_DS: ++ case R_PPC64_GOT_DTPREL16_LO_DS: ++ case R_PPC64_GOT16_LO: ++ case R_PPC64_GOT16_LO_DS: ++ case R_PPC64_TOC16_LO: ++ case R_PPC64_TOC16_LO_DS: ++ insn_check = check_lo; ++ break; ++ } + +- if (!bfd_get_section_contents (ibfd, sec, buf, off, 4)) +- { +- free (used); +- goto error_ret; +- } +- insn = bfd_get_32 (ibfd, buf); +- if (insn_check == check_lo +- ? !ok_lo_toc_insn (insn) +- : ((insn & ((0x3f << 26) | 0x1f << 16)) +- != ((15u << 26) | (2 << 16)) /* addis rt,2,imm */)) +- { +- char str[12]; +- +- ppc64_elf_tdata (ibfd)->unexpected_toc_insn = 1; +- sprintf (str, "%#08x", insn); +- info->callbacks->einfo +- (_("%P: %H: toc optimization is not supported for" +- " %s instruction.\n"), +- ibfd, sec, rel->r_offset & ~3, str); +- } +- } ++ if (insn_check != no_check) ++ { ++ bfd_vma off = rel->r_offset & ~3; ++ unsigned char buf[4]; ++ unsigned int insn; + +- switch (r_type) +- { +- case R_PPC64_TOC16: +- case R_PPC64_TOC16_LO: +- case R_PPC64_TOC16_HI: +- case R_PPC64_TOC16_HA: +- case R_PPC64_TOC16_DS: +- case R_PPC64_TOC16_LO_DS: +- /* In case we're taking addresses of toc entries. */ +- case R_PPC64_ADDR64: +- break; ++ if (!bfd_get_section_contents (ibfd, sec, buf, off, 4)) ++ { ++ free (used); ++ goto error_ret; ++ } ++ insn = bfd_get_32 (ibfd, buf); ++ if (insn_check == check_lo ++ ? !ok_lo_toc_insn (insn) ++ : ((insn & ((0x3f << 26) | 0x1f << 16)) ++ != ((15u << 26) | (2 << 16)) /* addis rt,2,imm */)) ++ { ++ char str[12]; + +- default: +- continue; +- } ++ ppc64_elf_tdata (ibfd)->unexpected_toc_insn = 1; ++ sprintf (str, "%#08x", insn); ++ info->callbacks->einfo ++ (_("%P: %H: toc optimization is not supported for" ++ " %s instruction.\n"), ++ ibfd, sec, rel->r_offset & ~3, str); ++ } ++ } + +- r_symndx = ELF64_R_SYM (rel->r_info); +- if (!get_sym_h (&h, &sym, &sym_sec, NULL, &local_syms, +- r_symndx, ibfd)) +- { +- free (used); +- goto error_ret; +- } ++ switch (r_type) ++ { ++ case R_PPC64_TOC16: ++ case R_PPC64_TOC16_LO: ++ case R_PPC64_TOC16_HI: ++ case R_PPC64_TOC16_HA: ++ case R_PPC64_TOC16_DS: ++ case R_PPC64_TOC16_LO_DS: ++ /* In case we're taking addresses of toc entries. */ ++ case R_PPC64_ADDR64: ++ break; + +- if (sym_sec != toc) +- continue; ++ default: ++ continue; ++ } + +- if (h != NULL) +- val = h->root.u.def.value; +- else +- val = sym->st_value; +- val += rel->r_addend; ++ r_symndx = ELF64_R_SYM (rel->r_info); ++ if (!get_sym_h (&h, &sym, &sym_sec, NULL, &local_syms, ++ r_symndx, ibfd)) ++ { ++ free (used); ++ goto error_ret; ++ } + +- if (val >= toc->size) +- continue; ++ if (sym_sec != toc) ++ continue; + +- if ((skip[val >> 3] & can_optimize) != 0) +- { +- bfd_vma off; +- unsigned char opc; ++ if (h != NULL) ++ val = h->root.u.def.value; ++ else ++ val = sym->st_value; ++ val += rel->r_addend; + +- switch (r_type) +- { +- case R_PPC64_TOC16_HA: +- break; ++ if (val >= toc->size) ++ continue; + +- case R_PPC64_TOC16_LO_DS: +- off = rel->r_offset + (bfd_big_endian (ibfd) ? -2 : 3); +- if (!bfd_get_section_contents (ibfd, sec, &opc, off, 1)) +- { +- free (used); +- goto error_ret; +- } +- if ((opc & (0x3f << 2)) == (58u << 2)) ++ if ((skip[val >> 3] & can_optimize) != 0) ++ { ++ bfd_vma off; ++ unsigned char opc; ++ ++ switch (r_type) ++ { ++ case R_PPC64_TOC16_HA: + break; +- /* Fall thru */ + +- default: +- /* Wrong sort of reloc, or not a ld. We may +- as well clear ref_from_discarded too. */ +- skip[val >> 3] = 0; +- } +- } ++ case R_PPC64_TOC16_LO_DS: ++ off = rel->r_offset; ++ off += (bfd_big_endian (ibfd) ? -2 : 3); ++ if (!bfd_get_section_contents (ibfd, sec, &opc, ++ off, 1)) ++ { ++ free (used); ++ goto error_ret; ++ } ++ if ((opc & (0x3f << 2)) == (58u << 2)) ++ break; ++ /* Fall thru */ + +- /* For the toc section, we only mark as used if +- this entry itself isn't unused. */ +- if (sec == toc +- && !used[val >> 3] +- && (used[rel->r_offset >> 3] +- || !(skip[rel->r_offset >> 3] & ref_from_discarded))) +- /* Do all the relocs again, to catch reference +- chains. */ +- repeat = 1; +- +- used[val >> 3] = 1; +- } ++ default: ++ /* Wrong sort of reloc, or not a ld. We may ++ as well clear ref_from_discarded too. */ ++ skip[val >> 3] = 0; ++ } ++ } ++ ++ if (sec != toc) ++ used[val >> 3] = 1; ++ /* For the toc section, we only mark as used if this ++ entry itself isn't unused. */ ++ else if ((used[rel->r_offset >> 3] ++ || !(skip[rel->r_offset >> 3] & ref_from_discarded)) ++ && !used[val >> 3]) ++ { ++ /* Do all the relocs again, to catch reference ++ chains. */ ++ repeat = 1; ++ used[val >> 3] = 1; ++ } ++ } ++ } + while (repeat); + + if (elf_section_data (sec)->relocs != relstart) +@@ -8657,7 +8664,7 @@ ppc64_elf_edit_toc (struct bfd_link_info *info) + if (!ppc64_elf_howto_table[R_PPC64_ADDR32]) + ppc_howto_init (); + info->callbacks->einfo +- (_("%P: %H: %s relocation references " ++ (_("%P: %H: %s references " + "optimized away TOC entry\n"), + ibfd, sec, rel->r_offset, + ppc64_elf_howto_table[r_type]->name); +@@ -9644,8 +9651,8 @@ build_plt_stub (struct ppc_link_hash_table *htab, + bfd_vma glinkoff = GLINK_CALL_STUB_SIZE + pltindex * 8; + bfd_vma to, from; + +- if (pltindex > 32767) +- glinkoff += (pltindex - 32767) * 4; ++ if (pltindex > 32768) ++ glinkoff += (pltindex - 32768) * 4; + to = (glinkoff + + htab->glink->output_offset + + htab->glink->output_section->vma); +@@ -9763,7 +9770,7 @@ build_plt_stub (struct ppc_link_hash_table *htab, + { + bfd_put_32 (obfd, CMPLDI_R2_0, p), p += 4; + bfd_put_32 (obfd, BNECTR_P4, p), p += 4; +- bfd_put_32 (obfd, B_DOT + cmp_branch_off, p), p += 4; ++ bfd_put_32 (obfd, B_DOT | (cmp_branch_off & 0x3fffffc), p), p += 4; + } + else + bfd_put_32 (obfd, BCTR, p), p += 4; +@@ -9864,7 +9871,7 @@ get_r2off (struct bfd_link_info *info, + if (strcmp (opd->name, ".opd") != 0 + || opd->reloc_count != 0) + { +- info->callbacks->einfo (_("%P: cannot find opd entry toc for %s\n"), ++ info->callbacks->einfo (_("%P: cannot find opd entry toc for `%T'\n"), + stub_entry->h->elf.root.root.string); + bfd_set_error (bfd_error_bad_value); + return 0; +@@ -9946,8 +9953,9 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + + if (off + (1 << 25) >= (bfd_vma) (1 << 26)) + { +- info->callbacks->einfo (_("%P: long branch stub `%s' offset overflow\n"), +- stub_entry->root.string); ++ info->callbacks->einfo ++ (_("%P: long branch stub `%s' offset overflow\n"), ++ stub_entry->root.string); + htab->stub_error = TRUE; + return FALSE; + } +@@ -10067,7 +10075,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + if (off + 0x80008000 > 0xffffffff || (off & 7) != 0) + { + info->callbacks->einfo +- (_("%P: linkage table error against `%s'\n"), ++ (_("%P: linkage table error against `%T'\n"), + stub_entry->root.string); + bfd_set_error (bfd_error_bad_value); + htab->stub_error = TRUE; +@@ -10210,7 +10218,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + if (off + 0x80008000 > 0xffffffff || (off & 7) != 0) + { + info->callbacks->einfo +- (_("%P: linkage table error against `%s'\n"), ++ (_("%P: linkage table error against `%T'\n"), + stub_entry->h != NULL + ? stub_entry->h->elf.root.root.string + : ""); +@@ -11294,6 +11302,7 @@ maybe_strip_output (struct bfd_link_info *info, asection *isec) + { + if (isec->size == 0 + && isec->output_section->size == 0 ++ && !(isec->output_section->flags & SEC_KEEP) + && !bfd_section_removed_from_list (info->output_bfd, + isec->output_section) + && elf_section_data (isec->output_section)->dynindx == 0) +@@ -11324,9 +11333,11 @@ ppc64_elf_size_stubs (struct bfd_link_info *info, bfd_signed_vma group_size, + + htab->plt_static_chain = plt_static_chain; + htab->plt_stub_align = plt_stub_align; ++ if (plt_thread_safe == -1 && !info->executable) ++ plt_thread_safe = 1; + if (plt_thread_safe == -1) + { +- const char *const thread_starter[] = ++ static const char *const thread_starter[] = + { + "pthread_create", + /* libstdc++ */ +@@ -12264,6 +12275,7 @@ ppc64_elf_relocate_section (bfd *output_bfd, + bfd_vma relocation; + bfd_boolean unresolved_reloc; + bfd_boolean warned; ++ enum { DEST_NORMAL, DEST_OPD, DEST_STUB } reloc_dest; + unsigned int insn; + unsigned int mask; + struct ppc_stub_hash_entry *stub_entry; +@@ -12421,8 +12433,8 @@ ppc64_elf_relocate_section (bfd *output_bfd, + else + info->callbacks->einfo + (!IS_PPC64_TLS_RELOC (r_type) +- ? _("%P: %H: %s used with TLS symbol %s\n") +- : _("%P: %H: %s used with non-TLS symbol %s\n"), ++ ? _("%P: %H: %s used with TLS symbol `%T'\n") ++ : _("%P: %H: %s used with non-TLS symbol `%T'\n"), + input_bfd, input_section, rel->r_offset, + ppc64_elf_howto_table[r_type]->name, + sym_name); +@@ -12828,6 +12840,7 @@ ppc64_elf_relocate_section (bfd *output_bfd, + insn = 0; + max_br_offset = 1 << 25; + addend = rel->r_addend; ++ reloc_dest = DEST_NORMAL; + switch (r_type) + { + default: +@@ -12933,25 +12946,11 @@ ppc64_elf_relocate_section (bfd *output_bfd, + } + else + { +- if (strcmp (input_section->output_section->name, +- ".init") == 0 +- || strcmp (input_section->output_section->name, +- ".fini") == 0) +- info->callbacks->einfo +- (_("%P: %H: automatic multiple TOCs " +- "not supported using your crt files; " +- "recompile with -mminimal-toc or upgrade gcc\n"), +- input_bfd, input_section, rel->r_offset); +- else +- info->callbacks->einfo +- (_("%P: %H: sibling call optimization to `%s' " +- "does not allow automatic multiple TOCs; " +- "recompile with -mminimal-toc or " +- "-fno-optimize-sibling-calls, " +- "or make `%s' extern\n"), +- input_bfd, input_section, rel->r_offset, +- sym_name, +- sym_name); ++ info->callbacks->einfo ++ (_("%P: %H: call to `%T' lacks nop, can't restore toc; " ++ "recompile with -fPIC"), ++ input_bfd, input_section, rel->r_offset, sym_name); ++ + bfd_set_error (bfd_error_bad_value); + ret = FALSE; + } +@@ -12977,6 +12976,7 @@ ppc64_elf_relocate_section (bfd *output_bfd, + { + relocation = dest; + addend = 0; ++ reloc_dest = DEST_OPD; + } + } + +@@ -13004,6 +13004,7 @@ ppc64_elf_relocate_section (bfd *output_bfd, + + stub_entry->stub_sec->output_offset + + stub_entry->stub_sec->output_section->vma); + addend = 0; ++ reloc_dest = DEST_STUB; + + if ((stub_entry->stub_type == ppc_stub_plt_call + || stub_entry->stub_type == ppc_stub_plt_call_r2save) +@@ -13061,7 +13062,7 @@ ppc64_elf_relocate_section (bfd *output_bfd, + { + default: + info->callbacks->einfo +- (_("%P: %B: unknown relocation type %d for symbol %s\n"), ++ (_("%P: %B: unknown relocation type %d for `%T'\n"), + input_bfd, (int) r_type, sym_name); + + bfd_set_error (bfd_error_bad_value); +@@ -13571,8 +13572,8 @@ ppc64_elf_relocate_section (bfd *output_bfd, + : ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC) + { + info->callbacks->einfo +- (_("%P: %H: relocation %s for indirect " +- "function %s unsupported\n"), ++ (_("%P: %H: %s for indirect " ++ "function `%T' unsupported\n"), + input_bfd, input_section, rel->r_offset, + ppc64_elf_howto_table[r_type]->name, + sym_name); +@@ -13676,7 +13677,7 @@ ppc64_elf_relocate_section (bfd *output_bfd, + /* These ones haven't been implemented yet. */ + + info->callbacks->einfo +- (_("%P: %B: relocation %s is not supported for symbol %s\n"), ++ (_("%P: %B: %s is not supported for `%T'\n"), + input_bfd, + ppc64_elf_howto_table[r_type]->name, sym_name); + +@@ -13846,7 +13847,7 @@ ppc64_elf_relocate_section (bfd *output_bfd, + rel->r_offset) != (bfd_vma) -1) + { + info->callbacks->einfo +- (_("%P: %H: unresolvable %s relocation against symbol `%s'\n"), ++ (_("%P: %H: unresolvable %s against `%T'\n"), + input_bfd, input_section, rel->r_offset, + ppc64_elf_howto_table[(int) r_type]->name, + h->elf.root.root.string); +@@ -13863,8 +13864,21 @@ ppc64_elf_relocate_section (bfd *output_bfd, + + if (r != bfd_reloc_ok) + { +- if (sym_name == NULL) +- sym_name = "(null)"; ++ char *more_info = NULL; ++ const char *reloc_name = ppc64_elf_howto_table[r_type]->name; ++ ++ if (reloc_dest != DEST_NORMAL) ++ { ++ more_info = bfd_malloc (strlen (reloc_name) + 8); ++ if (more_info != NULL) ++ { ++ strcpy (more_info, reloc_name); ++ strcat (more_info, (reloc_dest == DEST_OPD ++ ? " (OPD)" : " (stub)")); ++ reloc_name = more_info; ++ } ++ } ++ + if (r == bfd_reloc_overflow) + { + if (warned) +@@ -13883,22 +13897,21 @@ ppc64_elf_relocate_section (bfd *output_bfd, + } + + if (!((*info->callbacks->reloc_overflow) +- (info, (h ? &h->elf.root : NULL), sym_name, +- ppc64_elf_howto_table[r_type]->name, +- orig_rel.r_addend, input_bfd, input_section, +- rel->r_offset))) ++ (info, &h->elf.root, sym_name, ++ reloc_name, orig_rel.r_addend, ++ input_bfd, input_section, rel->r_offset))) + return FALSE; + } + else + { + info->callbacks->einfo +- (_("%P: %H: %s reloc against `%s': error %d\n"), ++ (_("%P: %H: %s against `%T': error %d\n"), + input_bfd, input_section, rel->r_offset, +- ppc64_elf_howto_table[r_type]->name, +- sym_name, +- (int) r); ++ reloc_name, sym_name, (int) r); + ret = FALSE; + } ++ if (more_info != NULL) ++ free (more_info); + } + } + +diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c +index a29ba8a..a0e2daf 100644 +--- a/bfd/elf64-x86-64.c ++++ b/bfd/elf64-x86-64.c +@@ -2134,10 +2134,44 @@ elf_x86_64_adjust_dynamic_symbol (struct bfd_link_info *info, + { + struct elf_x86_64_link_hash_table *htab; + asection *s; ++ struct elf_x86_64_link_hash_entry *eh; ++ struct elf_dyn_relocs *p; + + /* STT_GNU_IFUNC symbol must go through PLT. */ + if (h->type == STT_GNU_IFUNC) + { ++ /* All local STT_GNU_IFUNC references must be treate as local ++ calls via local PLT. */ ++ if (h->ref_regular ++ && SYMBOL_CALLS_LOCAL (info, h)) ++ { ++ bfd_size_type pc_count = 0, count = 0; ++ struct elf_dyn_relocs **pp; ++ ++ eh = (struct elf_x86_64_link_hash_entry *) h; ++ for (pp = &eh->dyn_relocs; (p = *pp) != NULL; ) ++ { ++ pc_count += p->pc_count; ++ p->count -= p->pc_count; ++ p->pc_count = 0; ++ count += p->count; ++ if (p->count == 0) ++ *pp = p->next; ++ else ++ pp = &p->next; ++ } ++ ++ if (pc_count || count) ++ { ++ h->needs_plt = 1; ++ h->non_got_ref = 1; ++ if (h->plt.refcount <= 0) ++ h->plt.refcount = 1; ++ else ++ h->plt.refcount += 1; ++ } ++ } ++ + if (h->plt.refcount <= 0) + { + h->plt.offset = (bfd_vma) -1; +@@ -2214,9 +2248,6 @@ elf_x86_64_adjust_dynamic_symbol (struct bfd_link_info *info, + + if (ELIMINATE_COPY_RELOCS) + { +- struct elf_x86_64_link_hash_entry * eh; +- struct elf_dyn_relocs *p; +- + eh = (struct elf_x86_64_link_hash_entry *) h; + for (p = eh->dyn_relocs; p != NULL; p = p->next) + { +@@ -3104,8 +3135,11 @@ elf_x86_64_relocate_section (bfd *output_bfd, + || r_type == (int) R_X86_64_GNU_VTENTRY) + continue; + +- if (r_type >= R_X86_64_max) ++ if (r_type >= (int) R_X86_64_standard) + { ++ (*_bfd_error_handler) ++ (_("%B: unrecognized relocation (0x%x) in section `%A'"), ++ input_bfd, input_section, r_type); + bfd_set_error (bfd_error_bad_value); + return FALSE; + } +diff --git a/bfd/elflink.c b/bfd/elflink.c +index 50e65ef..ea06a3c 100644 +--- a/bfd/elflink.c ++++ b/bfd/elflink.c +@@ -892,33 +892,6 @@ elf_merge_st_other (bfd *abfd, struct elf_link_hash_entry *h, + } + } + +-/* Mark if a symbol has a definition in a dynamic object or is +- weak in all dynamic objects. */ +- +-static void +-_bfd_elf_mark_dynamic_def_weak (struct elf_link_hash_entry *h, +- asection *sec, int bind) +-{ +- if (!h->dynamic_def) +- { +- if (!bfd_is_und_section (sec)) +- h->dynamic_def = 1; +- else +- { +- /* Check if this symbol is weak in all dynamic objects. If it +- is the first time we see it in a dynamic object, we mark +- if it is weak. Otherwise, we clear it. */ +- if (!h->ref_dynamic) +- { +- if (bind == STB_WEAK) +- h->dynamic_weak = 1; +- } +- else if (bind != STB_WEAK) +- h->dynamic_weak = 0; +- } +- } +-} +- + /* This function is called when we want to define a new symbol. It + handles the various cases which arise when we find a definition in + a dynamic object, or when there is already a definition in a +@@ -995,10 +968,39 @@ _bfd_elf_merge_symbol (bfd *abfd, + h = (struct elf_link_hash_entry *) h->root.u.i.link; + + /* We have to check it for every instance since the first few may be +- refereences and not all compilers emit symbol type for undefined ++ references and not all compilers emit symbol type for undefined + symbols. */ + bfd_elf_link_mark_dynamic_symbol (info, h, sym); + ++ /* NEWDYN and OLDDYN indicate whether the new or old symbol, ++ respectively, is from a dynamic object. */ ++ ++ newdyn = (abfd->flags & DYNAMIC) != 0; ++ ++ /* ref_dynamic_nonweak and dynamic_def flags track actual undefined ++ syms and defined syms in dynamic libraries respectively. ++ ref_dynamic on the other hand can be set for a symbol defined in ++ a dynamic library, and def_dynamic may not be set; When the ++ definition in a dynamic lib is overridden by a definition in the ++ executable use of the symbol in the dynamic lib becomes a ++ reference to the executable symbol. */ ++ if (newdyn) ++ { ++ if (bfd_is_und_section (sec)) ++ { ++ if (bind != STB_WEAK) ++ { ++ h->ref_dynamic_nonweak = 1; ++ hi->ref_dynamic_nonweak = 1; ++ } ++ } ++ else ++ { ++ h->dynamic_def = 1; ++ hi->dynamic_def = 1; ++ } ++ } ++ + /* If we just created the symbol, mark it as being an ELF symbol. + Other than that, there is nothing to do--there is no merge issue + with a newly defined symbol--so we just return. */ +@@ -1056,11 +1058,6 @@ _bfd_elf_merge_symbol (bfd *abfd, + || !h->def_regular)) + return TRUE; + +- /* NEWDYN and OLDDYN indicate whether the new or old symbol, +- respectively, is from a dynamic object. */ +- +- newdyn = (abfd->flags & DYNAMIC) != 0; +- + olddyn = FALSE; + if (oldbfd != NULL) + olddyn = (oldbfd->flags & DYNAMIC) != 0; +@@ -1164,16 +1161,6 @@ _bfd_elf_merge_symbol (bfd *abfd, + return FALSE; + } + +- /* We need to remember if a symbol has a definition in a dynamic +- object or is weak in all dynamic objects. Internal and hidden +- visibility will make it unavailable to dynamic objects. */ +- if (newdyn) +- { +- _bfd_elf_mark_dynamic_def_weak (h, sec, bind); +- if (h != hi) +- _bfd_elf_mark_dynamic_def_weak (hi, sec, bind); +- } +- + /* If the old symbol has non-default visibility, we ignore the new + definition from a dynamic object. */ + if (newdyn +@@ -1227,7 +1214,6 @@ _bfd_elf_merge_symbol (bfd *abfd, + h->ref_dynamic = 1; + + h->def_dynamic = 0; +- h->dynamic_def = 0; + /* FIXME: Should we check type and size for protected symbol? */ + h->size = 0; + h->type = 0; +@@ -1267,7 +1253,6 @@ _bfd_elf_merge_symbol (bfd *abfd, + else + h->ref_dynamic = 1; + h->def_dynamic = 0; +- h->dynamic_def = 0; + /* FIXME: Should we check type and size for protected symbol? */ + h->size = 0; + h->type = 0; +@@ -3088,19 +3073,17 @@ elf_add_dt_needed_tag (bfd *abfd, + bfd_boolean do_it) + { + struct elf_link_hash_table *hash_table; +- bfd_size_type oldsize; + bfd_size_type strindex; + + if (!_bfd_elf_link_create_dynstrtab (abfd, info)) + return -1; + + hash_table = elf_hash_table (info); +- oldsize = _bfd_elf_strtab_size (hash_table->dynstr); + strindex = _bfd_elf_strtab_add (hash_table->dynstr, soname, FALSE); + if (strindex == (bfd_size_type) -1) + return -1; + +- if (oldsize == _bfd_elf_strtab_size (hash_table->dynstr)) ++ if (_bfd_elf_strtab_refcount (hash_table->dynstr, strindex) != 1) + { + asection *sdyn; + const struct elf_backend_data *bed; +@@ -3382,6 +3365,7 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info) + struct bfd_link_hash_entry *old_undefs = NULL; + struct bfd_link_hash_entry *old_undefs_tail = NULL; + long old_dynsymcount = 0; ++ bfd_size_type old_dynstr_size = 0; + size_t tabsize = 0; + size_t hashsize = 0; + +@@ -3831,6 +3815,7 @@ error_free_dyn: + old_size = htab->root.table.size; + old_count = htab->root.table.count; + old_dynsymcount = htab->dynsymcount; ++ old_dynstr_size = _bfd_elf_strtab_size (htab->dynstr); + + for (i = 0; i < htab->root.table.size; i++) + { +@@ -4187,7 +4172,6 @@ error_free_dyn: + } + + if (elf_tdata (abfd)->verdef != NULL +- && ! override + && vernum > 1 + && definition) + h->verinfo.verdef = &elf_tdata (abfd)->verdef[vernum - 1]; +@@ -4412,9 +4396,7 @@ error_free_dyn: + else + { + h->def_dynamic = 1; +- h->dynamic_def = 1; + hi->def_dynamic = 1; +- hi->dynamic_def = 1; + } + + /* If the indirect symbol has been forced local, don't +@@ -4563,6 +4545,7 @@ error_free_dyn: + memcpy (sym_hash, old_hash, hashsize); + htab->root.undefs = old_undefs; + htab->root.undefs_tail = old_undefs_tail; ++ _bfd_elf_strtab_clear_refs (htab->dynstr, old_dynstr_size); + for (i = 0; i < htab->root.table.size; i++) + { + struct bfd_hash_entry *p; +@@ -4575,12 +4558,13 @@ error_free_dyn: + h = (struct elf_link_hash_entry *) p; + if (h->root.type == bfd_link_hash_warning) + h = (struct elf_link_hash_entry *) h->root.u.i.link; +- if (h->dynindx >= old_dynsymcount) ++ if (h->dynindx >= old_dynsymcount ++ && h->dynstr_index < old_dynstr_size) + _bfd_elf_strtab_delref (htab->dynstr, h->dynstr_index); + + /* Preserve the maximum alignment and size for common + symbols even if this dynamic lib isn't on DT_NEEDED +- since it can still be loaded at the run-time by another ++ since it can still be loaded at run time by another + dynamic lib. */ + if (h->root.type == bfd_link_hash_common) + { +@@ -4599,8 +4583,9 @@ error_free_dyn: + { + memcpy (h->root.u.i.link, old_ent, htab->root.table.entsize); + old_ent = (char *) old_ent + htab->root.table.entsize; ++ h = (struct elf_link_hash_entry *) h->root.u.i.link; + } +- else if (h->root.type == bfd_link_hash_common) ++ if (h->root.type == bfd_link_hash_common) + { + if (size > h->root.u.c.size) + h->root.u.c.size = size; +@@ -8727,7 +8712,7 @@ elf_link_output_extsym (struct bfd_hash_entry *bh, void *data) + && h->ref_dynamic + && h->def_regular + && !h->dynamic_def +- && !h->dynamic_weak ++ && h->ref_dynamic_nonweak + && !elf_link_check_versioned_symbol (flinfo->info, bed, h)) + { + bfd *def_bfd; +@@ -13014,5 +12999,5 @@ elf_append_rel (bfd *abfd, asection *s, Elf_Internal_Rela *rel) + const struct elf_backend_data *bed = get_elf_backend_data (abfd); + bfd_byte *loc = s->contents + (s->reloc_count++ * bed->s->sizeof_rel); + BFD_ASSERT (loc + bed->s->sizeof_rel <= s->contents + s->size); +- bed->s->swap_reloca_out (abfd, rel, loc); ++ bed->s->swap_reloc_out (abfd, rel, loc); + } +diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c +index 490f5e9..2b06763 100644 +--- a/bfd/elfxx-mips.c ++++ b/bfd/elfxx-mips.c +@@ -3982,8 +3982,6 @@ mips_elf_recreate_got (void **entryp, void *data) + } + if (*slot == NULL) + *slot = entry; +- else +- free (entry); + return 1; + } + +@@ -4007,8 +4005,6 @@ mips_elf_resolve_final_got_entries (struct mips_got_info *g) + if (new_got == NULL) + return FALSE; + +- /* Each entry in g->got_entries has either been copied to new_got +- or freed. Now delete the hash table itself. */ + htab_delete (g->got_entries); + g->got_entries = new_got; + } +diff --git a/bfd/elfxx-sparc.c b/bfd/elfxx-sparc.c +index e14afaf..716fa56 100644 +--- a/bfd/elfxx-sparc.c ++++ b/bfd/elfxx-sparc.c +@@ -1873,6 +1873,29 @@ _bfd_sparc_elf_gc_mark_hook (asection *sec, + return NULL; + } + ++ /* FIXME: The test here, in check_relocs and in relocate_section ++ dealing with TLS optimization, ought to be !info->executable. */ ++ if (info->shared) ++ { ++ switch (SPARC_ELF_R_TYPE (rel->r_info)) ++ { ++ case R_SPARC_TLS_GD_CALL: ++ case R_SPARC_TLS_LDM_CALL: ++ /* This reloc implicitly references __tls_get_addr. We know ++ another reloc will reference the same symbol as the one ++ on this reloc, so the real symbol and section will be ++ gc marked when processing the other reloc. That lets ++ us handle __tls_get_addr here. */ ++ h = elf_link_hash_lookup (elf_hash_table (info), "__tls_get_addr", ++ FALSE, FALSE, TRUE); ++ BFD_ASSERT (h != NULL); ++ h->mark = 1; ++ if (h->u.weakdef != NULL) ++ h->u.weakdef->mark = 1; ++ sym = NULL; ++ } ++ } ++ + return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym); + } + +diff --git a/bfd/elfxx-tilegx.c b/bfd/elfxx-tilegx.c +index df63569..1dd1fe6 100644 +--- a/bfd/elfxx-tilegx.c ++++ b/bfd/elfxx-tilegx.c +@@ -2078,11 +2078,33 @@ tilegx_elf_gc_mark_hook (asection *sec, + if (h != NULL) + { + switch (TILEGX_ELF_R_TYPE (rel->r_info)) +- { +- case R_TILEGX_GNU_VTINHERIT: +- case R_TILEGX_GNU_VTENTRY: +- break; +- } ++ { ++ case R_TILEGX_GNU_VTINHERIT: ++ case R_TILEGX_GNU_VTENTRY: ++ return NULL; ++ } ++ } ++ ++ /* FIXME: The test here, in check_relocs and in relocate_section ++ dealing with TLS optimization, ought to be !info->executable. */ ++ if (info->shared) ++ { ++ switch (TILEGX_ELF_R_TYPE (rel->r_info)) ++ { ++ case R_TILEGX_TLS_GD_CALL: ++ /* This reloc implicitly references __tls_get_addr. We know ++ another reloc will reference the same symbol as the one ++ on this reloc, so the real symbol and section will be ++ gc marked when processing the other reloc. That lets ++ us handle __tls_get_addr here. */ ++ h = elf_link_hash_lookup (elf_hash_table (info), "__tls_get_addr", ++ FALSE, FALSE, TRUE); ++ BFD_ASSERT (h != NULL); ++ h->mark = 1; ++ if (h->u.weakdef != NULL) ++ h->u.weakdef->mark = 1; ++ sym = NULL; ++ } + } + + return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym); +diff --git a/bfd/linker.c b/bfd/linker.c +index 3caec96..d3ef9a4 100644 +--- a/bfd/linker.c ++++ b/bfd/linker.c +@@ -2359,6 +2359,12 @@ _bfd_generic_link_output_symbols (bfd *output_bfd, + else + output = FALSE; + } ++ else if (sym->flags == 0 ++ && (sym->section->owner->flags & BFD_PLUGIN) != 0) ++ /* LTO doesn't set symbol information. We get here with the ++ generic linker for a symbol that was "common" but no longer ++ needs to be global. */ ++ output = FALSE; + else + abort (); + +diff --git a/bfd/opncls.c b/bfd/opncls.c +index 7c1d2f9..d35aa42 100644 +--- a/bfd/opncls.c ++++ b/bfd/opncls.c +@@ -107,6 +107,8 @@ _bfd_new_bfd (void) + return nbfd; + } + ++static const struct bfd_iovec opncls_iovec; ++ + /* Allocate a new BFD as a member of archive OBFD. */ + + bfd * +@@ -119,6 +121,8 @@ _bfd_new_bfd_contained_in (bfd *obfd) + return NULL; + nbfd->xvec = obfd->xvec; + nbfd->iovec = obfd->iovec; ++ if (obfd->iovec == &opncls_iovec) ++ nbfd->iostream = obfd->iostream; + nbfd->my_archive = obfd; + nbfd->direction = read_direction; + nbfd->target_defaulted = obfd->target_defaulted; +@@ -726,7 +730,7 @@ bfd_close (bfd *abfd) + if (! BFD_SEND (abfd, _close_and_cleanup, (abfd))) + return FALSE; + +- ret = abfd->iovec->bclose (abfd); ++ ret = abfd->iovec->bclose (abfd) == 0; + + if (ret) + _maybe_make_executable (abfd); +diff --git a/bfd/version.h b/bfd/version.h +index de757c0..41d2165 100644 +--- a/bfd/version.h ++++ b/bfd/version.h +@@ -1,4 +1,4 @@ +-#define BFD_VERSION_DATE 20121113 ++#define BFD_VERSION_DATE 20130213 + #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 c9d6c51..9c6b34a 100644 +--- a/binutils/ChangeLog ++++ b/binutils/ChangeLog +@@ -1,3 +1,24 @@ ++2013-01-22 Alan Modra ++ ++ Apply mainline patches ++ 2012-09-04 H.J. Lu ++ PR binutils/14493 ++ * readelf.c (get_symbol_index_type): Check bad section index. ++ ++2013-01-07 Roland McGrath ++ ++ * objcopy.c (deterministic): Make int rather than bfd_boolean, ++ initialize to -1. ++ (strip_options, copy_options): Add -U/--disable-deterministic-archives. ++ (default_deterministic): New function. ++ (strip_main, copy_main): Handle -U. Call default_deterministic. ++ (copy_usage, strip_usage): Describe -U. Cite whether -D or -U is ++ the default based on DEFAULT_AR_DETERMINISTIC. ++ * doc/binutils.texi (objcopy, strip): Describe -U and effect of ++ configure options on -D. ++ ++ * ar.c (default_deterministic): Comment fix. ++ + 2012-11-05 Alan Modra + + * configure.in: Apply 2012-09-10 change to config.in here. Add +diff --git a/binutils/ar.c b/binutils/ar.c +index aceb9d1..0aa1ba3 100644 +--- a/binutils/ar.c ++++ b/binutils/ar.c +@@ -1,6 +1,6 @@ + /* ar.c - Archive modify and extract. + Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 ++ 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 + Free Software Foundation, Inc. + + This file is part of GNU Binutils. +@@ -575,7 +575,7 @@ decode_options (int argc, char **argv) + return &argv[optind]; + } + +-/* If neither -D nor -U was not specified explicitly, ++/* If neither -D nor -U was specified explicitly, + then use the configured default. */ + static void + default_deterministic (void) +diff --git a/binutils/doc/binutils.texi b/binutils/doc/binutils.texi +index 9826eb2..45174b7 100644 +--- a/binutils/doc/binutils.texi ++++ b/binutils/doc/binutils.texi +@@ -1060,6 +1060,7 @@ objcopy [@option{-F} @var{bfdname}|@option{--target=}@var{bfdname}] + [@option{-R} @var{sectionname}|@option{--remove-section=}@var{sectionname}] + [@option{-p}|@option{--preserve-dates}] + [@option{-D}|@option{--enable-deterministic-archives}] ++ [@option{-U}|@option{--disable-deterministic-archives}] + [@option{--debugging}] + [@option{--gap-fill=}@var{val}] + [@option{--pad-to=}@var{address}] +@@ -1328,10 +1329,28 @@ as those of the input file. + + @item -D + @itemx --enable-deterministic-archives ++@cindex deterministic archives ++@kindex --enable-deterministic-archives + Operate in @emph{deterministic} mode. When copying archive members + and writing the archive index, use zero for UIDs, GIDs, timestamps, + and use consistent file modes for all files. + ++If @file{binutils} was configured with ++@option{--enable-deterministic-archives}, then this mode is on by default. ++It can be disabled with the @samp{-U} option, below. ++ ++@item -U ++@itemx --disable-deterministic-archives ++@cindex deterministic archives ++@kindex --enable-deterministic-archives ++Do @emph{not} operate in @emph{deterministic} mode. This is the ++inverse of the @option{-D} option, above: when copying archive members ++and writing the archive index, use their actual UID, GID, timestamp, ++and file mode values. ++ ++This is the default unless @file{binutils} was configured with ++@option{--enable-deterministic-archives}. ++ + @item --debugging + Convert debugging information, if possible. This is not the default + because only certain debugging formats are supported, and the +@@ -2709,6 +2728,7 @@ strip [@option{-F} @var{bfdname} |@option{--target=}@var{bfdname}] + [@option{-R} @var{sectionname} |@option{--remove-section=}@var{sectionname}] + [@option{-o} @var{file}] [@option{-p}|@option{--preserve-dates}] + [@option{-D}|@option{--enable-deterministic-archives}] ++ [@option{-U}|@option{--disable-deterministic-archives}] + [@option{--keep-file-symbols}] + [@option{--only-keep-debug}] + [@option{-v} |@option{--verbose}] [@option{-V}|@option{--version}] +@@ -2801,10 +2821,28 @@ Preserve the access and modification dates of the file. + + @item -D + @itemx --enable-deterministic-archives ++@cindex deterministic archives ++@kindex --enable-deterministic-archives + Operate in @emph{deterministic} mode. When copying archive members + and writing the archive index, use zero for UIDs, GIDs, timestamps, + and use consistent file modes for all files. + ++If @file{binutils} was configured with ++@option{--enable-deterministic-archives}, then this mode is on by default. ++It can be disabled with the @samp{-U} option, below. ++ ++@item -U ++@itemx --disable-deterministic-archives ++@cindex deterministic archives ++@kindex --enable-deterministic-archives ++Do @emph{not} operate in @emph{deterministic} mode. This is the ++inverse of the @option{-D} option, above: when copying archive members ++and writing the archive index, use their actual UID, GID, timestamp, ++and file mode values. ++ ++This is the default unless @file{binutils} was configured with ++@option{--enable-deterministic-archives}. ++ + @item -w + @itemx --wildcard + Permit regular expressions in @var{symbolname}s used in other command +diff --git a/binutils/objcopy.c b/binutils/objcopy.c +index 40250ad..020d54d 100644 +--- a/binutils/objcopy.c ++++ b/binutils/objcopy.c +@@ -1,6 +1,6 @@ + /* objcopy.c -- copy object file from input to output, optionally massaging it. + Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 ++ 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 + Free Software Foundation, Inc. + + This file is part of GNU Binutils. +@@ -86,7 +86,7 @@ static int copy_width = 1; + + static bfd_boolean verbose; /* Print file and target names. */ + static bfd_boolean preserve_dates; /* Preserve input file timestamp. */ +-static bfd_boolean deterministic; /* Enable deterministic archives. */ ++static int deterministic = -1; /* Enable deterministic archives. */ + static int status = 0; /* Exit status. */ + + enum strip_action +@@ -325,6 +325,7 @@ enum command_line_switch + + static struct option strip_options[] = + { ++ {"disable-deterministic-archives", no_argument, 0, 'U'}, + {"discard-all", no_argument, 0, 'x'}, + {"discard-locals", no_argument, 0, 'X'}, + {"enable-deterministic-archives", no_argument, 0, 'D'}, +@@ -376,6 +377,7 @@ static struct option copy_options[] = + {"compress-debug-sections", no_argument, 0, OPTION_COMPRESS_DEBUG_SECTIONS}, + {"debugging", no_argument, 0, OPTION_DEBUGGING}, + {"decompress-debug-sections", no_argument, 0, OPTION_DECOMPRESS_DEBUG_SECTIONS}, ++ {"disable-deterministic-archives", no_argument, 0, 'U'}, + {"discard-all", no_argument, 0, 'x'}, + {"discard-locals", no_argument, 0, 'X'}, + {"enable-deterministic-archives", no_argument, 0, 'D'}, +@@ -489,9 +491,20 @@ copy_usage (FILE *stream, int exit_status) + -B --binary-architecture Set output arch, when input is arch-less\n\ + -F --target Set both input and output format to \n\ + --debugging Convert debugging information, if possible\n\ +- -p --preserve-dates Copy modified/access timestamps to the output\n\ ++ -p --preserve-dates Copy modified/access timestamps to the output\n")); ++ if (DEFAULT_AR_DETERMINISTIC) ++ fprintf (stream, _("\ ++ -D --enable-deterministic-archives\n\ ++ Produce deterministic output when stripping archives (default)\n\ ++ -U --disable-deterministic-archives\n\ ++ Disable -D behavior\n")); ++ else ++ fprintf (stream, _("\ + -D --enable-deterministic-archives\n\ + Produce deterministic output when stripping archives\n\ ++ -U --disable-deterministic-archives\n\ ++ Disable -D behavior (default)\n")); ++ fprintf (stream, _("\ + -j --only-section Only copy section into the output\n\ + --add-gnu-debuglink= Add section .gnu_debuglink linking to \n\ + -R --remove-section Remove section from the output\n\ +@@ -602,8 +615,20 @@ strip_usage (FILE *stream, int exit_status) + -O --output-target= Create an output file in format \n\ + -F --target= Set both input and output format to \n\ + -p --preserve-dates Copy modified/access timestamps to the output\n\ ++")); ++ if (DEFAULT_AR_DETERMINISTIC) ++ fprintf (stream, _("\ ++ -D --enable-deterministic-archives\n\ ++ Produce deterministic output when stripping archives (default)\n\ ++ -U --disable-deterministic-archives\n\ ++ Disable -D behavior\n")); ++ else ++ fprintf (stream, _("\ + -D --enable-deterministic-archives\n\ + Produce deterministic output when stripping archives\n\ ++ -U --disable-deterministic-archives\n\ ++ Disable -D behavior (default)\n")); ++ fprintf (stream, _("\ + -R --remove-section= Remove section from the output\n\ + -s --strip-all Remove all symbol and relocation information\n\ + -g -S -d --strip-debug Remove all debugging symbols & sections\n\ +@@ -3015,6 +3040,15 @@ write_debugging_info (bfd *obfd, void *dhandle, + return FALSE; + } + ++/* If neither -D nor -U was specified explicitly, ++ then use the configured default. */ ++static void ++default_deterministic (void) ++{ ++ if (deterministic < 0) ++ deterministic = DEFAULT_AR_DETERMINISTIC; ++} ++ + static int + strip_main (int argc, char *argv[]) + { +@@ -3075,6 +3109,9 @@ strip_main (int argc, char *argv[]) + case 'D': + deterministic = TRUE; + break; ++ case 'U': ++ deterministic = FALSE; ++ break; + case 'x': + discard_locals = LOCALS_ALL; + break; +@@ -3119,6 +3156,8 @@ strip_main (int argc, char *argv[]) + if (show_version) + print_version ("strip"); + ++ default_deterministic (); ++ + /* Default is to strip all symbols. */ + if (strip_symbols == STRIP_UNDEF + && discard_locals == LOCALS_UNDEF +@@ -3201,7 +3240,7 @@ set_pe_subsystem (const char *s) + } + v[] = + { +- { "native", 0, IMAGE_SUBSYSTEM_NATIVE }, ++ { "native", 0, IMAGE_SUBSYSTEM_NATIVE }, + { "windows", 0, IMAGE_SUBSYSTEM_WINDOWS_GUI }, + { "console", 0, IMAGE_SUBSYSTEM_WINDOWS_CUI }, + { "posix", 0, IMAGE_SUBSYSTEM_POSIX_CUI }, +@@ -3443,6 +3482,10 @@ copy_main (int argc, char *argv[]) + deterministic = TRUE; + break; + ++ case 'U': ++ deterministic = FALSE; ++ break; ++ + case 'w': + wildcard = TRUE; + break; +@@ -3877,7 +3920,7 @@ copy_main (int argc, char *argv[]) + case OPTION_FILE_ALIGNMENT: + pe_file_alignment = parse_vma (optarg, "--file-alignment"); + break; +- ++ + case OPTION_HEAP: + { + char *end; +@@ -3895,20 +3938,20 @@ copy_main (int argc, char *argv[]) + } + } + break; +- ++ + case OPTION_IMAGE_BASE: + pe_image_base = parse_vma (optarg, "--image-base"); + break; +- ++ + case OPTION_SECTION_ALIGNMENT: + pe_section_alignment = parse_vma (optarg, + "--section-alignment"); + break; +- ++ + case OPTION_SUBSYSTEM: + set_pe_subsystem (optarg); + break; +- ++ + case OPTION_STACK: + { + char *end; +@@ -3926,7 +3969,7 @@ copy_main (int argc, char *argv[]) + } + } + break; +- ++ + case 0: + /* We've been given a long option. */ + break; +@@ -3965,6 +4008,8 @@ copy_main (int argc, char *argv[]) + if (optind + 1 < argc) + output_filename = argv[optind + 1]; + ++ default_deterministic (); ++ + /* Default is to strip no symbols. */ + if (strip_symbols == STRIP_UNDEF && discard_locals == LOCALS_UNDEF) + strip_symbols = STRIP_NONE; +diff --git a/binutils/readelf.c b/binutils/readelf.c +index 8ca41b6..d9ec436 100644 +--- a/binutils/readelf.c ++++ b/binutils/readelf.c +@@ -8986,6 +8986,8 @@ get_symbol_index_type (unsigned int type) + sprintf (buff, "OS [0x%04x]", type & 0xffff); + else if (type >= SHN_LORESERVE) + sprintf (buff, "RSV[0x%04x]", type & 0xffff); ++ else if (type >= elf_header.e_shnum) ++ sprintf (buff, "bad section index[%3d]", type); + else + sprintf (buff, "%3d", type); + break; +diff --git a/binutils/testsuite/ChangeLog b/binutils/testsuite/ChangeLog +index 022524b..d7d7740 100644 +--- a/binutils/testsuite/ChangeLog ++++ b/binutils/testsuite/ChangeLog +@@ -1,3 +1,14 @@ ++2012-11-27 Roland McGrath ++ ++ * lib/binutils-common.exp (is_zlib_supported): New function. ++ * lib/utils-lib.exp (run_dump_test): If as options include ++ --compress-debug-sections and zlib is not available, report ++ the test as unsupported. ++ * binutils-all/compress.exp: Bail out if zlib is not available. ++ * binutils-all/objdump.exp (objdump compressed debug): ++ Mark unsupported if zlib is not available. ++ * binutils-all/readelf.exp (readelf_compressed_wa_test): Likewise. ++ + 2012-08-16 Ian Bolton + Laurent Desnogues + Jim MacArthur +diff --git a/binutils/testsuite/binutils-all/compress.exp b/binutils/testsuite/binutils-all/compress.exp +index 3b0b485..67b7f07 100644 +--- a/binutils/testsuite/binutils-all/compress.exp ++++ b/binutils/testsuite/binutils-all/compress.exp +@@ -1,23 +1,23 @@ +-# Copyright 2010 ++# Copyright 2010, 2012 + # 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. + + # Test compressed .debug section. + +-if { [is_remote host] || ![is_elf_format] } then { ++if { [is_remote host] || ![is_elf_format] || ![is_zlib_supported] } then { + return + } + +diff --git a/binutils/testsuite/binutils-all/objdump.exp b/binutils/testsuite/binutils-all/objdump.exp +index 14d1860..b330a32 100644 +--- a/binutils/testsuite/binutils-all/objdump.exp ++++ b/binutils/testsuite/binutils-all/objdump.exp +@@ -1,17 +1,17 @@ + # Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004, 2007, 2008, 2009, 2011 ++# 2003, 2004, 2007, 2008, 2009, 2011, 2012 + # 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. +@@ -160,7 +160,7 @@ if [regexp $want $got] then { + + # Test objdump -s on a file that contains a compressed .debug section + +-if { ![is_elf_format] } then { ++if { ![is_elf_format] || ![is_zlib_supported] } then { + unsupported "objdump compressed debug" + } elseif { ![binutils_assemble $srcdir/$subdir/dw2-compressed.S tmpdir/dw2-compressed.o] } then { + fail "objdump compressed debug" +diff --git a/binutils/testsuite/binutils-all/readelf.exp b/binutils/testsuite/binutils-all/readelf.exp +index e611cb2..c1d7286 100644 +--- a/binutils/testsuite/binutils-all/readelf.exp ++++ b/binutils/testsuite/binutils-all/readelf.exp +@@ -5,12 +5,12 @@ + # 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. +@@ -84,7 +84,7 @@ proc readelf_test { options binary_file regexp_file xfails } { + global readelf_size + global srcdir + global subdir +- ++ + send_log "exec $READELF $READELFFLAGS $options $binary_file > readelf.out\n" + set got [remote_exec host "$READELF $READELFFLAGS $options $binary_file" "" "/dev/null" "readelf.out"] + +@@ -146,7 +146,7 @@ proc readelf_wi_test {} { + global READELFFLAGS + global srcdir + global subdir +- ++ + # Compile the second test file. + if { [target_compile $srcdir/$subdir/testprog.c tmpdir/testprog.o object debug] != "" } { + verbose "Unable to compile test file." +@@ -164,7 +164,7 @@ proc readelf_wi_test {} { + set output [remote_upload host readelf.out] + + file_on_host delete $tempfile +- ++ + # Strip any superflous warnings. + set got [prune_readelf_wi_warnings [lindex $got 1]] + +@@ -182,7 +182,7 @@ proc readelf_wi_test {} { + untested "readelf -wi" + return + } +- ++ + # Search for strings that should be in the output. + set sought { + ".*DW_TAG_compile_unit.*" +@@ -195,8 +195,8 @@ proc readelf_wi_test {} { + ".*DW_AT_name.*(main|indirect string).*" + ".*\(DW_OP_addr: 0\).*" + } +- +- foreach looked_for $sought { ++ ++ foreach looked_for $sought { + set lines [grep $output $looked_for] + if ![llength $lines] then { + fail "readelf -wi: missing: $looked_for" +@@ -206,7 +206,7 @@ proc readelf_wi_test {} { + } + + file_on_host delete $output +- ++ + # All done. + pass "readelf -wi" + } +@@ -219,7 +219,12 @@ proc readelf_compressed_wa_test {} { + global READELFFLAGS + global srcdir + global subdir +- ++ ++ if { ![is_zlib_supported] } { ++ unsupported "readelf -wa (compressed)" ++ return ++ } ++ + # Compile the compressed-debug-section test file. + if { [target_compile $srcdir/$subdir/dw2-compressed.S tmpdir/dw2-compressed.o object debug] != "" } { + verbose "Unable to compile test file." +@@ -237,7 +242,7 @@ proc readelf_compressed_wa_test {} { + set output [remote_upload host readelf.out] + + file_on_host delete $tempfile +- ++ + if { [string compare [file_contents readelf.out] [file_contents $srcdir/$subdir/readelf.wa]] != 0 } then { + fail "readelf -wa (compressed)" + verbose "output is \n[file_contents readelf.out]" 2 +@@ -255,7 +260,7 @@ proc readelf_dump_test {} { + global READELFFLAGS + global srcdir + global subdir +- ++ + # Assemble the dump test file. + if {![binutils_assemble $srcdir/$subdir/dumptest.s tmpdir/dumptest.o]} then { + unresolved "readelf -p: failed to assemble dump test file" +@@ -283,8 +288,8 @@ proc readelf_dump_test {} { + set sought { + ".*test_string.*" + } +- +- foreach looked_for $sought { ++ ++ foreach looked_for $sought { + set lines [grep $output $looked_for] + if ![llength $lines] then { + fail "readelf -p: missing: $looked_for" +@@ -293,7 +298,7 @@ proc readelf_dump_test {} { + } + } + +- file_on_host delete $tempfile ++ file_on_host delete $tempfile + file_on_host delete $output + + # All done. +diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp +index 0054184..68efb90 100644 +--- a/binutils/testsuite/lib/binutils-common.exp ++++ b/binutils/testsuite/lib/binutils-common.exp +@@ -152,6 +152,31 @@ proc is_elf64 { binary_file } { + return 0 + } + ++# True if the build supports zlib compression. ++proc is_zlib_supported {} { ++ ++ # This replicates the AS selection logic of dejagnu's target_assemble. ++ global AS_FOR_TARGET ++ if [info exists AS_FOR_TARGET] { ++ set AS $AS_FOR_TARGET ++ } else { ++ if {![board_info target exists assembler]} { ++ set AS [find_gas] ++ } else { ++ set AS [board_info target assembler] ++ } ++ } ++ ++ set as_output [remote_exec host "$AS --help"] ++ ++ set have_zlib 0 ++ if {[string first "--compress-debug-sections" $as_output] >= 0} { ++ set have_zlib 1 ++ } ++ ++ return $have_zlib ++} ++ + # Compare two files line-by-line. FILE_1 is the actual output and FILE_2 + # is the expected output. Ignore blank lines in either file. + # +diff --git a/binutils/testsuite/lib/utils-lib.exp b/binutils/testsuite/lib/utils-lib.exp +index b96043b..3fe6c14 100644 +--- a/binutils/testsuite/lib/utils-lib.exp ++++ b/binutils/testsuite/lib/utils-lib.exp +@@ -1,16 +1,16 @@ + # Copyright 1993, 1994, 1995, 1996, 1997, 2000, 2001, 2003, 2004, 2006, 2007, +-# 2009, 2010 Free Software Foundation, Inc. ++# 2009, 2010, 2012 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. +@@ -405,7 +405,7 @@ proc run_dump_test { name {extra_options {}} } { + if { $opts(not-skip) != "" } then { + set skip 1 + foreach glob $opts(not-skip) { +- if {[istarget $glob]} { ++ if {[istarget $glob]} { + set skip 0 + break + } +@@ -420,25 +420,31 @@ proc run_dump_test { name {extra_options {}} } { + } + set skip 1 + foreach glob $opts(target) { +- if {[istarget $glob]} { ++ if {[istarget $glob]} { + set skip 0 + break + } + } +- if {$skip} { ++ if {$skip} { + unsupported $testname +- return ++ return + } + } + if { $opts(not-target) != "" } then { + foreach glob $opts(not-target) { + if {[istarget $glob]} { + unsupported $testname +- return ++ return + } + } + } + ++ if { [string match "*--compress-debug-sections*" $opts(as)] \ ++ && ![is_zlib_supported] } { ++ unsupported $testname ++ return ++ } ++ + if { $opts(source) == "" } { + set srcfile ${file}.s + } else { +diff --git a/gas/ChangeLog b/gas/ChangeLog +index 219c27e..b2de7ae 100644 +--- a/gas/ChangeLog ++++ b/gas/ChangeLog +@@ -1,3 +1,97 @@ ++2013-02-12 Yufeng Zhang ++ ++ * config/tc-aarch64.c (parse_operands): Change to compare the result ++ of function call 'parse_sys_reg' with 'PARSE_FAIL' instead of 'FALSE'. ++ ++2013-01-29 Roland McGrath ++ ++ * config/tc-arm.c (md_apply_fix): Use as_bad_where for "bad ++ immediate value for 8-bit offset" error so it shows line info. ++ ++2013-01-22 Alan Modra ++ ++ Apply mainline patches ++ 2012-11-23 Alan Modra ++ * config/tc-ppc.c (sticky): New var. ++ (md_parse_option, ppc_machine): Update ppc_parse_cpu calls. ++ ++ 2012-11-14 Ulrich Weigand ++ * config/tc-ppc.c (md_apply_fix): Leave field zero when emitting ++ an ELF reloc on data as well. ++ ++ 2012-11-06 Alan Modra ++ * config/tc-ppc.c (md_apply_fix): Fix xcoff build breakage. ++ ++ 2012-11-05 Alan Modra ++ * config/tc-ppc.c (md_chars_to_number): Delete. ++ (ppc_setup_opcodes): Assert num_powerpc_operands fit. ++ (ppc_is_toc_sym): Move earlier in file. ++ (md_assemble): Move code setting reloc from md_apply_fix. Combine ++ non-ELF code setting fixup with ELF code. Stash opindex in ++ fx_pcrel_adjust. Adjust fixup offset for VLE. Don't set ++ fx_no_overflow here. ++ (md_apply_fix): Rewrite to use ppc_insert_operand for all ++ resolved instruction fields. Leave insn field zero when ++ emitting an ELF reloc in most cases. ++ ++ 2012-10-29 Alan Modra ++ * sb.c (sb_check): Use __builtin_clzll when size_t is not the ++ same size as long. ++ ++ 2012-10-26 Alan Modra ++ PR gas/14758 ++ * config/tc-ppc.c (ppc_setup_opcodes): Fix comment. ++ (md_assemble): Translate to _DS relocs for ppc32 as well as ppc64. ++ (tc_gen_reloc): Handle _DS relocs in ppc32 mode. ++ ++ 2012-10-01 Alan Modra ++ * write.c (chain_frchains_together_1): Reorder assertion to avoid ++ uninit warning. ++ ++ 2012-08-01 James Lemke ++ * dwarf2dbg.c (out_set_addr): Allow for non-constant value of ++ DWARF2_LINE_MIN_INSN_LENGTH ++ * config/tc-ppc.c (ppc_dwarf2_line_min_insn_length): Declare ++ and initialize. ++ (md_apply_fix): Branch addr can be a multiple of 2 or 4. ++ * config/tc-ppc.h (DWARF2_LINE_MIN_INSN_LENGTH): Now a ++ variable reference. ++ ++2013-01-10 Roland McGrath ++ ++ * hash.c (hash_new_sized): Make it global. ++ * hash.h: Declare it. ++ * macro.c (define_macro): Use hash_new_sized instead of hash_new, ++ pass a small size. ++ ++2012-12-20 Greta Yorsh ++ ++ * config/tc-arm.c (rfefa,rfeea,rfeed): Fix encoding. ++ (rfe,srs,srsea,srsfa,srsed,srsfd): Add missing mnemonics. ++ ++2012-12-06 Yufeng Zhang ++ ++ * config/tc-aarch64.c (exp_has_bignum_p): Remove. ++ (my_get_expression): Not get rid of bignums. ++ (s_ltorg): Increase the range of 'align'. ++ (programmer_friendly_fixup): Allow bignum expression. ++ ++2012-11-20 H.J. Lu ++ ++ PR gas/14859 ++ * gas/i386/x86-64-opcode.s: Add jecxz. ++ * gas/i386/x86-64-opcode.d: Updated. ++ ++2012-11-20 Yufeng Zhang ++ ++ * config/tc-aarch64.c (first_error_fmt): Add ATTRIBUTE_UNUSED to the ++ local variable "ret". ++ ++2012-11-20 Roland McGrath ++ ++ * config/tc-arm.c (arm_symbol_chars): New variable. ++ * config/tc-arm.h (tc_symbol_chars): New macro, defined to that. ++ + 2012-11-07 James Murray + + * config/tc-m68hc11.c: Fix R_M68HC12_16B relocation for movb/w +diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c +index 843923b..0ec40e7 100644 +--- a/gas/config/tc-aarch64.c ++++ b/gas/config/tc-aarch64.c +@@ -1,6 +1,7 @@ + /* tc-aarch64.c -- Assemble for the AArch64 ISA + +- Copyright 2009, 2010, 2011, 2012 Free Software Foundation, Inc. ++ Copyright 2009, 2010, 2011, 2012, 2013 ++ Free Software Foundation, Inc. + Contributed by ARM Ltd. + + This file is part of GAS. +@@ -484,25 +485,6 @@ skip_past_char (char **str, char c) + + /* Arithmetic expressions (possibly involving symbols). */ + +-/* Return TRUE if anything in the expression *SP is a bignum. */ +- +-static bfd_boolean +-exp_has_bignum_p (symbolS * sp) +-{ +- if (symbol_get_value_expression (sp)->X_op == O_big) +- return TRUE; +- +- if (symbol_get_value_expression (sp)->X_add_symbol) +- { +- return (exp_has_bignum_p (symbol_get_value_expression (sp)->X_add_symbol) +- || (symbol_get_value_expression (sp)->X_op_symbol +- && exp_has_bignum_p (symbol_get_value_expression (sp)-> +- X_op_symbol))); +- } +- +- return FALSE; +-} +- + static bfd_boolean in_my_get_expression_p = FALSE; + + /* Third argument to my_get_expression. */ +@@ -571,23 +553,6 @@ my_get_expression (expressionS * ep, char **str, int prefix_mode, + (void) seg; + #endif + +- /* Get rid of any bignums now, so that we don't generate an error for which +- we can't establish a line number later on. Big numbers are never valid +- in instructions, which is where this routine is always called. */ +- if (ep->X_op == O_big +- || (ep->X_add_symbol +- && (exp_has_bignum_p (ep->X_add_symbol) +- || (ep->X_op_symbol && exp_has_bignum_p (ep->X_op_symbol))))) +- { +- if (prefix_present_p && error_p ()) +- set_fatal_syntax_error (_("invalid constant")); +- else +- set_first_syntax_error (_("invalid constant")); +- *str = input_line_pointer; +- input_line_pointer = save_in; +- return FALSE; +- } +- + *str = input_line_pointer; + input_line_pointer = save_in; + return TRUE; +@@ -643,7 +608,7 @@ first_error_fmt (const char *format, ...) + + if (! error_p ()) + { +- int ret; ++ int ret ATTRIBUTE_UNUSED; + va_start (args, format); + ret = vsnprintf (buffer, size, format, args); + know (ret <= size - 1 && ret >= 0); +@@ -1730,7 +1695,7 @@ s_ltorg (int ignored ATTRIBUTE_UNUSED) + char sym_name[20]; + int align; + +- for (align = 2; align < 4; align++) ++ for (align = 2; align <= 4; align++) + { + int size = 1 << align; + +@@ -5039,7 +5004,8 @@ parse_operands (char *str, const aarch64_opcode *opcode) + break; + + case AARCH64_OPND_SYSREG: +- if ((val = parse_sys_reg (&str, aarch64_sys_regs_hsh, 1)) == FALSE) ++ if ((val = parse_sys_reg (&str, aarch64_sys_regs_hsh, 1)) ++ == PARSE_FAIL) + { + set_syntax_error (_("unknown or missing system register name")); + goto failure; +@@ -5048,7 +5014,8 @@ parse_operands (char *str, const aarch64_opcode *opcode) + break; + + case AARCH64_OPND_PSTATEFIELD: +- if ((val = parse_sys_reg (&str, aarch64_pstatefield_hsh, 0)) == FALSE) ++ if ((val = parse_sys_reg (&str, aarch64_pstatefield_hsh, 0)) ++ == PARSE_FAIL) + { + set_syntax_error (_("unknown or missing PSTATE field name")); + goto failure; +@@ -5228,6 +5195,7 @@ programmer_friendly_fixup (aarch64_instruction *instr) + if (op == OP_LDRSW_LIT) + size = 4; + if (instr->reloc.exp.X_op != O_constant ++ && instr->reloc.exp.X_op != O_big + && instr->reloc.exp.X_op != O_symbol) + { + record_operand_error (opcode, 1, +diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c +index 91b29ac..92b1ce3 100644 +--- a/gas/config/tc-arm.c ++++ b/gas/config/tc-arm.c +@@ -1,6 +1,6 @@ + /* tc-arm.c -- Assemble for the ARM + Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, +- 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 ++ 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 + Free Software Foundation, Inc. + Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org) + Modified by David Taylor (dtaylor@armltd.co.uk) +@@ -321,6 +321,11 @@ static int implicit_it_mode = IMPLICIT_IT_MODE_ARM; + + static bfd_boolean unified_syntax = FALSE; + ++/* An immediate operand can start with #, and ld*, st*, pld operands ++ can contain [ and ]. We need to tell APP not to elide whitespace ++ before a [, which can appear as the first operand for pld. */ ++const char arm_symbol_chars[] = "#[]"; ++ + enum neon_el_type + { + NT_invtype, +@@ -10225,7 +10230,7 @@ do_t_branch (void) + } + + /* Actually do the work for Thumb state bkpt and hlt. The only difference +- between the two is the maximum immediate allowed - which is passed in ++ between the two is the maximum immediate allowed - which is passed in + RANGE. */ + static void + do_t_bkpt_hlt1 (int range) +@@ -14660,7 +14665,7 @@ do_vfp_nsyn_cvtz (void) + } + + static void +-do_vfp_nsyn_cvt_fpv8 (enum neon_cvt_flavour flavour, ++do_vfp_nsyn_cvt_fpv8 (enum neon_cvt_flavour flavour, + enum neon_cvt_mode mode) + { + int sz, op; +@@ -14720,9 +14725,9 @@ do_neon_cvt_1 (enum neon_cvt_mode mode) + /* PR11109: Handle round-to-zero for VCVT conversions. */ + if (mode == neon_cvt_mode_z + && ARM_CPU_HAS_FEATURE (cpu_variant, fpu_arch_vfp_v2) +- && (flavour == neon_cvt_flavour_s32_f32 +- || flavour == neon_cvt_flavour_u32_f32 +- || flavour == neon_cvt_flavour_s32_f64 ++ && (flavour == neon_cvt_flavour_s32_f32 ++ || flavour == neon_cvt_flavour_u32_f32 ++ || flavour == neon_cvt_flavour_s32_f64 + || flavour == neon_cvt_flavour_u32_f64) + && (rs == NS_FD || rs == NS_FF)) + { +@@ -18216,17 +18221,23 @@ static const struct asm_opcode insns[] = + #undef THUMB_VARIANT + #define THUMB_VARIANT & arm_ext_v6_notm + TUF("rfeia", 8900a00, e990c000, 1, (RRw), rfe, rfe), ++ TUF("rfe", 8900a00, e990c000, 1, (RRw), rfe, rfe), + UF(rfeib, 9900a00, 1, (RRw), rfe), + UF(rfeda, 8100a00, 1, (RRw), rfe), + TUF("rfedb", 9100a00, e810c000, 1, (RRw), rfe, rfe), + TUF("rfefd", 8900a00, e990c000, 1, (RRw), rfe, rfe), +- UF(rfefa, 9900a00, 1, (RRw), rfe), +- UF(rfeea, 8100a00, 1, (RRw), rfe), +- TUF("rfeed", 9100a00, e810c000, 1, (RRw), rfe, rfe), ++ UF(rfefa, 8100a00, 1, (RRw), rfe), ++ TUF("rfeea", 9100a00, e810c000, 1, (RRw), rfe, rfe), ++ UF(rfeed, 9900a00, 1, (RRw), rfe), + TUF("srsia", 8c00500, e980c000, 2, (oRRw, I31w), srs, srs), ++ TUF("srs", 8c00500, e980c000, 2, (oRRw, I31w), srs, srs), ++ TUF("srsea", 8c00500, e980c000, 2, (oRRw, I31w), srs, srs), + UF(srsib, 9c00500, 2, (oRRw, I31w), srs), ++ UF(srsfa, 9c00500, 2, (oRRw, I31w), srs), + UF(srsda, 8400500, 2, (oRRw, I31w), srs), ++ UF(srsed, 8400500, 2, (oRRw, I31w), srs), + TUF("srsdb", 9400500, e800c000, 2, (oRRw, I31w), srs, srs), ++ TUF("srsfd", 9400500, e800c000, 2, (oRRw, I31w), srs, srs), + + /* ARM V6 not included in V7M (eg. integer SIMD). */ + #undef THUMB_VARIANT +@@ -21565,8 +21576,9 @@ md_apply_fix (fixS * fixP, + as_bad_where (fixP->fx_file, fixP->fx_line, + _("invalid literal constant: pool needs to be closer")); + else +- as_bad (_("bad immediate value for 8-bit offset (%ld)"), +- (long) value); ++ as_bad_where (fixP->fx_file, fixP->fx_line, ++ _("bad immediate value for 8-bit offset (%ld)"), ++ (long) value); + break; + } + +diff --git a/gas/config/tc-arm.h b/gas/config/tc-arm.h +index da6469c..3a0fab0 100644 +--- a/gas/config/tc-arm.h ++++ b/gas/config/tc-arm.h +@@ -82,6 +82,9 @@ struct fix; + /* We support double slash line-comments for compatibility with the ARM AArch64 Assembler. */ + #define DOUBLESLASH_LINE_COMMENTS + ++#define tc_symbol_chars arm_symbol_chars ++extern const char arm_symbol_chars[]; ++ + #define TC_FORCE_RELOCATION(FIX) arm_force_relocation (FIX) + + extern unsigned int arm_frag_max_var (struct frag *); +diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c +index af1f4cf..208d76d 100644 +--- a/gas/config/tc-ppc.c ++++ b/gas/config/tc-ppc.c +@@ -213,6 +213,9 @@ const char ppc_symbol_chars[] = "%["; + /* The dwarf2 data alignment, adjusted for 32 or 64 bit. */ + int ppc_cie_data_alignment; + ++/* The dwarf2 minimum instruction length. */ ++int ppc_dwarf2_line_min_insn_length; ++ + /* More than this number of nops in an alignment op gets a branch + instead. */ + unsigned long nop_limit = 4; +@@ -220,6 +223,7 @@ unsigned long nop_limit = 4; + /* The type of processor we are assembling for. This is one or more + of the PPC_OPCODE flags defined in opcode/ppc.h. */ + ppc_cpu_t ppc_cpu = 0; ++ppc_cpu_t sticky = 0; + + /* Flags set on encountering toc relocs. */ + enum { +@@ -1086,35 +1090,6 @@ const struct option md_longopts[] = { + }; + const size_t md_longopts_size = sizeof (md_longopts); + +-/* Convert the target integer stored in N bytes in BUF to a host +- integer, returning that value. */ +- +-static valueT +-md_chars_to_number (char *buf, int n) +-{ +- valueT result = 0; +- unsigned char *p = (unsigned char *) buf; +- +- if (target_big_endian) +- { +- while (n--) +- { +- result <<= 8; +- result |= (*p++ & 0xff); +- } +- } +- else +- { +- while (n--) +- { +- result <<= 8; +- result |= (p[n] & 0xff); +- } +- } +- +- return result; +-} +- + int + md_parse_option (int c, char *arg) + { +@@ -1186,7 +1161,7 @@ md_parse_option (int c, char *arg) + break; + + case 'm': +- new_cpu = ppc_parse_cpu (ppc_cpu, arg); ++ new_cpu = ppc_parse_cpu (ppc_cpu, &sticky, arg); + if (new_cpu != 0) + { + ppc_cpu = new_cpu; +@@ -1510,7 +1485,7 @@ insn_validate (const struct powerpc_opcode *op) + } + + /* Insert opcodes and macros into hash tables. Called at startup and +- for .cpu pseudo. */ ++ for .machine pseudo. */ + + static void + ppc_setup_opcodes (void) +@@ -1533,6 +1508,10 @@ ppc_setup_opcodes (void) + { + unsigned int i; + ++ /* An index into powerpc_operands is stored in struct fix ++ fx_pcrel_adjust which is 8 bits wide. */ ++ gas_assert (num_powerpc_operands < 256); ++ + /* Check operand masks. Code here and in the disassembler assumes + all the 1's in the mask are contiguous. */ + for (i = 0; i < num_powerpc_operands; ++i) +@@ -1695,6 +1674,7 @@ md_begin (void) + ppc_set_cpu (); + + ppc_cie_data_alignment = ppc_obj64 ? -8 : -4; ++ ppc_dwarf2_line_min_insn_length = (ppc_cpu & PPC_OPCODE_VLE) ? 2 : 4; + + #ifdef OBJ_ELF + /* Set the ELF flags if desired. */ +@@ -2447,6 +2427,25 @@ parse_toc_entry (enum toc_size_qualifier *toc_kind) + return 1; + } + #endif ++ ++#if defined (OBJ_XCOFF) || defined (OBJ_ELF) ++/* See whether a symbol is in the TOC section. */ ++ ++static int ++ppc_is_toc_sym (symbolS *sym) ++{ ++#ifdef OBJ_XCOFF ++ return symbol_get_tc (sym)->symbol_class == XMC_TC; ++#endif ++#ifdef OBJ_ELF ++ const char *sname = segment_name (S_GET_SEGMENT (sym)); ++ if (ppc_obj64) ++ return strcmp (sname, ".toc") == 0; ++ else ++ return strcmp (sname, ".got") == 0; ++#endif ++} ++#endif /* defined (OBJ_XCOFF) || defined (OBJ_ELF) */ + + + #ifdef OBJ_ELF +@@ -2529,9 +2528,6 @@ md_assemble (char *str) + int addr_mod; + int i; + unsigned int insn_length; +-#ifdef OBJ_ELF +- bfd_reloc_code_real_type reloc; +-#endif + + /* Get the opcode. */ + for (s = str; *s != '\0' && ! ISSPACE (*s); s++) +@@ -2813,6 +2809,7 @@ md_assemble (char *str) + { + #ifdef OBJ_ELF + /* Allow @HA, @L, @H on constants. */ ++ bfd_reloc_code_real_type reloc; + char *orig_str = str; + + if ((reloc = ppc_elf_suffix (&str, &ex)) != BFD_RELOC_UNUSED) +@@ -2878,9 +2875,10 @@ md_assemble (char *str) + insn = ppc_insert_operand (insn, operand, ex.X_add_number, + ppc_cpu, (char *) NULL, 0); + } +-#ifdef OBJ_ELF + else + { ++ bfd_reloc_code_real_type reloc = BFD_RELOC_UNUSED; ++#ifdef OBJ_ELF + if (ex.X_op == O_symbol && str[0] == '(') + { + const char *sym_name = S_GET_NAME (ex.X_add_symbol); +@@ -3058,8 +3056,7 @@ md_assemble (char *str) + break; + } + +- if (ppc_obj64 +- && (operand->flags & (PPC_OPERAND_DS | PPC_OPERAND_DQ)) != 0) ++ if ((operand->flags & (PPC_OPERAND_DS | PPC_OPERAND_DQ)) != 0) + { + switch (reloc) + { +@@ -3119,6 +3116,66 @@ md_assemble (char *str) + } + } + } ++#endif /* OBJ_ELF */ ++ ++ if (reloc != BFD_RELOC_UNUSED) ++ ; ++ /* Determine a BFD reloc value based on the operand information. ++ We are only prepared to turn a few of the operands into ++ relocs. */ ++ else if ((operand->flags & PPC_OPERAND_RELATIVE) != 0 ++ && operand->bitm == 0x3fffffc ++ && operand->shift == 0) ++ reloc = BFD_RELOC_PPC_B26; ++ else if ((operand->flags & PPC_OPERAND_RELATIVE) != 0 ++ && operand->bitm == 0xfffc ++ && operand->shift == 0) ++ reloc = BFD_RELOC_PPC_B16; ++ else if ((operand->flags & PPC_OPERAND_RELATIVE) != 0 ++ && operand->bitm == 0x1fe ++ && operand->shift == -1) ++ reloc = BFD_RELOC_PPC_VLE_REL8; ++ else if ((operand->flags & PPC_OPERAND_RELATIVE) != 0 ++ && operand->bitm == 0xfffe ++ && operand->shift == 0) ++ reloc = BFD_RELOC_PPC_VLE_REL15; ++ else if ((operand->flags & PPC_OPERAND_RELATIVE) != 0 ++ && operand->bitm == 0x1fffffe ++ && operand->shift == 0) ++ reloc = BFD_RELOC_PPC_VLE_REL24; ++ else if ((operand->flags & PPC_OPERAND_ABSOLUTE) != 0 ++ && operand->bitm == 0x3fffffc ++ && operand->shift == 0) ++ reloc = BFD_RELOC_PPC_BA26; ++ else if ((operand->flags & PPC_OPERAND_ABSOLUTE) != 0 ++ && operand->bitm == 0xfffc ++ && operand->shift == 0) ++ reloc = BFD_RELOC_PPC_BA16; ++#if defined (OBJ_XCOFF) || defined (OBJ_ELF) ++ else if ((operand->flags & PPC_OPERAND_PARENS) != 0 ++ && (operand->bitm & 0xfff0) == 0xfff0 ++ && operand->shift == 0) ++ { ++ if (ppc_is_toc_sym (ex.X_add_symbol)) ++ { ++ reloc = BFD_RELOC_PPC_TOC16; ++#ifdef OBJ_ELF ++ if (ppc_obj64 ++ && (operand->flags & PPC_OPERAND_DS) != 0) ++ reloc = BFD_RELOC_PPC64_TOC16_DS; ++#endif ++ } ++ else ++ { ++ reloc = BFD_RELOC_16; ++#ifdef OBJ_ELF ++ if (ppc_obj64 ++ && (operand->flags & PPC_OPERAND_DS) != 0) ++ reloc = BFD_RELOC_PPC64_ADDR16_DS; ++#endif ++ } ++ } ++#endif /* defined (OBJ_XCOFF) || defined (OBJ_ELF) */ + + /* We need to generate a fixup for this expression. */ + if (fc >= MAX_INSN_FIXUPS) +@@ -3128,18 +3185,6 @@ md_assemble (char *str) + fixups[fc].reloc = reloc; + ++fc; + } +-#else /* OBJ_ELF */ +- else +- { +- /* We need to generate a fixup for this expression. */ +- if (fc >= MAX_INSN_FIXUPS) +- as_fatal (_("too many fixups")); +- fixups[fc].exp = ex; +- fixups[fc].opindex = *opindex_ptr; +- fixups[fc].reloc = BFD_RELOC_UNUSED; +- ++fc; +- } +-#endif /* OBJ_ELF */ + + if (need_paren) + { +@@ -3240,27 +3285,22 @@ md_assemble (char *str) + dwarf2_emit_insn (insn_length); + #endif + +- /* Create any fixups. At this point we do not use a +- bfd_reloc_code_real_type, but instead just use the +- BFD_RELOC_UNUSED plus the operand index. This lets us easily +- handle fixups for any operand type, although that is admittedly +- not a very exciting feature. We pick a BFD reloc type in +- md_apply_fix. */ ++ /* Create any fixups. */ + for (i = 0; i < fc; i++) + { ++ fixS *fixP; + if (fixups[i].reloc != BFD_RELOC_UNUSED) + { + reloc_howto_type *reloc_howto; + int size; + int offset; +- fixS *fixP; + + reloc_howto = bfd_reloc_type_lookup (stdoutput, fixups[i].reloc); + if (!reloc_howto) + abort (); + + size = bfd_get_reloc_size (reloc_howto); +- offset = target_big_endian ? (4 - size) : 0; ++ offset = target_big_endian ? (insn_length - size) : 0; + + if (size < 1 || size > 4) + abort (); +@@ -3271,47 +3311,20 @@ md_assemble (char *str) + &fixups[i].exp, + reloc_howto->pc_relative, + fixups[i].reloc); +- +- /* Turn off complaints that the addend is too large for things like +- foo+100000@ha. */ +- switch (fixups[i].reloc) +- { +- case BFD_RELOC_16_GOTOFF: +- case BFD_RELOC_PPC_TOC16: +- case BFD_RELOC_LO16: +- case BFD_RELOC_HI16: +- case BFD_RELOC_HI16_S: +- case BFD_RELOC_PPC_VLE_LO16A: +- case BFD_RELOC_PPC_VLE_LO16D: +- case BFD_RELOC_PPC_VLE_HI16A: +- case BFD_RELOC_PPC_VLE_HI16D: +- case BFD_RELOC_PPC_VLE_HA16A: +- case BFD_RELOC_PPC_VLE_HA16D: +-#ifdef OBJ_ELF +- case BFD_RELOC_PPC64_HIGHER: +- case BFD_RELOC_PPC64_HIGHER_S: +- case BFD_RELOC_PPC64_HIGHEST: +- case BFD_RELOC_PPC64_HIGHEST_S: +-#endif +- fixP->fx_no_overflow = 1; +- break; +- default: +- break; +- } + } + else + { + const struct powerpc_operand *operand; + + operand = &powerpc_operands[fixups[i].opindex]; +- fix_new_exp (frag_now, +- f - frag_now->fr_literal, +- insn_length, +- &fixups[i].exp, +- (operand->flags & PPC_OPERAND_RELATIVE) != 0, +- ((bfd_reloc_code_real_type) +- (fixups[i].opindex + (int) BFD_RELOC_UNUSED))); ++ fixP = fix_new_exp (frag_now, ++ f - frag_now->fr_literal, ++ insn_length, ++ &fixups[i].exp, ++ (operand->flags & PPC_OPERAND_RELATIVE) != 0, ++ BFD_RELOC_UNUSED); + } ++ fixP->fx_pcrel_adjust = fixups[i].opindex; + } + } + +@@ -4834,7 +4847,7 @@ ppc_machine (int ignore ATTRIBUTE_UNUSED) + else + ppc_cpu = cpu_history[--curr_hist]; + } +- else if ((new_cpu = ppc_parse_cpu (ppc_cpu, cpu_string)) != 0) ++ else if ((new_cpu = ppc_parse_cpu (ppc_cpu, &sticky, cpu_string)) != 0) + ppc_cpu = new_cpu; + else + as_bad (_("invalid machine `%s'"), cpu_string); +@@ -4845,23 +4858,6 @@ ppc_machine (int ignore ATTRIBUTE_UNUSED) + + demand_empty_rest_of_line (); + } +- +-/* See whether a symbol is in the TOC section. */ +- +-static int +-ppc_is_toc_sym (symbolS *sym) +-{ +-#ifdef OBJ_XCOFF +- return symbol_get_tc (sym)->symbol_class == XMC_TC; +-#endif +-#ifdef OBJ_ELF +- const char *sname = segment_name (S_GET_SEGMENT (sym)); +- if (ppc_obj64) +- return strcmp (sname, ".toc") == 0; +- else +- return strcmp (sname, ".got") == 0; +-#endif +-} + #endif /* defined (OBJ_XCOFF) || defined (OBJ_ELF) */ + + #ifdef TE_PE +@@ -6295,13 +6291,7 @@ ppc_handle_align (struct frag *fragP) + } + + /* Apply a fixup to the object code. This is called for all the +- fixups we generated by the call to fix_new_exp, above. In the call +- above we used a reloc code which was the largest legal reloc code +- plus the operand index. Here we undo that to recover the operand +- index. At this point all symbol values should be fully resolved, +- and we attempt to completely resolve the reloc. If we can not do +- that, we determine the correct reloc code and put it back in the +- fixup. */ ++ fixups we generated by the calls to fix_new_exp, above. */ + + void + md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) +@@ -6345,16 +6335,15 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) + as_bad_where (fixP->fx_file, fixP->fx_line, _("expression too complex")); + } + +- if ((int) fixP->fx_r_type >= (int) BFD_RELOC_UNUSED) ++ if (fixP->fx_pcrel_adjust != 0) + { +- int opindex; +- const struct powerpc_operand *operand; ++ /* Handle relocs in an insn. */ ++ ++ int opindex = fixP->fx_pcrel_adjust & 0xff; ++ const struct powerpc_operand *operand = &powerpc_operands[opindex]; + char *where; + unsigned long insn; +- +- opindex = (int) fixP->fx_r_type - (int) BFD_RELOC_UNUSED; +- +- operand = &powerpc_operands[opindex]; ++ offsetT fieldval; + + #ifdef OBJ_XCOFF + /* An instruction like `lwz 9,sym(30)' when `sym' is not a TOC symbol +@@ -6375,437 +6364,74 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) + fixP->fx_done = 1; + } + #endif +- +- /* Fetch the instruction, insert the fully resolved operand +- value, and stuff the instruction back again. */ +- where = fixP->fx_frag->fr_literal + fixP->fx_where; +- if (target_big_endian) +- { +- if (fixP->fx_size == 4) +- insn = bfd_getb32 ((unsigned char *) where); +- else +- insn = bfd_getb16 ((unsigned char *) where); +- } +- else +- { +- if (fixP->fx_size == 4) +- insn = bfd_getl32 ((unsigned char *) where); +- else +- insn = bfd_getl16 ((unsigned char *) where); +- } +- insn = ppc_insert_operand (insn, operand, (offsetT) value, +- fixP->tc_fix_data.ppc_cpu, +- fixP->fx_file, fixP->fx_line); +- if (target_big_endian) +- { +- if (fixP->fx_size == 4) +- bfd_putb32 ((bfd_vma) insn, (unsigned char *) where); +- else +- bfd_putb16 ((bfd_vma) insn, (unsigned char *) where); +- } +- else +- { +- if (fixP->fx_size == 4) +- bfd_putl32 ((bfd_vma) insn, (unsigned char *) where); +- else +- bfd_putl16 ((bfd_vma) insn, (unsigned char *) where); +- } +- +- if (fixP->fx_done) +- /* Nothing else to do here. */ +- return; +- +- gas_assert (fixP->fx_addsy != NULL); +- +- /* Determine a BFD reloc value based on the operand information. +- We are only prepared to turn a few of the operands into +- relocs. */ +- if ((operand->flags & PPC_OPERAND_RELATIVE) != 0 +- && operand->bitm == 0x3fffffc +- && operand->shift == 0) +- fixP->fx_r_type = BFD_RELOC_PPC_B26; +- else if ((operand->flags & PPC_OPERAND_RELATIVE) != 0 +- && operand->bitm == 0xfffc +- && operand->shift == 0) +- { +- fixP->fx_r_type = BFD_RELOC_PPC_B16; +-#ifdef OBJ_XCOFF +- fixP->fx_size = 2; +- if (target_big_endian) +- fixP->fx_where += 2; +-#endif +- } +- else if ((operand->flags & PPC_OPERAND_RELATIVE) != 0 +- && operand->bitm == 0x1fe +- && operand->shift == -1) +- fixP->fx_r_type = BFD_RELOC_PPC_VLE_REL8; +- else if ((operand->flags & PPC_OPERAND_RELATIVE) != 0 +- && operand->bitm == 0xfffe +- && operand->shift == 0) +- fixP->fx_r_type = BFD_RELOC_PPC_VLE_REL15; +- else if ((operand->flags & PPC_OPERAND_RELATIVE) != 0 +- && operand->bitm == 0x1fffffe +- && operand->shift == 0) +- fixP->fx_r_type = BFD_RELOC_PPC_VLE_REL24; +- else if ((operand->flags & PPC_OPERAND_ABSOLUTE) != 0 +- && operand->bitm == 0x3fffffc +- && operand->shift == 0) +- fixP->fx_r_type = BFD_RELOC_PPC_BA26; +- else if ((operand->flags & PPC_OPERAND_ABSOLUTE) != 0 +- && operand->bitm == 0xfffc +- && operand->shift == 0) +- { +- fixP->fx_r_type = BFD_RELOC_PPC_BA16; +-#ifdef OBJ_XCOFF +- fixP->fx_size = 2; +- if (target_big_endian) +- fixP->fx_where += 2; +-#endif +- } +-#if defined (OBJ_XCOFF) || defined (OBJ_ELF) +- else if ((operand->flags & PPC_OPERAND_PARENS) != 0 +- && (operand->bitm & 0xfff0) == 0xfff0 +- && operand->shift == 0) +- { +- if (ppc_is_toc_sym (fixP->fx_addsy)) +- { +- fixP->fx_r_type = BFD_RELOC_PPC_TOC16; +-#ifdef OBJ_ELF +- if (ppc_obj64 +- && (operand->flags & PPC_OPERAND_DS) != 0) +- fixP->fx_r_type = BFD_RELOC_PPC64_TOC16_DS; +-#endif +- } +- else +- { +- fixP->fx_r_type = BFD_RELOC_16; +-#ifdef OBJ_ELF +- if (ppc_obj64 +- && (operand->flags & PPC_OPERAND_DS) != 0) +- fixP->fx_r_type = BFD_RELOC_PPC64_ADDR16_DS; +-#endif +- } +- fixP->fx_size = 2; +- if (target_big_endian) +- fixP->fx_where += 2; +- } +-#endif /* defined (OBJ_XCOFF) || defined (OBJ_ELF) */ +- else +- { +- char *sfile; +- unsigned int sline; +- +- /* Use expr_symbol_where to see if this is an expression +- symbol. */ +- if (expr_symbol_where (fixP->fx_addsy, &sfile, &sline)) +- as_bad_where (fixP->fx_file, fixP->fx_line, +- _("unresolved expression that must be resolved")); +- else +- as_bad_where (fixP->fx_file, fixP->fx_line, +- _("unsupported relocation against %s"), +- S_GET_NAME (fixP->fx_addsy)); +- fixP->fx_done = 1; +- return; +- } +- } +- else +- { +-#ifdef OBJ_ELF +- ppc_elf_validate_fix (fixP, seg); +-#endif ++ fieldval = value; + switch (fixP->fx_r_type) + { +- case BFD_RELOC_CTOR: +- if (ppc_obj64) +- goto ctor64; +- /* fall through */ +- +- case BFD_RELOC_32: +- if (fixP->fx_pcrel) +- fixP->fx_r_type = BFD_RELOC_32_PCREL; +- /* fall through */ +- +- case BFD_RELOC_RVA: +- case BFD_RELOC_32_PCREL: +- case BFD_RELOC_PPC_EMB_NADDR32: +- md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, +- value, 4); +- break; +- +- case BFD_RELOC_64: +- ctor64: +- if (fixP->fx_pcrel) +- fixP->fx_r_type = BFD_RELOC_64_PCREL; +- /* fall through */ +- +- case BFD_RELOC_64_PCREL: +- md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, +- value, 8); +- break; +- +- case BFD_RELOC_GPREL16: +- case BFD_RELOC_16_GOT_PCREL: +- case BFD_RELOC_16_GOTOFF: +- case BFD_RELOC_LO16_GOTOFF: +- case BFD_RELOC_HI16_GOTOFF: +- case BFD_RELOC_HI16_S_GOTOFF: +- case BFD_RELOC_16_BASEREL: +- case BFD_RELOC_LO16_BASEREL: +- case BFD_RELOC_HI16_BASEREL: +- case BFD_RELOC_HI16_S_BASEREL: +- case BFD_RELOC_PPC_EMB_NADDR16: +- case BFD_RELOC_PPC_EMB_NADDR16_LO: +- case BFD_RELOC_PPC_EMB_NADDR16_HI: +- case BFD_RELOC_PPC_EMB_NADDR16_HA: +- case BFD_RELOC_PPC_EMB_SDAI16: +- case BFD_RELOC_PPC_EMB_SDA2REL: +- case BFD_RELOC_PPC_EMB_SDA2I16: +- case BFD_RELOC_PPC_EMB_RELSEC16: +- case BFD_RELOC_PPC_EMB_RELST_LO: +- case BFD_RELOC_PPC_EMB_RELST_HI: +- case BFD_RELOC_PPC_EMB_RELST_HA: +- case BFD_RELOC_PPC_EMB_RELSDA: +- case BFD_RELOC_PPC_TOC16: + #ifdef OBJ_ELF +- case BFD_RELOC_PPC64_TOC16_LO: +- case BFD_RELOC_PPC64_TOC16_HI: +- case BFD_RELOC_PPC64_TOC16_HA: +-#endif +- if (fixP->fx_pcrel) +- { +- if (fixP->fx_addsy != NULL) +- as_bad_where (fixP->fx_file, fixP->fx_line, +- _("cannot emit PC relative %s relocation against %s"), +- bfd_get_reloc_code_name (fixP->fx_r_type), +- S_GET_NAME (fixP->fx_addsy)); +- else +- as_bad_where (fixP->fx_file, fixP->fx_line, +- _("cannot emit PC relative %s relocation"), +- bfd_get_reloc_code_name (fixP->fx_r_type)); +- } +- +- md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, +- value, 2); +- break; +- +- case BFD_RELOC_16: ++ case BFD_RELOC_PPC64_ADDR16_LO_DS: + if (fixP->fx_pcrel) +- fixP->fx_r_type = BFD_RELOC_16_PCREL; ++ goto bad_pcrel; + /* fall through */ +- +- case BFD_RELOC_16_PCREL: +- md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, +- value, 2); +- break; +- ++#endif + case BFD_RELOC_LO16: + if (fixP->fx_pcrel) + fixP->fx_r_type = BFD_RELOC_LO16_PCREL; + /* fall through */ +- + case BFD_RELOC_LO16_PCREL: +- md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, +- value, 2); ++ fieldval = SEX16 (value); + break; + +- /* This case happens when you write, for example, +- lis %r3,(L1-L2)@ha +- where L1 and L2 are defined later. */ + case BFD_RELOC_HI16: + if (fixP->fx_pcrel) + fixP->fx_r_type = BFD_RELOC_HI16_PCREL; + /* fall through */ +- + case BFD_RELOC_HI16_PCREL: +- md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, +- PPC_HI (value), 2); ++ fieldval = SEX16 (PPC_HI (value)); + break; + + case BFD_RELOC_HI16_S: + if (fixP->fx_pcrel) + fixP->fx_r_type = BFD_RELOC_HI16_S_PCREL; + /* fall through */ +- + case BFD_RELOC_HI16_S_PCREL: +- md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, +- PPC_HA (value), 2); ++ fieldval = SEX16 (PPC_HA (value)); + break; + +- case BFD_RELOC_PPC_VLE_SDAREL_LO16A: +- case BFD_RELOC_PPC_VLE_LO16A: +- { +- int tval = PPC_VLE_LO16A (value); +- valueT oldval = md_chars_to_number ( +- fixP->fx_frag->fr_literal + fixP->fx_where, 4); +- md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, +- (oldval | tval), 4); +- } ++#ifdef OBJ_ELF ++ case BFD_RELOC_PPC64_HIGHER: ++ if (fixP->fx_pcrel) ++ goto bad_pcrel; ++ fieldval = SEX16 (PPC_HIGHER (value)); + break; + +- case BFD_RELOC_PPC_VLE_SDAREL_LO16D: +- case BFD_RELOC_PPC_VLE_LO16D: +- { +- int tval = PPC_VLE_LO16D (value); +- valueT oldval = md_chars_to_number ( +- fixP->fx_frag->fr_literal + fixP->fx_where, 4); +- md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, +- (oldval | tval), 4); +- } ++ case BFD_RELOC_PPC64_HIGHER_S: ++ if (fixP->fx_pcrel) ++ goto bad_pcrel; ++ fieldval = SEX16 (PPC_HIGHERA (value)); + break; + +- case BFD_RELOC_PPC_VLE_SDAREL_HI16A: +- case BFD_RELOC_PPC_VLE_HI16A: +- { +- int tval = PPC_VLE_HI16A (value); +- valueT oldval = md_chars_to_number ( +- fixP->fx_frag->fr_literal + fixP->fx_where, 4); +- md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, +- (oldval | tval), 4); +- } +- break; +- +- case BFD_RELOC_PPC_VLE_SDAREL_HI16D: +- case BFD_RELOC_PPC_VLE_HI16D: +- { +- int tval = PPC_VLE_HI16D (value); +- valueT oldval = md_chars_to_number ( +- fixP->fx_frag->fr_literal + fixP->fx_where, 4); +- md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, +- (oldval | tval), 4); +- } +- break; +- +- case BFD_RELOC_PPC_VLE_SDAREL_HA16A: +- case BFD_RELOC_PPC_VLE_HA16A: +- { +- int tval = PPC_VLE_HA16A (value); +- valueT oldval = md_chars_to_number ( +- fixP->fx_frag->fr_literal + fixP->fx_where, 4); +- md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, +- (oldval | tval), 4); +- } +- break; +- +- case BFD_RELOC_PPC_VLE_SDAREL_HA16D: +- case BFD_RELOC_PPC_VLE_HA16D: +- { +- int tval = PPC_VLE_HA16D (value); +- valueT oldval = md_chars_to_number ( +- fixP->fx_frag->fr_literal + fixP->fx_where, 4); +- md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, +- (oldval | tval), 4); +- } +- break; +- +- case BFD_RELOC_PPC_VLE_SDA21_LO: +- { +- int tval = PPC_LO (value); +- valueT oldval = md_chars_to_number ( +- fixP->fx_frag->fr_literal + fixP->fx_where, 4); +- md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, +- (oldval | tval), 4); +- } +- break; +- +- case BFD_RELOC_PPC_VLE_SDA21: +- { +- valueT oldval = md_chars_to_number ( +- fixP->fx_frag->fr_literal + fixP->fx_where, 4); +- md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, +- (oldval | value), 4); +- } +- break; +- +-#ifdef OBJ_XCOFF +- case BFD_RELOC_NONE: +- break; +-#endif +- +-#ifdef OBJ_ELF +- case BFD_RELOC_PPC64_HIGHER: +- if (fixP->fx_pcrel) +- abort (); +- md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, +- PPC_HIGHER (value), 2); +- break; +- +- case BFD_RELOC_PPC64_HIGHER_S: +- if (fixP->fx_pcrel) +- abort (); +- md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, +- PPC_HIGHERA (value), 2); +- break; +- +- case BFD_RELOC_PPC64_HIGHEST: +- if (fixP->fx_pcrel) +- abort (); +- md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, +- PPC_HIGHEST (value), 2); ++ case BFD_RELOC_PPC64_HIGHEST: ++ if (fixP->fx_pcrel) ++ goto bad_pcrel; ++ fieldval = SEX16 (PPC_HIGHEST (value)); + break; + + case BFD_RELOC_PPC64_HIGHEST_S: + if (fixP->fx_pcrel) +- abort (); +- md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, +- PPC_HIGHESTA (value), 2); +- break; +- +- case BFD_RELOC_PPC64_ADDR16_DS: +- case BFD_RELOC_PPC64_ADDR16_LO_DS: +- case BFD_RELOC_PPC64_GOT16_DS: +- case BFD_RELOC_PPC64_GOT16_LO_DS: +- case BFD_RELOC_PPC64_PLT16_LO_DS: +- case BFD_RELOC_PPC64_SECTOFF_DS: +- case BFD_RELOC_PPC64_SECTOFF_LO_DS: +- case BFD_RELOC_PPC64_TOC16_DS: +- case BFD_RELOC_PPC64_TOC16_LO_DS: +- case BFD_RELOC_PPC64_PLTGOT16_DS: +- case BFD_RELOC_PPC64_PLTGOT16_LO_DS: +- if (fixP->fx_pcrel) +- abort (); +- { +- char *where = fixP->fx_frag->fr_literal + fixP->fx_where; +- unsigned long val, mask; +- +- if (target_big_endian) +- val = bfd_getb32 (where - 2); +- else +- val = bfd_getl32 (where); +- mask = 0xfffc; +- /* lq insns reserve the four lsbs. */ +- if ((ppc_cpu & PPC_OPCODE_POWER4) != 0 +- && (val & (0x3f << 26)) == (56u << 26)) +- mask = 0xfff0; +- val |= value & mask; +- if (target_big_endian) +- bfd_putb16 ((bfd_vma) val, where); +- else +- bfd_putl16 ((bfd_vma) val, where); +- } ++ goto bad_pcrel; ++ fieldval = SEX16 (PPC_HIGHESTA (value)); + break; + +- case BFD_RELOC_PPC_B16_BRTAKEN: +- case BFD_RELOC_PPC_B16_BRNTAKEN: +- case BFD_RELOC_PPC_BA16_BRTAKEN: +- case BFD_RELOC_PPC_BA16_BRNTAKEN: +- break; +- +- case BFD_RELOC_PPC_TLS: +- case BFD_RELOC_PPC_TLSGD: +- case BFD_RELOC_PPC_TLSLD: +- break; +- +- case BFD_RELOC_PPC_DTPMOD: ++ /* The following relocs can't be calculated by the assembler. ++ Leave the field zero. */ + case BFD_RELOC_PPC_TPREL16: + case BFD_RELOC_PPC_TPREL16_LO: + case BFD_RELOC_PPC_TPREL16_HI: + case BFD_RELOC_PPC_TPREL16_HA: +- case BFD_RELOC_PPC_TPREL: + case BFD_RELOC_PPC_DTPREL16: + case BFD_RELOC_PPC_DTPREL16_LO: + case BFD_RELOC_PPC_DTPREL16_HI: + case BFD_RELOC_PPC_DTPREL16_HA: +- case BFD_RELOC_PPC_DTPREL: + case BFD_RELOC_PPC_GOT_TLSGD16: + case BFD_RELOC_PPC_GOT_TLSGD16_LO: + case BFD_RELOC_PPC_GOT_TLSGD16_HI: +@@ -6834,98 +6460,398 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) + case BFD_RELOC_PPC64_DTPREL16_HIGHERA: + case BFD_RELOC_PPC64_DTPREL16_HIGHEST: + case BFD_RELOC_PPC64_DTPREL16_HIGHESTA: ++ gas_assert (fixP->fx_addsy != NULL); + S_SET_THREAD_LOCAL (fixP->fx_addsy); ++ fieldval = 0; ++ if (fixP->fx_pcrel) ++ goto bad_pcrel; + break; +-#endif +- /* Because SDA21 modifies the register field, the size is set to 4 +- bytes, rather than 2, so offset it here appropriately. */ ++ ++ /* These also should leave the field zero for the same ++ reason. Note that older versions of gas wrote values ++ here. If we want to go back to the old behaviour, then ++ all _LO and _LO_DS cases will need to be treated like ++ BFD_RELOC_LO16_PCREL above. Similarly for _HI etc. */ ++ case BFD_RELOC_16_GOTOFF: ++ case BFD_RELOC_LO16_GOTOFF: ++ case BFD_RELOC_HI16_GOTOFF: ++ case BFD_RELOC_HI16_S_GOTOFF: ++ case BFD_RELOC_LO16_PLTOFF: ++ case BFD_RELOC_HI16_PLTOFF: ++ case BFD_RELOC_HI16_S_PLTOFF: ++ case BFD_RELOC_GPREL16: ++ case BFD_RELOC_16_BASEREL: ++ case BFD_RELOC_LO16_BASEREL: ++ case BFD_RELOC_HI16_BASEREL: ++ case BFD_RELOC_HI16_S_BASEREL: ++ case BFD_RELOC_PPC_TOC16: ++ case BFD_RELOC_PPC64_TOC16_LO: ++ case BFD_RELOC_PPC64_TOC16_HI: ++ case BFD_RELOC_PPC64_TOC16_HA: ++ case BFD_RELOC_PPC64_PLTGOT16: ++ case BFD_RELOC_PPC64_PLTGOT16_LO: ++ case BFD_RELOC_PPC64_PLTGOT16_HI: ++ case BFD_RELOC_PPC64_PLTGOT16_HA: ++ case BFD_RELOC_PPC64_GOT16_DS: ++ case BFD_RELOC_PPC64_GOT16_LO_DS: ++ case BFD_RELOC_PPC64_PLT16_LO_DS: ++ case BFD_RELOC_PPC64_SECTOFF_DS: ++ case BFD_RELOC_PPC64_SECTOFF_LO_DS: ++ case BFD_RELOC_PPC64_TOC16_DS: ++ case BFD_RELOC_PPC64_TOC16_LO_DS: ++ case BFD_RELOC_PPC64_PLTGOT16_DS: ++ case BFD_RELOC_PPC64_PLTGOT16_LO_DS: ++ case BFD_RELOC_PPC_EMB_NADDR16: ++ case BFD_RELOC_PPC_EMB_NADDR16_LO: ++ case BFD_RELOC_PPC_EMB_NADDR16_HI: ++ case BFD_RELOC_PPC_EMB_NADDR16_HA: ++ case BFD_RELOC_PPC_EMB_SDAI16: ++ case BFD_RELOC_PPC_EMB_SDA2I16: ++ case BFD_RELOC_PPC_EMB_SDA2REL: + case BFD_RELOC_PPC_EMB_SDA21: ++ case BFD_RELOC_PPC_EMB_MRKREF: ++ case BFD_RELOC_PPC_EMB_RELSEC16: ++ case BFD_RELOC_PPC_EMB_RELST_LO: ++ case BFD_RELOC_PPC_EMB_RELST_HI: ++ case BFD_RELOC_PPC_EMB_RELST_HA: ++ case BFD_RELOC_PPC_EMB_BIT_FLD: ++ case BFD_RELOC_PPC_EMB_RELSDA: ++ case BFD_RELOC_PPC_VLE_SDA21: ++ case BFD_RELOC_PPC_VLE_SDA21_LO: ++ case BFD_RELOC_PPC_VLE_SDAREL_LO16A: ++ case BFD_RELOC_PPC_VLE_SDAREL_LO16D: ++ case BFD_RELOC_PPC_VLE_SDAREL_HI16A: ++ case BFD_RELOC_PPC_VLE_SDAREL_HI16D: ++ case BFD_RELOC_PPC_VLE_SDAREL_HA16A: ++ case BFD_RELOC_PPC_VLE_SDAREL_HA16D: ++ gas_assert (fixP->fx_addsy != NULL); ++ /* Fall thru */ ++ ++ case BFD_RELOC_PPC_TLS: ++ case BFD_RELOC_PPC_TLSGD: ++ case BFD_RELOC_PPC_TLSLD: ++ fieldval = 0; + if (fixP->fx_pcrel) +- abort (); ++ goto bad_pcrel; ++ break; ++#endif + +- md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where +- + ((target_big_endian) ? 2 : 0), +- value, 2); ++ default: + break; ++ } + +- case BFD_RELOC_8: +- if (fixP->fx_pcrel) ++#ifdef OBJ_ELF ++/* powerpc uses RELA style relocs, so if emitting a reloc the field ++ contents can stay at zero. */ ++#define APPLY_RELOC fixP->fx_done ++#else ++#define APPLY_RELOC 1 ++#endif ++ if ((fieldval != 0 && APPLY_RELOC) || operand->insert != NULL) ++ { ++ /* Fetch the instruction, insert the fully resolved operand ++ value, and stuff the instruction back again. */ ++ where = fixP->fx_frag->fr_literal + fixP->fx_where; ++ if (target_big_endian) + { +- /* This can occur if there is a bug in the input assembler, eg: +- ".byte - ." */ +- if (fixP->fx_addsy) +- as_bad (_("unable to handle reference to symbol %s"), +- S_GET_NAME (fixP->fx_addsy)); ++ if (fixP->fx_size == 4) ++ insn = bfd_getb32 ((unsigned char *) where); + else +- as_bad (_("unable to resolve expression")); +- fixP->fx_done = 1; ++ insn = bfd_getb16 ((unsigned char *) where); ++ } ++ else ++ { ++ if (fixP->fx_size == 4) ++ insn = bfd_getl32 ((unsigned char *) where); ++ else ++ insn = bfd_getl16 ((unsigned char *) where); ++ } ++ insn = ppc_insert_operand (insn, operand, fieldval, ++ fixP->tc_fix_data.ppc_cpu, ++ fixP->fx_file, fixP->fx_line); ++ if (target_big_endian) ++ { ++ if (fixP->fx_size == 4) ++ bfd_putb32 ((bfd_vma) insn, (unsigned char *) where); ++ else ++ bfd_putb16 ((bfd_vma) insn, (unsigned char *) where); + } + else +- md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, +- value, 1); ++ { ++ if (fixP->fx_size == 4) ++ bfd_putl32 ((bfd_vma) insn, (unsigned char *) where); ++ else ++ bfd_putl16 ((bfd_vma) insn, (unsigned char *) where); ++ } ++ } ++ ++ if (fixP->fx_done) ++ /* Nothing else to do here. */ ++ return; ++ ++ gas_assert (fixP->fx_addsy != NULL); ++ if (fixP->fx_r_type == BFD_RELOC_UNUSED) ++ { ++ char *sfile; ++ unsigned int sline; ++ ++ /* Use expr_symbol_where to see if this is an expression ++ symbol. */ ++ if (expr_symbol_where (fixP->fx_addsy, &sfile, &sline)) ++ as_bad_where (fixP->fx_file, fixP->fx_line, ++ _("unresolved expression that must be resolved")); ++ else ++ as_bad_where (fixP->fx_file, fixP->fx_line, ++ _("unsupported relocation against %s"), ++ S_GET_NAME (fixP->fx_addsy)); ++ fixP->fx_done = 1; ++ return; ++ } ++ } ++ else ++ { ++ int size = 0; ++ offsetT fieldval = value; ++ ++ /* Handle relocs in data. */ ++ switch (fixP->fx_r_type) ++ { ++ case BFD_RELOC_CTOR: ++ if (ppc_obj64) ++ goto ctor64; ++ /* fall through */ ++ ++ case BFD_RELOC_32: ++ if (fixP->fx_pcrel) ++ fixP->fx_r_type = BFD_RELOC_32_PCREL; ++ /* fall through */ ++ ++ case BFD_RELOC_32_PCREL: ++ case BFD_RELOC_RVA: ++ size = 4; + break; + +- case BFD_RELOC_24_PLT_PCREL: +- case BFD_RELOC_PPC_LOCAL24PC: +- if (!fixP->fx_pcrel && !fixP->fx_done) +- abort (); ++ case BFD_RELOC_64: ++ ctor64: ++ if (fixP->fx_pcrel) ++ fixP->fx_r_type = BFD_RELOC_64_PCREL; ++ /* fall through */ + +- if (fixP->fx_done) +- { +- char *where; +- unsigned long insn; ++ case BFD_RELOC_64_PCREL: ++ size = 8; ++ break; + +- /* Fetch the instruction, insert the fully resolved operand +- value, and stuff the instruction back again. */ +- where = fixP->fx_frag->fr_literal + fixP->fx_where; +- if (target_big_endian) +- insn = bfd_getb32 ((unsigned char *) where); ++ case BFD_RELOC_16: ++ if (fixP->fx_pcrel) ++ fixP->fx_r_type = BFD_RELOC_16_PCREL; ++ /* fall through */ ++ ++ case BFD_RELOC_16_PCREL: ++ size = 2; ++ break; ++ ++ case BFD_RELOC_8: ++ if (fixP->fx_pcrel) ++ { ++#ifdef OBJ_ELF ++ bad_pcrel: ++#endif ++ if (fixP->fx_addsy) ++ { ++ char *sfile; ++ unsigned int sline; ++ ++ /* Use expr_symbol_where to see if this is an ++ expression symbol. */ ++ if (expr_symbol_where (fixP->fx_addsy, &sfile, &sline)) ++ as_bad_where (fixP->fx_file, fixP->fx_line, ++ _("unresolved expression that must" ++ " be resolved")); ++ else ++ as_bad_where (fixP->fx_file, fixP->fx_line, ++ _("cannot emit PC relative %s relocation" ++ " against %s"), ++ bfd_get_reloc_code_name (fixP->fx_r_type), ++ S_GET_NAME (fixP->fx_addsy)); ++ } + else +- insn = bfd_getl32 ((unsigned char *) where); +- if ((value & 3) != 0) + as_bad_where (fixP->fx_file, fixP->fx_line, +- _("must branch to an address a multiple of 4")); +- if ((offsetT) value < -0x40000000 +- || (offsetT) value >= 0x40000000) +- as_bad_where (fixP->fx_file, fixP->fx_line, +- _("@local or @plt branch destination is too far away, %ld bytes"), +- (long) value); +- insn = insn | (value & 0x03fffffc); +- if (target_big_endian) +- bfd_putb32 ((bfd_vma) insn, (unsigned char *) where); +- else +- bfd_putl32 ((bfd_vma) insn, (unsigned char *) where); ++ _("unable to resolve expression")); ++ fixP->fx_done = 1; + } ++ else ++ size = 1; + break; + + case BFD_RELOC_VTABLE_INHERIT: +- fixP->fx_done = 0; + if (fixP->fx_addsy + && !S_IS_DEFINED (fixP->fx_addsy) + && !S_IS_WEAK (fixP->fx_addsy)) + S_SET_WEAK (fixP->fx_addsy); +- break; ++ /* Fall thru */ + + case BFD_RELOC_VTABLE_ENTRY: + fixP->fx_done = 0; + break; + + #ifdef OBJ_ELF +- /* Generated by reference to `sym@tocbase'. The sym is +- ignored by the linker. */ ++ /* These can appear with @l etc. in data. */ ++ case BFD_RELOC_LO16: ++ if (fixP->fx_pcrel) ++ fixP->fx_r_type = BFD_RELOC_LO16_PCREL; ++ case BFD_RELOC_LO16_PCREL: ++ size = 2; ++ break; ++ ++ case BFD_RELOC_HI16: ++ if (fixP->fx_pcrel) ++ fixP->fx_r_type = BFD_RELOC_HI16_PCREL; ++ case BFD_RELOC_HI16_PCREL: ++ size = 2; ++ fieldval = PPC_HI (value); ++ break; ++ ++ case BFD_RELOC_HI16_S: ++ if (fixP->fx_pcrel) ++ fixP->fx_r_type = BFD_RELOC_HI16_S_PCREL; ++ case BFD_RELOC_HI16_S_PCREL: ++ size = 2; ++ fieldval = PPC_HA (value); ++ break; ++ ++ case BFD_RELOC_PPC64_HIGHER: ++ if (fixP->fx_pcrel) ++ goto bad_pcrel; ++ size = 2; ++ fieldval = PPC_HIGHER (value); ++ break; ++ ++ case BFD_RELOC_PPC64_HIGHER_S: ++ if (fixP->fx_pcrel) ++ goto bad_pcrel; ++ size = 2; ++ fieldval = PPC_HIGHERA (value); ++ break; ++ ++ case BFD_RELOC_PPC64_HIGHEST: ++ if (fixP->fx_pcrel) ++ goto bad_pcrel; ++ size = 2; ++ fieldval = PPC_HIGHEST (value); ++ break; ++ ++ case BFD_RELOC_PPC64_HIGHEST_S: ++ if (fixP->fx_pcrel) ++ goto bad_pcrel; ++ size = 2; ++ fieldval = PPC_HIGHESTA (value); ++ break; ++ ++ case BFD_RELOC_PPC_DTPMOD: ++ case BFD_RELOC_PPC_TPREL: ++ case BFD_RELOC_PPC_DTPREL: ++ S_SET_THREAD_LOCAL (fixP->fx_addsy); ++ break; ++ ++ /* Just punt all of these to the linker. */ ++ case BFD_RELOC_PPC_B16_BRTAKEN: ++ case BFD_RELOC_PPC_B16_BRNTAKEN: ++ case BFD_RELOC_16_GOTOFF: ++ case BFD_RELOC_LO16_GOTOFF: ++ case BFD_RELOC_HI16_GOTOFF: ++ case BFD_RELOC_HI16_S_GOTOFF: ++ case BFD_RELOC_LO16_PLTOFF: ++ case BFD_RELOC_HI16_PLTOFF: ++ case BFD_RELOC_HI16_S_PLTOFF: ++ case BFD_RELOC_PPC_COPY: ++ case BFD_RELOC_PPC_GLOB_DAT: ++ case BFD_RELOC_16_BASEREL: ++ case BFD_RELOC_LO16_BASEREL: ++ case BFD_RELOC_HI16_BASEREL: ++ case BFD_RELOC_HI16_S_BASEREL: ++ case BFD_RELOC_PPC_TLS: ++ case BFD_RELOC_PPC_DTPREL16_LO: ++ case BFD_RELOC_PPC_DTPREL16_HI: ++ case BFD_RELOC_PPC_DTPREL16_HA: ++ case BFD_RELOC_PPC_TPREL16_LO: ++ case BFD_RELOC_PPC_TPREL16_HI: ++ case BFD_RELOC_PPC_TPREL16_HA: ++ case BFD_RELOC_PPC_GOT_TLSGD16: ++ case BFD_RELOC_PPC_GOT_TLSGD16_LO: ++ case BFD_RELOC_PPC_GOT_TLSGD16_HI: ++ case BFD_RELOC_PPC_GOT_TLSGD16_HA: ++ case BFD_RELOC_PPC_GOT_TLSLD16: ++ case BFD_RELOC_PPC_GOT_TLSLD16_LO: ++ case BFD_RELOC_PPC_GOT_TLSLD16_HI: ++ case BFD_RELOC_PPC_GOT_TLSLD16_HA: ++ case BFD_RELOC_PPC_GOT_DTPREL16: ++ case BFD_RELOC_PPC_GOT_DTPREL16_LO: ++ case BFD_RELOC_PPC_GOT_DTPREL16_HI: ++ case BFD_RELOC_PPC_GOT_DTPREL16_HA: ++ case BFD_RELOC_PPC_GOT_TPREL16: ++ case BFD_RELOC_PPC_GOT_TPREL16_LO: ++ case BFD_RELOC_PPC_GOT_TPREL16_HI: ++ case BFD_RELOC_PPC_GOT_TPREL16_HA: ++ case BFD_RELOC_24_PLT_PCREL: ++ case BFD_RELOC_PPC_LOCAL24PC: ++ case BFD_RELOC_32_PLT_PCREL: ++ case BFD_RELOC_GPREL16: ++ case BFD_RELOC_PPC_VLE_SDAREL_LO16A: ++ case BFD_RELOC_PPC_VLE_SDAREL_HI16A: ++ case BFD_RELOC_PPC_VLE_SDAREL_HA16A: ++ case BFD_RELOC_PPC_EMB_NADDR32: ++ case BFD_RELOC_PPC_EMB_NADDR16: ++ case BFD_RELOC_PPC_EMB_NADDR16_LO: ++ case BFD_RELOC_PPC_EMB_NADDR16_HI: ++ case BFD_RELOC_PPC_EMB_NADDR16_HA: ++ case BFD_RELOC_PPC_EMB_SDAI16: ++ case BFD_RELOC_PPC_EMB_SDA2REL: ++ case BFD_RELOC_PPC_EMB_SDA2I16: ++ case BFD_RELOC_PPC_EMB_SDA21: ++ case BFD_RELOC_PPC_VLE_SDA21_LO: ++ case BFD_RELOC_PPC_EMB_MRKREF: ++ case BFD_RELOC_PPC_EMB_RELSEC16: ++ case BFD_RELOC_PPC_EMB_RELST_LO: ++ case BFD_RELOC_PPC_EMB_RELST_HI: ++ case BFD_RELOC_PPC_EMB_RELST_HA: ++ case BFD_RELOC_PPC_EMB_BIT_FLD: ++ case BFD_RELOC_PPC_EMB_RELSDA: + case BFD_RELOC_PPC64_TOC: ++ case BFD_RELOC_PPC_TOC16: ++ case BFD_RELOC_PPC64_TOC16_LO: ++ case BFD_RELOC_PPC64_TOC16_HI: ++ case BFD_RELOC_PPC64_TOC16_HA: ++ case BFD_RELOC_PPC64_DTPREL16_HIGHER: ++ case BFD_RELOC_PPC64_DTPREL16_HIGHERA: ++ case BFD_RELOC_PPC64_DTPREL16_HIGHEST: ++ case BFD_RELOC_PPC64_DTPREL16_HIGHESTA: ++ case BFD_RELOC_PPC64_TPREL16_HIGHER: ++ case BFD_RELOC_PPC64_TPREL16_HIGHERA: ++ case BFD_RELOC_PPC64_TPREL16_HIGHEST: ++ case BFD_RELOC_PPC64_TPREL16_HIGHESTA: + fixP->fx_done = 0; + break; + #endif ++ ++#ifdef OBJ_XCOFF ++ case BFD_RELOC_NONE: ++ break; ++#endif ++ + default: + fprintf (stderr, + _("Gas failure, reloc value %d\n"), fixP->fx_r_type); + fflush (stderr); + abort (); + } ++ ++ if (size && APPLY_RELOC) ++ md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, ++ fieldval, size); + } + + #ifdef OBJ_ELF ++ ppc_elf_validate_fix (fixP, seg); + fixP->fx_addnumber = value; + + /* PowerPC uses RELA relocs, ie. the reloc addend is stored separately +diff --git a/gas/config/tc-ppc.h b/gas/config/tc-ppc.h +index eb19017..e053c9c 100644 +--- a/gas/config/tc-ppc.h ++++ b/gas/config/tc-ppc.h +@@ -270,6 +270,8 @@ extern int tc_ppc_regname_to_dw2regnum (char *); + + extern int ppc_cie_data_alignment; + +-#define DWARF2_LINE_MIN_INSN_LENGTH 4 ++extern int ppc_dwarf2_line_min_insn_length; ++ ++#define DWARF2_LINE_MIN_INSN_LENGTH ppc_dwarf2_line_min_insn_length + #define DWARF2_DEFAULT_RETURN_COLUMN 0x41 + #define DWARF2_CIE_DATA_ALIGNMENT ppc_cie_data_alignment +diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c +index 2ec329a..2fa6d51 100644 +--- a/gas/dwarf2dbg.c ++++ b/gas/dwarf2dbg.c +@@ -882,24 +882,22 @@ out_set_addr (symbolS *sym) + emit_expr (&exp, sizeof_address); + } + +-#if DWARF2_LINE_MIN_INSN_LENGTH > 1 + static void scale_addr_delta (addressT *); + + static void + scale_addr_delta (addressT *addr_delta) + { + static int printed_this = 0; +- if (*addr_delta % DWARF2_LINE_MIN_INSN_LENGTH != 0) ++ if (DWARF2_LINE_MIN_INSN_LENGTH > 1) + { +- if (!printed_this) +- as_bad("unaligned opcodes detected in executable segment"); +- printed_this = 1; ++ if (*addr_delta % DWARF2_LINE_MIN_INSN_LENGTH != 0 && !printed_this) ++ { ++ as_bad("unaligned opcodes detected in executable segment"); ++ printed_this = 1; ++ } ++ *addr_delta /= DWARF2_LINE_MIN_INSN_LENGTH; + } +- *addr_delta /= DWARF2_LINE_MIN_INSN_LENGTH; + } +-#else +-#define scale_addr_delta(A) +-#endif + + /* Encode a pair of line and address skips as efficiently as possible. + Note that the line skip is signed, whereas the address skip is unsigned. +diff --git a/gas/hash.c b/gas/hash.c +index a58c948..bae8386 100644 +--- a/gas/hash.c ++++ b/gas/hash.c +@@ -1,6 +1,6 @@ + /* hash.c -- gas hash table code + Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, +- 2000, 2001, 2002, 2003, 2005, 2007, 2008, 2009, 2011 ++ 2000, 2001, 2002, 2003, 2005, 2007, 2008, 2009, 2011, 2013 + Free Software Foundation, Inc. + + This file is part of GAS, the GNU Assembler. +@@ -83,7 +83,7 @@ set_gas_hash_table_size (unsigned long size) + + /* Create a hash table. This return a control block. */ + +-static struct hash_control * ++struct hash_control * + hash_new_sized (unsigned long size) + { + unsigned long alloc; +diff --git a/gas/hash.h b/gas/hash.h +index fac814e..c7ea7b5 100644 +--- a/gas/hash.h ++++ b/gas/hash.h +@@ -1,5 +1,5 @@ + /* hash.h -- header file for gas hash table routines +- Copyright 1987, 1992, 1993, 1995, 1999, 2003, 2005, 2007, 2008 ++ Copyright 1987, 1992, 1993, 1995, 1999, 2003, 2005, 2007, 2008, 2013 + Free Software Foundation, Inc. + + This file is part of GAS, the GNU Assembler. +@@ -31,6 +31,7 @@ void set_gas_hash_table_size (unsigned long); + /* Create a hash table. This return a control block. */ + + extern struct hash_control *hash_new (void); ++extern struct hash_control *hash_new_sized (unsigned long); + + /* Delete a hash table, freeing all allocated memory. */ + +diff --git a/gas/macro.c b/gas/macro.c +index b3e0fd0..75b9b7e 100644 +--- a/gas/macro.c ++++ b/gas/macro.c +@@ -1,6 +1,6 @@ + /* macro.c - macro support for gas + Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, +- 2004, 2005, 2006, 2007, 2008, 2011, 2012 Free Software Foundation, Inc. ++ 2004, 2005, 2006, 2007, 2008, 2011, 2012, 2013 Free Software Foundation, Inc. + + Written by Steve and Judy Chamberlain of Cygnus Support, + sac@cygnus.com +@@ -574,9 +574,9 @@ do_formals (macro_entry *macro, size_t idx, sb *in) + formal_entry *formal = new_formal (); + + /* Add a special NARG formal, which macro_expand will set to the +- number of arguments. */ ++ number of arguments. */ + /* The same MRI assemblers which treat '@' characters also use +- the name $NARG. At least until we find an exception. */ ++ the name $NARG. At least until we find an exception. */ + if (macro_strip_at) + name = "$NARG"; + else +@@ -642,7 +642,7 @@ define_macro (size_t idx, sb *in, sb *label, + + macro->formal_count = 0; + macro->formals = 0; +- macro->formal_hash = hash_new (); ++ macro->formal_hash = hash_new_sized (7); + + idx = sb_skip_white (idx, in); + if (! buffer_and_nest ("MACRO", "ENDM", ¯o->sub, get_line)) +@@ -950,13 +950,13 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals, + if (ptr == NULL) + { + /* FIXME: We should really return a warning string here, +- but we can't, because the == might be in the MRI +- comment field, and, since the nature of the MRI +- comment field depends upon the exact instruction +- being used, we don't have enough information here to +- figure out whether it is or not. Instead, we leave +- the == in place, which should cause a syntax error if +- it is not in a comment. */ ++ but we can't, because the == might be in the MRI ++ comment field, and, since the nature of the MRI ++ comment field depends upon the exact instruction ++ being used, we don't have enough information here to ++ figure out whether it is or not. Instead, we leave ++ the == in place, which should cause a syntax error if ++ it is not in a comment. */ + sb_add_char (out, '='); + sb_add_char (out, '='); + sb_add_sb (out, &t); +@@ -1023,7 +1023,7 @@ macro_expand (size_t idx, sb *in, macro_entry *m, sb *out) + if (macro_mri) + { + /* The macro may be called with an optional qualifier, which may +- be referred to in the macro body as \0. */ ++ be referred to in the macro body as \0. */ + if (idx < in->len && in->ptr[idx] == '.') + { + /* The Microtec assembler ignores this if followed by a white space. +@@ -1349,7 +1349,7 @@ expand_irp (int irpc, size_t idx, sb *in, sb *out, size_t (*get_line) (sb *)) + + if (irpc) + in_quotes = ! in_quotes; +- ++ + nxt = sb_skip_white (idx + 1, in); + if (nxt >= in->len) + { +diff --git a/gas/sb.c b/gas/sb.c +index f68402f..f21f46e 100644 +--- a/gas/sb.c ++++ b/gas/sb.c +@@ -137,7 +137,10 @@ sb_check (sb *ptr, size_t len) + if ((ssize_t) want < 0) + as_fatal ("string buffer overflow"); + #if GCC_VERSION >= 3004 +- max = (size_t) 1 << (CHAR_BIT * sizeof (want) - __builtin_clzl (want)); ++ max = (size_t) 1 << (CHAR_BIT * sizeof (want) ++ - (sizeof (want) <= sizeof (long) ++ ? __builtin_clzl ((long) want) ++ : __builtin_clzll ((long long) want))); + #else + max = 128; + while (want > max) +diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog +index 5bc1c32..43f2c9c 100644 +--- a/gas/testsuite/ChangeLog ++++ b/gas/testsuite/ChangeLog +@@ -1,3 +1,142 @@ ++2013-02-12 Yufeng Zhang ++ ++ * gas/aarch64/alias.s: Add new tests. ++ * gas/aarch64/alias.d: Update. ++ * gas/aarch64/no-aliases.d: Update. ++ ++2013-02-12 Yufeng Zhang ++ ++ * gas/aarch64/diagnostic.s: Add test. ++ * gas/aarch64/diagnostic.l: Update. ++ ++2013-02-12 Yufeng Zhang ++ ++ * gas/aarch64/int-insns.d: Update. ++ * gas/aarch64/mov.d: Update. ++ * gas/aarch64/reloc-insn.d: Update. ++ ++2013-02-12 Yufeng Zhang ++ ++ * gas/aarch64/system.d: Update. ++ ++2013-02-12 Yufeng Zhang ++ ++ * gas/aarch64/sysreg-1.s: Add tests of rmr_el1, rmr_el2 and rmr_el3. ++ * gas/aarch64/sysreg-1.d: Update. ++ * gas/aarch64/illegal.s: Add tests of daifset and daifclr. ++ * gas/aarch64/illegal.d: Update. ++ ++2013-02-12 Yufeng Zhang ++ ++ * gas/aarch64/illegal-2.s: Add test case. ++ * gas/aarch64/illegal-2.l: Likewise. ++ ++2013-01-22 Alan Modra ++ ++ Apply mainline patches ++ 2012-11-23 Alan Modra ++ * gas/ppc/astest2.d: Pass -Mppc to objdump. ++ ++ 2012-11-14 Ulrich Weigand ++ * gas/ppc/astest.d: Update for fixup changes. ++ * gas/ppc/astest64.d: Likewise. ++ * gas/ppc/astest2.d: Likewise. ++ * gas/ppc/astest2_64.d: Likewise. ++ * gas/ppc/test1elf32.d: Likewise. ++ * gas/ppc/test1elf64.d: Likewise. ++ ++ 2012-10-29 Alan Modra ++ * gas/cfi/cfi.exp: Remove redundant ppc test. Exclude ++ powerpc-pe targets from cfi-common-6 test. ++ * gas/cfi/cfi-ppc-1.d: Use objdump to handle pe. ++ * gas/cfi/cfi-ppc-1.s: Don't use .type and .size. ++ * gas/ppc/ppc.exp: Exclude various tests for powerpc-pe. Exclude ++ vle tests for le targets. ++ * gas/ppc/476.d, * gas/ppc/476.s: Update for le output. Use .text ++ rather than section directive with quotes. ++ * gas/ppc/a2.d, * gas/ppc/a2.s: Likewise. ++ * gas/ppc/altivec.d, * gas/ppc/altivec.s: Likewise. ++ * gas/ppc/altivec2.d: Likewise. ++ * gas/ppc/altivec_and_spe.d: Likewise. ++ * gas/ppc/astest.d: Likewise. ++ * gas/ppc/astest2.d: Likewise. ++ * gas/ppc/astest2_64.d: Likewise. ++ * gas/ppc/astest64.d: Likewise. ++ * gas/ppc/booke.d, * gas/ppc/booke.s: Likewise. ++ * gas/ppc/cell.d, * gas/ppc/cell.s: Likewise. ++ * gas/ppc/common.d, * gas/ppc/common.s: Likewise. ++ * gas/ppc/e500.d, * gas/ppc/e500.s: Likewise. ++ * gas/ppc/e500mc.d, * gas/ppc/e500mc.s: Likewise. ++ * gas/ppc/e500mc64_nop.d, * gas/ppc/e500mc64_nop.s: Likewise. ++ * gas/ppc/e5500_nop.d, * gas/ppc/e5500_nop.s: Likewise. ++ * gas/ppc/e6500.d, * gas/ppc/e6500.s: Likewise. ++ * gas/ppc/e6500_nop.d, * gas/ppc/e6500_nop.s: Likewise. ++ * gas/ppc/machine.d: Likewise. ++ * gas/ppc/power4.d, * gas/ppc/power4.s: Likewise. ++ * gas/ppc/power4_32.d, * gas/ppc/power4_32.s: Likewise. ++ * gas/ppc/power6.d, * gas/ppc/power6.s: Likewise. ++ * gas/ppc/power7.d, * gas/ppc/power7.s: Likewise. ++ * gas/ppc/ppc750ps.d, * gas/ppc/ppc750ps.s: Likewise. ++ * gas/ppc/regnames.d: Likewise. ++ * gas/ppc/simpshft.d: Likewise. ++ * gas/ppc/test1elf32.d: Likewise. ++ * gas/ppc/test1elf64.d: Likewise. ++ * gas/ppc/titan.d, * gas/ppc/titan.s: Likewise. ++ * gas/ppc/vle-reloc.s: Likewise. ++ * gas/ppc/vle-simple-1.s: Likewise. ++ * gas/ppc/vle-simple-2.s: Likewise. ++ * gas/ppc/vle-simple-3.s: Likewise. ++ * gas/ppc/vle-simple-4.s: Likewise. ++ * gas/ppc/vle-simple-5.s: Likewise. ++ * gas/ppc/vle-simple-6.s: Likewise. ++ * gas/ppc/vle.s: Likewise. ++ * gas/ppc/vsx.d, * gas/ppc/vsx.s: Likewise. ++ ++ 2012-10-26 Alan Modra ++ * gas/ppc/power4.s: Fix invalid lq offsets. ++ * gas/ppc/power4.d: Update. ++ ++ 2012-10-22 Peter Bergner ++ * gas/ppc/altivec.s : Fix opcode spelling. ++ ++ 2012-10-05 Peter Bergner ++ * gas/ppc/power7.d: Add tests for mfppr, mfppr32, mtppr and mtppr32. ++ * gas/ppc/power7.s: Likewise. ++ * gas/ppc/altivec.d: Add tests for all legacy Altivec instructions. ++ * gas/ppc/altivec.s: Likewise. ++ * gas/ppc/altivec2.d: New test file. ++ * gas/ppc/altivec2.s: Likewise. ++ * gas/ppc/ppc.exp: Run it. ++ ++ 2012-08-01 James Lemke ++ * gas/cfi/cfi-ppc-1.d: Allow for code alignment of 2 or 4. ++ ++2012-12-20 Greta Yorsh ++ ++ * gas/arm/srs-t2.s: Add tests for missing srs modes. ++ * gas/arm/srs-t2.l: Update expected output. ++ * gas/arm/srs-arm.s: Add tests for missing srs modes. ++ * gas/arm/srs-arm.l: Update expected output. ++ * gas/arm/archv6.s: Add tests for missing rfe modes. ++ * gas/arm/archv6.d: Update expected output. ++ ++2012-12-06 Yufeng Zhang ++ ++ * gas/aarch64/programmer-friendly.s: Add tests for LDR literal with ++ the auto-generation of literal in pool. ++ * gas/aarch64/programmer-friendly.d: Update. ++ ++2012-11-27 Roland McGrath ++ ++ * lib/gas-defs.exp (run_dump_test): If as options include ++ --compress-debug-sections and zlib is not available, report ++ the test as unsupported. ++ ++2012-11-20 Roland McGrath ++ ++ * gas/arm/macro-pld.s: New file. ++ * gas/arm/macro-pld.d: New file. ++ + 2012-10-09 Nagajyothi Eggone + + * gas/i386/i386.exp: Run bdver3 test cases. +diff --git a/gas/testsuite/gas/aarch64/alias.d b/gas/testsuite/gas/aarch64/alias.d +index ddc2157..53cf5e9 100644 +--- a/gas/testsuite/gas/aarch64/alias.d ++++ b/gas/testsuite/gas/aarch64/alias.d +@@ -72,3 +72,27 @@ Disassembly of section \.text: + 100: b13ffdff cmn x15, #0xfff + 104: f13fffef subs x15, sp, #0xfff + 108: b13ffdff cmn x15, #0xfff ++ 10c: 0f08a448 sxtl v8.8h, v2.8b ++ 110: 0f08a448 sxtl v8.8h, v2.8b ++ 114: 4f08a448 sxtl2 v8.8h, v2.16b ++ 118: 4f08a448 sxtl2 v8.8h, v2.16b ++ 11c: 0f10a448 sxtl v8.4s, v2.4h ++ 120: 0f10a448 sxtl v8.4s, v2.4h ++ 124: 4f10a448 sxtl2 v8.4s, v2.8h ++ 128: 4f10a448 sxtl2 v8.4s, v2.8h ++ 12c: 0f20a448 sxtl v8.2d, v2.2s ++ 130: 0f20a448 sxtl v8.2d, v2.2s ++ 134: 4f20a448 sxtl2 v8.2d, v2.4s ++ 138: 4f20a448 sxtl2 v8.2d, v2.4s ++ 13c: 2f08a448 uxtl v8.8h, v2.8b ++ 140: 2f08a448 uxtl v8.8h, v2.8b ++ 144: 6f08a448 uxtl2 v8.8h, v2.16b ++ 148: 6f08a448 uxtl2 v8.8h, v2.16b ++ 14c: 2f10a448 uxtl v8.4s, v2.4h ++ 150: 2f10a448 uxtl v8.4s, v2.4h ++ 154: 6f10a448 uxtl2 v8.4s, v2.8h ++ 158: 6f10a448 uxtl2 v8.4s, v2.8h ++ 15c: 2f20a448 uxtl v8.2d, v2.2s ++ 160: 2f20a448 uxtl v8.2d, v2.2s ++ 164: 6f20a448 uxtl2 v8.2d, v2.4s ++ 168: 6f20a448 uxtl2 v8.2d, v2.4s +diff --git a/gas/testsuite/gas/aarch64/alias.s b/gas/testsuite/gas/aarch64/alias.s +index c2b71b9..0db9aff 100644 +--- a/gas/testsuite/gas/aarch64/alias.s ++++ b/gas/testsuite/gas/aarch64/alias.s +@@ -2,7 +2,7 @@ + preference. It is also used to test the -Mno-aliases option in + the disassemler. + +- Copyright 2012 Free Software Foundation, Inc. ++ Copyright 2012, 2013 Free Software Foundation, Inc. + Contributed by ARM Ltd. + + This file is part of GAS. +@@ -99,3 +99,21 @@ + adds xzr, x15, #0xfff + subs x15, sp, #0xfff + cmn x15, #0xfff ++ ++ .macro asimdshll s ++ \s\()xtl v8.8h, v2.8b ++ \s\()shll v8.8h, v2.8b, #0 ++ \s\()xtl2 v8.8h, v2.16b ++ \s\()shll2 v8.8h, v2.16b, #0 ++ \s\()xtl v8.4s, v2.4h ++ \s\()shll v8.4s, v2.4h, #0 ++ \s\()xtl2 v8.4s, v2.8h ++ \s\()shll2 v8.4s, v2.8h, #0 ++ \s\()xtl v8.2d, v2.2s ++ \s\()shll v8.2d, v2.2s, #0 ++ \s\()xtl2 v8.2d, v2.4s ++ \s\()shll2 v8.2d, v2.4s, #0 ++ .endm ++ ++ asimdshll s ++ asimdshll u +diff --git a/gas/testsuite/gas/aarch64/diagnostic.l b/gas/testsuite/gas/aarch64/diagnostic.l +index 714a2f0..cd8b3e2 100644 +--- a/gas/testsuite/gas/aarch64/diagnostic.l ++++ b/gas/testsuite/gas/aarch64/diagnostic.l +@@ -85,3 +85,4 @@ + [^:]*:87: Error: immediate offset out of range -256 to 252 at operand 3 -- `ldnp w7,w15,\[x3,#256\]' + [^:]*:88: Error: shift is not permitted at operand 2 -- `movi v1.2d,4294967295,lsl#0' + [^:]*:89: Error: shift amount non-zero at operand 2 -- `movi v1.8b,97,lsl#8' ++[^:]*:90: Error: unknown or missing system register name at operand 1 -- `msr dummy,x1' +diff --git a/gas/testsuite/gas/aarch64/diagnostic.s b/gas/testsuite/gas/aarch64/diagnostic.s +index 2b1c01c..1fa1b74 100644 +--- a/gas/testsuite/gas/aarch64/diagnostic.s ++++ b/gas/testsuite/gas/aarch64/diagnostic.s +@@ -87,3 +87,4 @@ + ldnp w7, w15, [x3, #256] + movi v1.2d, 4294967295, lsl #0 + movi v1.8b, 97, lsl #8 ++ msr dummy, x1 +diff --git a/gas/testsuite/gas/aarch64/illegal-2.l b/gas/testsuite/gas/aarch64/illegal-2.l +index 2ba6894..372596b 100644 +--- a/gas/testsuite/gas/aarch64/illegal-2.l ++++ b/gas/testsuite/gas/aarch64/illegal-2.l +@@ -6,3 +6,4 @@ + [^:]*:16: Error: .*$ + [^:]*:19: Error: .*$ + [^:]*:20: Error: .*$ ++[^:]*:24: Error: .*$ +diff --git a/gas/testsuite/gas/aarch64/illegal-2.s b/gas/testsuite/gas/aarch64/illegal-2.s +index 3aa7283..7711e14 100644 +--- a/gas/testsuite/gas/aarch64/illegal-2.s ++++ b/gas/testsuite/gas/aarch64/illegal-2.s +@@ -20,3 +20,5 @@ + mov wsp, #0x33030000 + + .set u16, 0xfff0 ++ ++ ldr x0, [x0, #257] +diff --git a/gas/testsuite/gas/aarch64/illegal.l b/gas/testsuite/gas/aarch64/illegal.l +index 74386ff..6c741cf 100644 +--- a/gas/testsuite/gas/aarch64/illegal.l ++++ b/gas/testsuite/gas/aarch64/illegal.l +@@ -547,3 +547,5 @@ + [^:]*:535: Error: .*`orr x0. x0,#0xff,lsl#1' + [^:]*:536: Error: .*`orr x0,x0,#0xff lsl#1' + [^:]*:538: Error: .*`mov x0,##5' ++[^:]*:540: Error: .*`msr daifset,x0' ++[^:]*:541: Error: .*`msr daifclr,x0' +diff --git a/gas/testsuite/gas/aarch64/illegal.s b/gas/testsuite/gas/aarch64/illegal.s +index ed31ee1..9a12463 100644 +--- a/gas/testsuite/gas/aarch64/illegal.s ++++ b/gas/testsuite/gas/aarch64/illegal.s +@@ -536,3 +536,6 @@ + orr x0, x0, #0xff lsl #1 + + mov x0, ##5 ++ ++ msr daifset, x0 ++ msr daifclr, x0 +diff --git a/gas/testsuite/gas/aarch64/int-insns.d b/gas/testsuite/gas/aarch64/int-insns.d +index cf939de..8896c40 100644 +--- a/gas/testsuite/gas/aarch64/int-insns.d ++++ b/gas/testsuite/gas/aarch64/int-insns.d +@@ -37,18 +37,18 @@ Disassembly of section .text: + 68: 8b430441 add x1, x2, x3, lsr #1 + 6c: 91001ca5 add x5, x5, #0x7 + 70: 71000421 subs w1, w1, #0x1 +- 74: d2800c82 movz x2, #0x64 +- 78: d2800c82 movz x2, #0x64 +- 7c: d2800c82 movz x2, #0x64 +- 80: d2a00c82 movz x2, #0x64, lsl #16 +- 84: d2a00c82 movz x2, #0x64, lsl #16 +- 88: d2c00c82 movz x2, #0x64, lsl #32 +- 8c: d2c00c82 movz x2, #0x64, lsl #32 +- 90: d2e00c82 movz x2, #0x64, lsl #48 +- 94: d2e00c82 movz x2, #0x64, lsl #48 +- 98: 52800c81 movz w1, #0x64 +- 9c: 52800c81 movz w1, #0x64 +- a0: 52a00c81 movz w1, #0x64, lsl #16 ++ 74: d2800c82 mov x2, #0x64 // #100 ++ 78: d2800c82 mov x2, #0x64 // #100 ++ 7c: d2800c82 mov x2, #0x64 // #100 ++ 80: d2a00c82 mov x2, #0x640000 // #6553600 ++ 84: d2a00c82 mov x2, #0x640000 // #6553600 ++ 88: d2c00c82 mov x2, #0x6400000000 // #429496729600 ++ 8c: d2c00c82 mov x2, #0x6400000000 // #429496729600 ++ 90: d2e00c82 mov x2, #0x64000000000000 // #28147497671065600 ++ 94: d2e00c82 mov x2, #0x64000000000000 // #28147497671065600 ++ 98: 52800c81 mov w1, #0x64 // #100 ++ 9c: 52800c81 mov w1, #0x64 // #100 ++ a0: 52a00c81 mov w1, #0x640000 // #6553600 + a4: 8a030041 and x1, x2, x3 + a8: 0a0f015e and w30, w10, w15 + ac: 12000041 and w1, w2, #0x1 +diff --git a/gas/testsuite/gas/aarch64/mov.d b/gas/testsuite/gas/aarch64/mov.d +index b344b8e..78b9027 100644 +--- a/gas/testsuite/gas/aarch64/mov.d ++++ b/gas/testsuite/gas/aarch64/mov.d +@@ -13,14 +13,14 @@ Disassembly of section \.text: + 14: 910003ff mov sp, sp + 18: aa0f03e7 mov x7, x15 + 1c: 2a0f03e7 mov w7, w15 +- 20: 52800b01 movz w1, #0x58 +- 24: 12800000 movn w0, #0x0 +- 28: b2607fe0 orr x0, xzr, #0xffffffff00000000 +- 2c: b2400fff orr sp, xzr, #0xf +- 30: 32000fff orr wsp, wzr, #0xf +- 34: d28001ff movz xzr, #0xf +- 38: 528001ff movz wzr, #0xf ++ 20: 52800b01 mov w1, #0x58 // #88 ++ 24: 12800000 mov w0, #0xffffffff // #-1 ++ 28: b2607fe0 mov x0, #0xffffffff00000000 // #-4294967296 ++ 2c: b2400fff mov sp, #0xf // #15 ++ 30: 32000fff mov wsp, #0xf // #15 ++ 34: d28001ff mov xzr, #0xf // #15 ++ 38: 528001ff mov wzr, #0xf // #15 + 3c: 0e1c3de7 mov w7, v15\.s\[3\] + 40: 4e183fef mov x15, v31\.d\[1\] +- 44: d2801fe0 movz x0, #0xff ++ 44: d2801fe0 mov x0, #0xff // #255 + 48: 320de400 orr w0, w0, #0x99999999 +diff --git a/gas/testsuite/gas/aarch64/no-aliases.d b/gas/testsuite/gas/aarch64/no-aliases.d +index 5ccf80b..1065094 100644 +--- a/gas/testsuite/gas/aarch64/no-aliases.d ++++ b/gas/testsuite/gas/aarch64/no-aliases.d +@@ -73,3 +73,27 @@ Disassembly of section \.text: + 100: b13ffdff adds xzr, x15, #0xfff + 104: f13fffef subs x15, sp, #0xfff + 108: b13ffdff adds xzr, x15, #0xfff ++ 10c: 0f08a448 sshll v8.8h, v2.8b, #0 ++ 110: 0f08a448 sshll v8.8h, v2.8b, #0 ++ 114: 4f08a448 sshll2 v8.8h, v2.16b, #0 ++ 118: 4f08a448 sshll2 v8.8h, v2.16b, #0 ++ 11c: 0f10a448 sshll v8.4s, v2.4h, #0 ++ 120: 0f10a448 sshll v8.4s, v2.4h, #0 ++ 124: 4f10a448 sshll2 v8.4s, v2.8h, #0 ++ 128: 4f10a448 sshll2 v8.4s, v2.8h, #0 ++ 12c: 0f20a448 sshll v8.2d, v2.2s, #0 ++ 130: 0f20a448 sshll v8.2d, v2.2s, #0 ++ 134: 4f20a448 sshll2 v8.2d, v2.4s, #0 ++ 138: 4f20a448 sshll2 v8.2d, v2.4s, #0 ++ 13c: 2f08a448 ushll v8.8h, v2.8b, #0 ++ 140: 2f08a448 ushll v8.8h, v2.8b, #0 ++ 144: 6f08a448 ushll2 v8.8h, v2.16b, #0 ++ 148: 6f08a448 ushll2 v8.8h, v2.16b, #0 ++ 14c: 2f10a448 ushll v8.4s, v2.4h, #0 ++ 150: 2f10a448 ushll v8.4s, v2.4h, #0 ++ 154: 6f10a448 ushll2 v8.4s, v2.8h, #0 ++ 158: 6f10a448 ushll2 v8.4s, v2.8h, #0 ++ 15c: 2f20a448 ushll v8.2d, v2.2s, #0 ++ 160: 2f20a448 ushll v8.2d, v2.2s, #0 ++ 164: 6f20a448 ushll2 v8.2d, v2.4s, #0 ++ 168: 6f20a448 ushll2 v8.2d, v2.4s, #0 +diff --git a/gas/testsuite/gas/aarch64/programmer-friendly.d b/gas/testsuite/gas/aarch64/programmer-friendly.d +index 90cea5e..9e9f2d5 100644 +--- a/gas/testsuite/gas/aarch64/programmer-friendly.d ++++ b/gas/testsuite/gas/aarch64/programmer-friendly.d +@@ -6,7 +6,7 @@ Disassembly of section \.text: + + 0000000000000000 <.*>: + 0: 4f03e420 movi v0\.16b, #0x61 +- 4: 98000181 ldrsw x1, 34 <\.text\+0x34> ++ 4: 98000241 ldrsw x1, 4c <\.text\+0x4c> + 8: 98000007 ldrsw x7, 0 <\.text> + 8: R_AARCH64_LD_PREL_LO19 \.data\+0x4 + c: fa42a02a ccmp x1, x2, #0xa, ge +@@ -19,4 +19,18 @@ Disassembly of section \.text: + 28: ab2083e0 adds x0, sp, w0, sxtb + 2c: ab20a7e0 adds x0, sp, w0, sxth #1 + 30: ab20cbe0 adds x0, sp, w0, sxtw #2 +- 34: deadbeef \.word 0xdeadbeef ++ 34: 9c000160 ldr q0, 60 <\.text\+0x60> ++ 38: 5c0000c0 ldr d0, 50 <\.text\+0x50> ++ 3c: 580000a0 ldr x0, 50 <\.text\+0x50> ++ 40: 1c000060 ldr s0, 4c <\.text\+0x4c> ++ 44: 18000040 ldr w0, 4c <\.text\+0x4c> ++ 48: 58000080 ldr x0, 58 <\.text\+0x58> ++ 4c: deadbeef \.word 0xdeadbeef ++ 50: .* \.word 0x.* ++ 54: .* \.word 0x.* ++ ... ++ 58: R_AARCH64_ABS64 \.data ++ 60: .* \.word 0x.* ++ 64: .* \.word 0x.* ++ 68: .* \.word 0x.* ++ 6c: .* \.word 0x.* +diff --git a/gas/testsuite/gas/aarch64/programmer-friendly.s b/gas/testsuite/gas/aarch64/programmer-friendly.s +index f39ca5d..9dd93fe 100644 +--- a/gas/testsuite/gas/aarch64/programmer-friendly.s ++++ b/gas/testsuite/gas/aarch64/programmer-friendly.s +@@ -49,6 +49,17 @@ u16_lable: + adds x0, sp, x0, uxtb #4 + adds x0, sp, x0, uxth #4 + adds x0, sp, x0, uxtw #4 ++ + adds x0, sp, x0, sxtb #0 + adds x0, sp, x0, sxth #1 + adds x0, sp, x0, sxtw #2 ++ ++ // More tests on ++ // LDR Wt, label | =value ++ // Find more comment above. ++ ldr q0, =0xdeadcafebeefbabe0123456789abcedf ++ ldr d0, =0xfebeefbabe012345 ++ ldr x0, =0xfebeefbabe012345 ++ ldr s0, =0xdeadbeef ++ ldr w0, =0xdeadbeef ++ ldr x0, =u16_lable +diff --git a/gas/testsuite/gas/aarch64/reloc-insn.d b/gas/testsuite/gas/aarch64/reloc-insn.d +index ce37b92..0b575b8 100644 +--- a/gas/testsuite/gas/aarch64/reloc-insn.d ++++ b/gas/testsuite/gas/aarch64/reloc-insn.d +@@ -5,13 +5,13 @@ + Disassembly of section \.text: + + 0000000000000000 <.*>: +- 0: d281ffe0 movz x0, #0xfff +- 4: 9280ffe0 movn x0, #0x7ff +- 8: d2a24681 movz x1, #0x1234, lsl #16 ++ 0: d281ffe0 mov x0, #0xfff // #4095 ++ 4: 9280ffe0 mov x0, #0xfffffffffffff800 // #-2048 ++ 8: d2a24681 mov x1, #0x12340000 // #305397760 + c: f28acf01 movk x1, #0x5678 + 10: 92a00001 movn x1, #0x0, lsl #16 + 14: f29f0001 movk x1, #0xf800 +- 18: d2d55761 movz x1, #0xaabb, lsl #32 ++ 18: d2d55761 mov x1, #0xaabb00000000 // #187720135606272 + 1c: f2b99ba1 movk x1, #0xccdd, lsl #16 + 20: f29ddfe1 movk x1, #0xeeff + 24: d2c00001 movz x1, #0x0, lsl #32 +@@ -29,11 +29,11 @@ Disassembly of section \.text: + 3c: 92c00001 movn x1, #0x0, lsl #32 + 40: f2bfffe1 movk x1, #0xffff, lsl #16 + 44: f29f0001 movk x1, #0xf800 +- 48: d2ffffe1 movz x1, #0xffff, lsl #48 ++ 48: d2ffffe1 mov x1, #0xffff000000000000 // #-281474976710656 + 4c: f2dfffe1 movk x1, #0xffff, lsl #32 + 50: f2bfffe1 movk x1, #0xffff, lsl #16 + 54: f29f0001 movk x1, #0xf800 +- 58: d2ffdb81 movz x1, #0xfedc, lsl #48 ++ 58: d2ffdb81 mov x1, #0xfedc000000000000 // #-82190693199511552 + 5c: f2d75301 movk x1, #0xba98, lsl #32 + 60: f2aeca81 movk x1, #0x7654, lsl #16 + 64: f2864201 movk x1, #0x3210 +@@ -121,11 +121,11 @@ Disassembly of section \.text: + 11c: 9400001d bl 190 + 120: 94000000 bl 0 + 120: R_AARCH64_CALL26 xlab +- 124: d2e24680 movz x0, #0x1234, lsl #48 ++ 124: d2e24680 mov x0, #0x1234000000000000 // #1311673391471656960 + 128: f2cacf00 movk x0, #0x5678, lsl #32 + 12c: f2b35780 movk x0, #0x9abc, lsl #16 + 130: f29bde00 movk x0, #0xdef0 +- 134: d2ffdb80 movz x0, #0xfedc, lsl #48 ++ 134: d2ffdb80 mov x0, #0xfedc000000000000 // #-82190693199511552 + 138: f2d75300 movk x0, #0xba98, lsl #32 + 13c: f2aeca80 movk x0, #0x7654, lsl #16 + 140: f2864200 movk x0, #0x3210 +diff --git a/gas/testsuite/gas/aarch64/sysreg-1.d b/gas/testsuite/gas/aarch64/sysreg-1.d +index 684bf0b..75f75b7 100644 +--- a/gas/testsuite/gas/aarch64/sysreg-1.d ++++ b/gas/testsuite/gas/aarch64/sysreg-1.d +@@ -4271,3 +4271,9 @@ Disassembly of section \.text: + 429c: d513040f msr dbgdtr_el0, x15 + 42a0: d533040f mrs x15, dbgdtr_el0 + 42a4: d533050f mrs x15, dbgdtrrx_el0 ++ 42a8: d518c04f msr rmr_el1, x15 ++ 42ac: d538c04f mrs x15, rmr_el1 ++ 42b0: d51cc04f msr rmr_el2, x15 ++ 42b4: d53cc04f mrs x15, rmr_el2 ++ 42b8: d51ec04f msr rmr_el3, x15 ++ 42bc: d53ec04f mrs x15, rmr_el3 +diff --git a/gas/testsuite/gas/aarch64/sysreg-1.s b/gas/testsuite/gas/aarch64/sysreg-1.s +index eb8649b..a2fcef4 100644 +--- a/gas/testsuite/gas/aarch64/sysreg-1.s ++++ b/gas/testsuite/gas/aarch64/sysreg-1.s +@@ -158,3 +158,7 @@ + + rw_sys_reg sys_reg=dbgdtr_el0 xreg=x15 r=1 w=1 + rw_sys_reg sys_reg=dbgdtrrx_el0 xreg=x15 r=1 w=0 ++ ++ rw_sys_reg sys_reg=rmr_el1 xreg=x15 r=1 w=1 ++ rw_sys_reg sys_reg=rmr_el2 xreg=x15 r=1 w=1 ++ rw_sys_reg sys_reg=rmr_el3 xreg=x15 r=1 w=1 +diff --git a/gas/testsuite/gas/aarch64/system.d b/gas/testsuite/gas/aarch64/system.d +index 8192c71..63e0b4c 100644 +--- a/gas/testsuite/gas/aarch64/system.d ++++ b/gas/testsuite/gas/aarch64/system.d +@@ -230,36 +230,36 @@ Disassembly of section \.text: + 358: f8af6be7 prfm #0x07, \[sp,x15\] + 35c: f8be58e7 prfm #0x07, \[x7,w30,uxtw #3\] + 360: f9800c67 prfm #0x07, \[x3,#24\] +- 364: d8000008 prfm #0x08, 0 ++ 364: d8000008 prfm plil1keep, 0 + 364: R_AARCH64_LD_PREL_LO19 LABEL1 +- 368: f8af6be8 prfm #0x08, \[sp,x15\] +- 36c: f8be58e8 prfm #0x08, \[x7,w30,uxtw #3\] +- 370: f9800c68 prfm #0x08, \[x3,#24\] +- 374: d8000009 prfm #0x09, 0 ++ 368: f8af6be8 prfm plil1keep, \[sp,x15\] ++ 36c: f8be58e8 prfm plil1keep, \[x7,w30,uxtw #3\] ++ 370: f9800c68 prfm plil1keep, \[x3,#24\] ++ 374: d8000009 prfm plil1strm, 0 + 374: R_AARCH64_LD_PREL_LO19 LABEL1 +- 378: f8af6be9 prfm #0x09, \[sp,x15\] +- 37c: f8be58e9 prfm #0x09, \[x7,w30,uxtw #3\] +- 380: f9800c69 prfm #0x09, \[x3,#24\] +- 384: d800000a prfm #0x0a, 0 ++ 378: f8af6be9 prfm plil1strm, \[sp,x15\] ++ 37c: f8be58e9 prfm plil1strm, \[x7,w30,uxtw #3\] ++ 380: f9800c69 prfm plil1strm, \[x3,#24\] ++ 384: d800000a prfm plil2keep, 0 + 384: R_AARCH64_LD_PREL_LO19 LABEL1 +- 388: f8af6bea prfm #0x0a, \[sp,x15\] +- 38c: f8be58ea prfm #0x0a, \[x7,w30,uxtw #3\] +- 390: f9800c6a prfm #0x0a, \[x3,#24\] +- 394: d800000b prfm #0x0b, 0 ++ 388: f8af6bea prfm plil2keep, \[sp,x15\] ++ 38c: f8be58ea prfm plil2keep, \[x7,w30,uxtw #3\] ++ 390: f9800c6a prfm plil2keep, \[x3,#24\] ++ 394: d800000b prfm plil2strm, 0 + 394: R_AARCH64_LD_PREL_LO19 LABEL1 +- 398: f8af6beb prfm #0x0b, \[sp,x15\] +- 39c: f8be58eb prfm #0x0b, \[x7,w30,uxtw #3\] +- 3a0: f9800c6b prfm #0x0b, \[x3,#24\] +- 3a4: d800000c prfm #0x0c, 0 ++ 398: f8af6beb prfm plil2strm, \[sp,x15\] ++ 39c: f8be58eb prfm plil2strm, \[x7,w30,uxtw #3\] ++ 3a0: f9800c6b prfm plil2strm, \[x3,#24\] ++ 3a4: d800000c prfm plil3keep, 0 + 3a4: R_AARCH64_LD_PREL_LO19 LABEL1 +- 3a8: f8af6bec prfm #0x0c, \[sp,x15\] +- 3ac: f8be58ec prfm #0x0c, \[x7,w30,uxtw #3\] +- 3b0: f9800c6c prfm #0x0c, \[x3,#24\] +- 3b4: d800000d prfm #0x0d, 0 ++ 3a8: f8af6bec prfm plil3keep, \[sp,x15\] ++ 3ac: f8be58ec prfm plil3keep, \[x7,w30,uxtw #3\] ++ 3b0: f9800c6c prfm plil3keep, \[x3,#24\] ++ 3b4: d800000d prfm plil3strm, 0 + 3b4: R_AARCH64_LD_PREL_LO19 LABEL1 +- 3b8: f8af6bed prfm #0x0d, \[sp,x15\] +- 3bc: f8be58ed prfm #0x0d, \[x7,w30,uxtw #3\] +- 3c0: f9800c6d prfm #0x0d, \[x3,#24\] ++ 3b8: f8af6bed prfm plil3strm, \[sp,x15\] ++ 3bc: f8be58ed prfm plil3strm, \[x7,w30,uxtw #3\] ++ 3c0: f9800c6d prfm plil3strm, \[x3,#24\] + 3c4: d800000e prfm #0x0e, 0 + 3c4: R_AARCH64_LD_PREL_LO19 LABEL1 + 3c8: f8af6bee prfm #0x0e, \[sp,x15\] +diff --git a/gas/testsuite/gas/arm/archv6.d b/gas/testsuite/gas/arm/archv6.d +index 4f73a95..bee9909 100644 +--- a/gas/testsuite/gas/arm/archv6.d ++++ b/gas/testsuite/gas/arm/archv6.d +@@ -39,185 +39,187 @@ Disassembly of section .text: + 0+07c <[^>]*> e6ff2fb4 ? revsh r2, r4 + 0+080 <[^>]*> 16ff3fb5 ? revshne r3, r5 + 0+084 <[^>]*> f8120a00 ? rfeda r2 +-0+088 <[^>]*> f9320a00 ? rfedb r2! +-0+08c <[^>]*> f8120a00 ? rfeda r2 ++0+088 <[^>]*> f8320a00 ? rfeda r2! ++0+08c <[^>]*> f9120a00 ? rfedb r2 + 0+090 <[^>]*> f9320a00 ? rfedb r2! +-0+094 <[^>]*> f9b20a00 ? rfeib r2! +-0+098 <[^>]*> f8920a00 ? rfeia r2 +-0+09c <[^>]*> f8920a00 ? rfeia r2 ++0+094 <[^>]*> f8920a00 ? rfeia r2 ++0+098 <[^>]*> f8b20a00 ? rfeia r2! ++0+09c <[^>]*> f9920a00 ? rfeib r2 + 0+0a0 <[^>]*> f9b20a00 ? rfeib r2! +-0+0a4 <[^>]*> e6142f17 ? sadd16 r2, r4, r7 +-0+0a8 <[^>]*> 16142f17 ? sadd16ne r2, r4, r7 +-0+0ac <[^>]*> e6b42075 ? sxtah r2, r4, r5 +-0+0b0 <[^>]*> e6b42475 ? sxtah r2, r4, r5, ror #8 +-0+0b4 <[^>]*> 16b42075 ? sxtahne r2, r4, r5 +-0+0b8 <[^>]*> 16b42475 ? sxtahne r2, r4, r5, ror #8 +-0+0bc <[^>]*> e6142f97 ? sadd8 r2, r4, r7 +-0+0c0 <[^>]*> 16142f97 ? sadd8ne r2, r4, r7 +-0+0c4 <[^>]*> e6842075 ? sxtab16 r2, r4, r5 +-0+0c8 <[^>]*> e6842475 ? sxtab16 r2, r4, r5, ror #8 +-0+0cc <[^>]*> 16842075 ? sxtab16ne r2, r4, r5 +-0+0d0 <[^>]*> 16842475 ? sxtab16ne r2, r4, r5, ror #8 +-0+0d4 <[^>]*> e6a42075 ? sxtab r2, r4, r5 +-0+0d8 <[^>]*> e6a42475 ? sxtab r2, r4, r5, ror #8 +-0+0dc <[^>]*> 16a42075 ? sxtabne r2, r4, r5 +-0+0e0 <[^>]*> 16a42475 ? sxtabne r2, r4, r5, ror #8 +-0+0e4 <[^>]*> e6142f37 ? sasx r2, r4, r7 +-0+0e8 <[^>]*> 16142f37 ? sasxne r2, r4, r7 +-0+0ec <[^>]*> e6821fb3 ? sel r1, r2, r3 +-0+0f0 <[^>]*> 16821fb3 ? selne r1, r2, r3 +-0+0f4 <[^>]*> f1010200 ? setend be +-0+0f8 <[^>]*> f1010000 ? setend le +-0+0fc <[^>]*> e6342f17 ? shadd16 r2, r4, r7 +-0+100 <[^>]*> 16342f17 ? shadd16ne r2, r4, r7 +-0+104 <[^>]*> e6342f97 ? shadd8 r2, r4, r7 +-0+108 <[^>]*> 16342f97 ? shadd8ne r2, r4, r7 +-0+10c <[^>]*> e6342f37 ? shasx r2, r4, r7 +-0+110 <[^>]*> 16342f37 ? shasxne r2, r4, r7 +-0+114 <[^>]*> e6342f77 ? shsub16 r2, r4, r7 +-0+118 <[^>]*> 16342f77 ? shsub16ne r2, r4, r7 +-0+11c <[^>]*> e6342ff7 ? shsub8 r2, r4, r7 +-0+120 <[^>]*> 16342ff7 ? shsub8ne r2, r4, r7 +-0+124 <[^>]*> e6342f57 ? shsax r2, r4, r7 +-0+128 <[^>]*> 16342f57 ? shsaxne r2, r4, r7 +-0+12c <[^>]*> e7014312 ? smlad r1, r2, r3, r4 +-0+130 <[^>]*> d7014312 ? smladle r1, r2, r3, r4 +-0+134 <[^>]*> e7014332 ? smladx r1, r2, r3, r4 +-0+138 <[^>]*> d7014332 ? smladxle r1, r2, r3, r4 +-0+13c <[^>]*> e7421413 ? smlald r1, r2, r3, r4 +-0+140 <[^>]*> d7421413 ? smlaldle r1, r2, r3, r4 +-0+144 <[^>]*> e7421433 ? smlaldx r1, r2, r3, r4 +-0+148 <[^>]*> d7421433 ? smlaldxle r1, r2, r3, r4 +-0+14c <[^>]*> e7014352 ? smlsd r1, r2, r3, r4 +-0+150 <[^>]*> d7014352 ? smlsdle r1, r2, r3, r4 +-0+154 <[^>]*> e7014372 ? smlsdx r1, r2, r3, r4 +-0+158 <[^>]*> d7014372 ? smlsdxle r1, r2, r3, r4 +-0+15c <[^>]*> e7421453 ? smlsld r1, r2, r3, r4 +-0+160 <[^>]*> d7421453 ? smlsldle r1, r2, r3, r4 +-0+164 <[^>]*> e7421473 ? smlsldx r1, r2, r3, r4 +-0+168 <[^>]*> d7421473 ? smlsldxle r1, r2, r3, r4 +-0+16c <[^>]*> e7514312 ? smmla r1, r2, r3, r4 +-0+170 <[^>]*> d7514312 ? smmlale r1, r2, r3, r4 +-0+174 <[^>]*> e7514332 ? smmlar r1, r2, r3, r4 +-0+178 <[^>]*> d7514332 ? smmlarle r1, r2, r3, r4 +-0+17c <[^>]*> e75143d2 ? smmls r1, r2, r3, r4 +-0+180 <[^>]*> d75143d2 ? smmlsle r1, r2, r3, r4 +-0+184 <[^>]*> e75143f2 ? smmlsr r1, r2, r3, r4 +-0+188 <[^>]*> d75143f2 ? smmlsrle r1, r2, r3, r4 +-0+18c <[^>]*> e751f312 ? smmul r1, r2, r3 +-0+190 <[^>]*> d751f312 ? smmulle r1, r2, r3 +-0+194 <[^>]*> e751f332 ? smmulr r1, r2, r3 +-0+198 <[^>]*> d751f332 ? smmulrle r1, r2, r3 +-0+19c <[^>]*> e701f312 ? smuad r1, r2, r3 +-0+1a0 <[^>]*> d701f312 ? smuadle r1, r2, r3 +-0+1a4 <[^>]*> e701f332 ? smuadx r1, r2, r3 +-0+1a8 <[^>]*> d701f332 ? smuadxle r1, r2, r3 +-0+1ac <[^>]*> e701f352 ? smusd r1, r2, r3 +-0+1b0 <[^>]*> d701f352 ? smusdle r1, r2, r3 +-0+1b4 <[^>]*> e701f372 ? smusdx r1, r2, r3 +-0+1b8 <[^>]*> d701f372 ? smusdxle r1, r2, r3 +-0+1bc <[^>]*> f8cd0510 ? srsia sp, #16 +-0+1c0 <[^>]*> f9ed0510 ? srsib sp!, #16 +-0+1c4 <[^>]*> e6a01012 ? ssat r1, #1, r2 +-0+1c8 <[^>]*> e6a01152 ? ssat r1, #1, r2, asr #2 +-0+1cc <[^>]*> e6a01112 ? ssat r1, #1, r2, lsl #2 +-0+1d0 <[^>]*> e6a01f31 ? ssat16 r1, #1, r1 +-0+1d4 <[^>]*> d6a01f31 ? ssat16le r1, #1, r1 +-0+1d8 <[^>]*> e6142f77 ? ssub16 r2, r4, r7 +-0+1dc <[^>]*> 16142f77 ? ssub16ne r2, r4, r7 +-0+1e0 <[^>]*> e6142ff7 ? ssub8 r2, r4, r7 +-0+1e4 <[^>]*> 16142ff7 ? ssub8ne r2, r4, r7 +-0+1e8 <[^>]*> e6142f57 ? ssax r2, r4, r7 +-0+1ec <[^>]*> 16142f57 ? ssaxne r2, r4, r7 +-0+1f0 <[^>]*> e1831f92 ? strex r1, r2, \[r3\] +-0+1f4 <[^>]*> 11831f92 ? strexne r1, r2, \[r3\] +-0+1f8 <[^>]*> e6bf2075 ? sxth r2, r5 +-0+1fc <[^>]*> e6bf2475 ? sxth r2, r5, ror #8 +-0+200 <[^>]*> 16bf2075 ? sxthne r2, r5 +-0+204 <[^>]*> 16bf2475 ? sxthne r2, r5, ror #8 +-0+208 <[^>]*> e68f2075 ? sxtb16 r2, r5 +-0+20c <[^>]*> e68f2475 ? sxtb16 r2, r5, ror #8 +-0+210 <[^>]*> 168f2075 ? sxtb16ne r2, r5 +-0+214 <[^>]*> 168f2475 ? sxtb16ne r2, r5, ror #8 +-0+218 <[^>]*> e6af2075 ? sxtb r2, r5 +-0+21c <[^>]*> e6af2475 ? sxtb r2, r5, ror #8 +-0+220 <[^>]*> 16af2075 ? sxtbne r2, r5 +-0+224 <[^>]*> 16af2475 ? sxtbne r2, r5, ror #8 +-0+228 <[^>]*> e6542f17 ? uadd16 r2, r4, r7 +-0+22c <[^>]*> 16542f17 ? uadd16ne r2, r4, r7 +-0+230 <[^>]*> e6f32075 ? uxtah r2, r3, r5 +-0+234 <[^>]*> e6f32475 ? uxtah r2, r3, r5, ror #8 +-0+238 <[^>]*> 16f32075 ? uxtahne r2, r3, r5 +-0+23c <[^>]*> 16f32475 ? uxtahne r2, r3, r5, ror #8 +-0+240 <[^>]*> e6542f97 ? uadd8 r2, r4, r7 +-0+244 <[^>]*> 16542f97 ? uadd8ne r2, r4, r7 +-0+248 <[^>]*> e6c32075 ? uxtab16 r2, r3, r5 +-0+24c <[^>]*> e6c32475 ? uxtab16 r2, r3, r5, ror #8 +-0+250 <[^>]*> 16c32075 ? uxtab16ne r2, r3, r5 +-0+254 <[^>]*> 16c32475 ? uxtab16ne r2, r3, r5, ror #8 +-0+258 <[^>]*> e6e32075 ? uxtab r2, r3, r5 +-0+25c <[^>]*> e6e32475 ? uxtab r2, r3, r5, ror #8 +-0+260 <[^>]*> 16e32075 ? uxtabne r2, r3, r5 +-0+264 <[^>]*> 16e32475 ? uxtabne r2, r3, r5, ror #8 +-0+268 <[^>]*> e6542f37 ? uasx r2, r4, r7 +-0+26c <[^>]*> 16542f37 ? uasxne r2, r4, r7 +-0+270 <[^>]*> e6742f17 ? uhadd16 r2, r4, r7 +-0+274 <[^>]*> 16742f17 ? uhadd16ne r2, r4, r7 +-0+278 <[^>]*> e6742f97 ? uhadd8 r2, r4, r7 +-0+27c <[^>]*> 16742f97 ? uhadd8ne r2, r4, r7 +-0+280 <[^>]*> e6742f37 ? uhasx r2, r4, r7 +-0+284 <[^>]*> 16742f37 ? uhasxne r2, r4, r7 +-0+288 <[^>]*> e6742f77 ? uhsub16 r2, r4, r7 +-0+28c <[^>]*> 16742f77 ? uhsub16ne r2, r4, r7 +-0+290 <[^>]*> e6742ff7 ? uhsub8 r2, r4, r7 +-0+294 <[^>]*> 16742ff7 ? uhsub8ne r2, r4, r7 +-0+298 <[^>]*> e6742f57 ? uhsax r2, r4, r7 +-0+29c <[^>]*> 16742f57 ? uhsaxne r2, r4, r7 +-0+2a0 <[^>]*> e0421493 ? umaal r1, r2, r3, r4 +-0+2a4 <[^>]*> d0421493 ? umaalle r1, r2, r3, r4 +-0+2a8 <[^>]*> e6642f17 ? uqadd16 r2, r4, r7 +-0+2ac <[^>]*> 16642f17 ? uqadd16ne r2, r4, r7 +-0+2b0 <[^>]*> e6642f97 ? uqadd8 r2, r4, r7 +-0+2b4 <[^>]*> 16642f97 ? uqadd8ne r2, r4, r7 +-0+2b8 <[^>]*> e6642f37 ? uqasx r2, r4, r7 +-0+2bc <[^>]*> 16642f37 ? uqasxne r2, r4, r7 +-0+2c0 <[^>]*> e6642f77 ? uqsub16 r2, r4, r7 +-0+2c4 <[^>]*> 16642f77 ? uqsub16ne r2, r4, r7 +-0+2c8 <[^>]*> e6642ff7 ? uqsub8 r2, r4, r7 +-0+2cc <[^>]*> 16642ff7 ? uqsub8ne r2, r4, r7 +-0+2d0 <[^>]*> e6642f57 ? uqsax r2, r4, r7 +-0+2d4 <[^>]*> 16642f57 ? uqsaxne r2, r4, r7 +-0+2d8 <[^>]*> e781f312 ? usad8 r1, r2, r3 +-0+2dc <[^>]*> 1781f312 ? usad8ne r1, r2, r3 +-0+2e0 <[^>]*> e7814312 ? usada8 r1, r2, r3, r4 +-0+2e4 <[^>]*> 17814312 ? usada8ne r1, r2, r3, r4 +-0+2e8 <[^>]*> e6ef1012 ? usat r1, #15, r2 +-0+2ec <[^>]*> e6ef1252 ? usat r1, #15, r2, asr #4 +-0+2f0 <[^>]*> e6ef1212 ? usat r1, #15, r2, lsl #4 +-0+2f4 <[^>]*> e6ef1f32 ? usat16 r1, #15, r2 +-0+2f8 <[^>]*> d6ef1f32 ? usat16le r1, #15, r2 +-0+2fc <[^>]*> d6ef1012 ? usatle r1, #15, r2 +-0+300 <[^>]*> d6ef1252 ? usatle r1, #15, r2, asr #4 +-0+304 <[^>]*> d6ef1212 ? usatle r1, #15, r2, lsl #4 +-0+308 <[^>]*> e6542f77 ? usub16 r2, r4, r7 +-0+30c <[^>]*> 16542f77 ? usub16ne r2, r4, r7 +-0+310 <[^>]*> e6542ff7 ? usub8 r2, r4, r7 +-0+314 <[^>]*> 16542ff7 ? usub8ne r2, r4, r7 +-0+318 <[^>]*> e6542f57 ? usax r2, r4, r7 +-0+31c <[^>]*> 16542f57 ? usaxne r2, r4, r7 +-0+320 <[^>]*> e6ff2075 ? uxth r2, r5 +-0+324 <[^>]*> e6ff2475 ? uxth r2, r5, ror #8 +-0+328 <[^>]*> 16ff2075 ? uxthne r2, r5 +-0+32c <[^>]*> 16ff2475 ? uxthne r2, r5, ror #8 +-0+330 <[^>]*> e6cf2075 ? uxtb16 r2, r5 +-0+334 <[^>]*> e6cf2475 ? uxtb16 r2, r5, ror #8 +-0+338 <[^>]*> 16cf2075 ? uxtb16ne r2, r5 +-0+33c <[^>]*> 16cf2475 ? uxtb16ne r2, r5, ror #8 +-0+340 <[^>]*> e6ef2075 ? uxtb r2, r5 +-0+344 <[^>]*> e6ef2475 ? uxtb r2, r5, ror #8 +-0+348 <[^>]*> 16ef2075 ? uxtbne r2, r5 +-0+34c <[^>]*> 16ef2475 ? uxtbne r2, r5, ror #8 +-0+350 <[^>]*> f10a00ca ? cpsie if,#10 +-0+354 <[^>]*> f10a00d5 ? cpsie if,#21 +-0+358 <[^>]*> f8cd0510 ? srsia sp, #16 +-0+35c <[^>]*> f9ed0510 ? srsib sp!, #16 ++0+0a4 <[^>]*> f8920a00 ? rfeia r2 ++0+0a8 <[^>]*> f8b20a00 ? rfeia r2! ++0+0ac <[^>]*> e6142f17 ? sadd16 r2, r4, r7 ++0+0b0 <[^>]*> 16142f17 ? sadd16ne r2, r4, r7 ++0+0b4 <[^>]*> e6b42075 ? sxtah r2, r4, r5 ++0+0b8 <[^>]*> e6b42475 ? sxtah r2, r4, r5, ror #8 ++0+0bc <[^>]*> 16b42075 ? sxtahne r2, r4, r5 ++0+0c0 <[^>]*> 16b42475 ? sxtahne r2, r4, r5, ror #8 ++0+0c4 <[^>]*> e6142f97 ? sadd8 r2, r4, r7 ++0+0c8 <[^>]*> 16142f97 ? sadd8ne r2, r4, r7 ++0+0cc <[^>]*> e6842075 ? sxtab16 r2, r4, r5 ++0+0d0 <[^>]*> e6842475 ? sxtab16 r2, r4, r5, ror #8 ++0+0d4 <[^>]*> 16842075 ? sxtab16ne r2, r4, r5 ++0+0d8 <[^>]*> 16842475 ? sxtab16ne r2, r4, r5, ror #8 ++0+0dc <[^>]*> e6a42075 ? sxtab r2, r4, r5 ++0+0e0 <[^>]*> e6a42475 ? sxtab r2, r4, r5, ror #8 ++0+0e4 <[^>]*> 16a42075 ? sxtabne r2, r4, r5 ++0+0e8 <[^>]*> 16a42475 ? sxtabne r2, r4, r5, ror #8 ++0+0ec <[^>]*> e6142f37 ? sasx r2, r4, r7 ++0+0f0 <[^>]*> 16142f37 ? sasxne r2, r4, r7 ++0+0f4 <[^>]*> e6821fb3 ? sel r1, r2, r3 ++0+0f8 <[^>]*> 16821fb3 ? selne r1, r2, r3 ++0+0fc <[^>]*> f1010200 ? setend be ++0+100 <[^>]*> f1010000 ? setend le ++0+104 <[^>]*> e6342f17 ? shadd16 r2, r4, r7 ++0+108 <[^>]*> 16342f17 ? shadd16ne r2, r4, r7 ++0+10c <[^>]*> e6342f97 ? shadd8 r2, r4, r7 ++0+110 <[^>]*> 16342f97 ? shadd8ne r2, r4, r7 ++0+114 <[^>]*> e6342f37 ? shasx r2, r4, r7 ++0+118 <[^>]*> 16342f37 ? shasxne r2, r4, r7 ++0+11c <[^>]*> e6342f77 ? shsub16 r2, r4, r7 ++0+120 <[^>]*> 16342f77 ? shsub16ne r2, r4, r7 ++0+124 <[^>]*> e6342ff7 ? shsub8 r2, r4, r7 ++0+128 <[^>]*> 16342ff7 ? shsub8ne r2, r4, r7 ++0+12c <[^>]*> e6342f57 ? shsax r2, r4, r7 ++0+130 <[^>]*> 16342f57 ? shsaxne r2, r4, r7 ++0+134 <[^>]*> e7014312 ? smlad r1, r2, r3, r4 ++0+138 <[^>]*> d7014312 ? smladle r1, r2, r3, r4 ++0+13c <[^>]*> e7014332 ? smladx r1, r2, r3, r4 ++0+140 <[^>]*> d7014332 ? smladxle r1, r2, r3, r4 ++0+144 <[^>]*> e7421413 ? smlald r1, r2, r3, r4 ++0+148 <[^>]*> d7421413 ? smlaldle r1, r2, r3, r4 ++0+14c <[^>]*> e7421433 ? smlaldx r1, r2, r3, r4 ++0+150 <[^>]*> d7421433 ? smlaldxle r1, r2, r3, r4 ++0+154 <[^>]*> e7014352 ? smlsd r1, r2, r3, r4 ++0+158 <[^>]*> d7014352 ? smlsdle r1, r2, r3, r4 ++0+15c <[^>]*> e7014372 ? smlsdx r1, r2, r3, r4 ++0+160 <[^>]*> d7014372 ? smlsdxle r1, r2, r3, r4 ++0+164 <[^>]*> e7421453 ? smlsld r1, r2, r3, r4 ++0+168 <[^>]*> d7421453 ? smlsldle r1, r2, r3, r4 ++0+16c <[^>]*> e7421473 ? smlsldx r1, r2, r3, r4 ++0+170 <[^>]*> d7421473 ? smlsldxle r1, r2, r3, r4 ++0+174 <[^>]*> e7514312 ? smmla r1, r2, r3, r4 ++0+178 <[^>]*> d7514312 ? smmlale r1, r2, r3, r4 ++0+17c <[^>]*> e7514332 ? smmlar r1, r2, r3, r4 ++0+180 <[^>]*> d7514332 ? smmlarle r1, r2, r3, r4 ++0+184 <[^>]*> e75143d2 ? smmls r1, r2, r3, r4 ++0+188 <[^>]*> d75143d2 ? smmlsle r1, r2, r3, r4 ++0+18c <[^>]*> e75143f2 ? smmlsr r1, r2, r3, r4 ++0+190 <[^>]*> d75143f2 ? smmlsrle r1, r2, r3, r4 ++0+194 <[^>]*> e751f312 ? smmul r1, r2, r3 ++0+198 <[^>]*> d751f312 ? smmulle r1, r2, r3 ++0+19c <[^>]*> e751f332 ? smmulr r1, r2, r3 ++0+1a0 <[^>]*> d751f332 ? smmulrle r1, r2, r3 ++0+1a4 <[^>]*> e701f312 ? smuad r1, r2, r3 ++0+1a8 <[^>]*> d701f312 ? smuadle r1, r2, r3 ++0+1ac <[^>]*> e701f332 ? smuadx r1, r2, r3 ++0+1b0 <[^>]*> d701f332 ? smuadxle r1, r2, r3 ++0+1b4 <[^>]*> e701f352 ? smusd r1, r2, r3 ++0+1b8 <[^>]*> d701f352 ? smusdle r1, r2, r3 ++0+1bc <[^>]*> e701f372 ? smusdx r1, r2, r3 ++0+1c0 <[^>]*> d701f372 ? smusdxle r1, r2, r3 ++0+1c4 <[^>]*> f8cd0510 ? srsia sp, #16 ++0+1c8 <[^>]*> f9ed0510 ? srsib sp!, #16 ++0+1cc <[^>]*> e6a01012 ? ssat r1, #1, r2 ++0+1d0 <[^>]*> e6a01152 ? ssat r1, #1, r2, asr #2 ++0+1d4 <[^>]*> e6a01112 ? ssat r1, #1, r2, lsl #2 ++0+1d8 <[^>]*> e6a01f31 ? ssat16 r1, #1, r1 ++0+1dc <[^>]*> d6a01f31 ? ssat16le r1, #1, r1 ++0+1e0 <[^>]*> e6142f77 ? ssub16 r2, r4, r7 ++0+1e4 <[^>]*> 16142f77 ? ssub16ne r2, r4, r7 ++0+1e8 <[^>]*> e6142ff7 ? ssub8 r2, r4, r7 ++0+1ec <[^>]*> 16142ff7 ? ssub8ne r2, r4, r7 ++0+1f0 <[^>]*> e6142f57 ? ssax r2, r4, r7 ++0+1f4 <[^>]*> 16142f57 ? ssaxne r2, r4, r7 ++0+1f8 <[^>]*> e1831f92 ? strex r1, r2, \[r3\] ++0+1fc <[^>]*> 11831f92 ? strexne r1, r2, \[r3\] ++0+200 <[^>]*> e6bf2075 ? sxth r2, r5 ++0+204 <[^>]*> e6bf2475 ? sxth r2, r5, ror #8 ++0+208 <[^>]*> 16bf2075 ? sxthne r2, r5 ++0+20c <[^>]*> 16bf2475 ? sxthne r2, r5, ror #8 ++0+210 <[^>]*> e68f2075 ? sxtb16 r2, r5 ++0+214 <[^>]*> e68f2475 ? sxtb16 r2, r5, ror #8 ++0+218 <[^>]*> 168f2075 ? sxtb16ne r2, r5 ++0+21c <[^>]*> 168f2475 ? sxtb16ne r2, r5, ror #8 ++0+220 <[^>]*> e6af2075 ? sxtb r2, r5 ++0+224 <[^>]*> e6af2475 ? sxtb r2, r5, ror #8 ++0+228 <[^>]*> 16af2075 ? sxtbne r2, r5 ++0+22c <[^>]*> 16af2475 ? sxtbne r2, r5, ror #8 ++0+230 <[^>]*> e6542f17 ? uadd16 r2, r4, r7 ++0+234 <[^>]*> 16542f17 ? uadd16ne r2, r4, r7 ++0+238 <[^>]*> e6f32075 ? uxtah r2, r3, r5 ++0+23c <[^>]*> e6f32475 ? uxtah r2, r3, r5, ror #8 ++0+240 <[^>]*> 16f32075 ? uxtahne r2, r3, r5 ++0+244 <[^>]*> 16f32475 ? uxtahne r2, r3, r5, ror #8 ++0+248 <[^>]*> e6542f97 ? uadd8 r2, r4, r7 ++0+24c <[^>]*> 16542f97 ? uadd8ne r2, r4, r7 ++0+250 <[^>]*> e6c32075 ? uxtab16 r2, r3, r5 ++0+254 <[^>]*> e6c32475 ? uxtab16 r2, r3, r5, ror #8 ++0+258 <[^>]*> 16c32075 ? uxtab16ne r2, r3, r5 ++0+25c <[^>]*> 16c32475 ? uxtab16ne r2, r3, r5, ror #8 ++0+260 <[^>]*> e6e32075 ? uxtab r2, r3, r5 ++0+264 <[^>]*> e6e32475 ? uxtab r2, r3, r5, ror #8 ++0+268 <[^>]*> 16e32075 ? uxtabne r2, r3, r5 ++0+26c <[^>]*> 16e32475 ? uxtabne r2, r3, r5, ror #8 ++0+270 <[^>]*> e6542f37 ? uasx r2, r4, r7 ++0+274 <[^>]*> 16542f37 ? uasxne r2, r4, r7 ++0+278 <[^>]*> e6742f17 ? uhadd16 r2, r4, r7 ++0+27c <[^>]*> 16742f17 ? uhadd16ne r2, r4, r7 ++0+280 <[^>]*> e6742f97 ? uhadd8 r2, r4, r7 ++0+284 <[^>]*> 16742f97 ? uhadd8ne r2, r4, r7 ++0+288 <[^>]*> e6742f37 ? uhasx r2, r4, r7 ++0+28c <[^>]*> 16742f37 ? uhasxne r2, r4, r7 ++0+290 <[^>]*> e6742f77 ? uhsub16 r2, r4, r7 ++0+294 <[^>]*> 16742f77 ? uhsub16ne r2, r4, r7 ++0+298 <[^>]*> e6742ff7 ? uhsub8 r2, r4, r7 ++0+29c <[^>]*> 16742ff7 ? uhsub8ne r2, r4, r7 ++0+2a0 <[^>]*> e6742f57 ? uhsax r2, r4, r7 ++0+2a4 <[^>]*> 16742f57 ? uhsaxne r2, r4, r7 ++0+2a8 <[^>]*> e0421493 ? umaal r1, r2, r3, r4 ++0+2ac <[^>]*> d0421493 ? umaalle r1, r2, r3, r4 ++0+2b0 <[^>]*> e6642f17 ? uqadd16 r2, r4, r7 ++0+2b4 <[^>]*> 16642f17 ? uqadd16ne r2, r4, r7 ++0+2b8 <[^>]*> e6642f97 ? uqadd8 r2, r4, r7 ++0+2bc <[^>]*> 16642f97 ? uqadd8ne r2, r4, r7 ++0+2c0 <[^>]*> e6642f37 ? uqasx r2, r4, r7 ++0+2c4 <[^>]*> 16642f37 ? uqasxne r2, r4, r7 ++0+2c8 <[^>]*> e6642f77 ? uqsub16 r2, r4, r7 ++0+2cc <[^>]*> 16642f77 ? uqsub16ne r2, r4, r7 ++0+2d0 <[^>]*> e6642ff7 ? uqsub8 r2, r4, r7 ++0+2d4 <[^>]*> 16642ff7 ? uqsub8ne r2, r4, r7 ++0+2d8 <[^>]*> e6642f57 ? uqsax r2, r4, r7 ++0+2dc <[^>]*> 16642f57 ? uqsaxne r2, r4, r7 ++0+2e0 <[^>]*> e781f312 ? usad8 r1, r2, r3 ++0+2e4 <[^>]*> 1781f312 ? usad8ne r1, r2, r3 ++0+2e8 <[^>]*> e7814312 ? usada8 r1, r2, r3, r4 ++0+2ec <[^>]*> 17814312 ? usada8ne r1, r2, r3, r4 ++0+2f0 <[^>]*> e6ef1012 ? usat r1, #15, r2 ++0+2f4 <[^>]*> e6ef1252 ? usat r1, #15, r2, asr #4 ++0+2f8 <[^>]*> e6ef1212 ? usat r1, #15, r2, lsl #4 ++0+2fc <[^>]*> e6ef1f32 ? usat16 r1, #15, r2 ++0+300 <[^>]*> d6ef1f32 ? usat16le r1, #15, r2 ++0+304 <[^>]*> d6ef1012 ? usatle r1, #15, r2 ++0+308 <[^>]*> d6ef1252 ? usatle r1, #15, r2, asr #4 ++0+30c <[^>]*> d6ef1212 ? usatle r1, #15, r2, lsl #4 ++0+310 <[^>]*> e6542f77 ? usub16 r2, r4, r7 ++0+314 <[^>]*> 16542f77 ? usub16ne r2, r4, r7 ++0+318 <[^>]*> e6542ff7 ? usub8 r2, r4, r7 ++0+31c <[^>]*> 16542ff7 ? usub8ne r2, r4, r7 ++0+320 <[^>]*> e6542f57 ? usax r2, r4, r7 ++0+324 <[^>]*> 16542f57 ? usaxne r2, r4, r7 ++0+328 <[^>]*> e6ff2075 ? uxth r2, r5 ++0+32c <[^>]*> e6ff2475 ? uxth r2, r5, ror #8 ++0+330 <[^>]*> 16ff2075 ? uxthne r2, r5 ++0+334 <[^>]*> 16ff2475 ? uxthne r2, r5, ror #8 ++0+338 <[^>]*> e6cf2075 ? uxtb16 r2, r5 ++0+33c <[^>]*> e6cf2475 ? uxtb16 r2, r5, ror #8 ++0+340 <[^>]*> 16cf2075 ? uxtb16ne r2, r5 ++0+344 <[^>]*> 16cf2475 ? uxtb16ne r2, r5, ror #8 ++0+348 <[^>]*> e6ef2075 ? uxtb r2, r5 ++0+34c <[^>]*> e6ef2475 ? uxtb r2, r5, ror #8 ++0+350 <[^>]*> 16ef2075 ? uxtbne r2, r5 ++0+354 <[^>]*> 16ef2475 ? uxtbne r2, r5, ror #8 ++0+358 <[^>]*> f10a00ca ? cpsie if,#10 ++0+35c <[^>]*> f10a00d5 ? cpsie if,#21 ++0+360 <[^>]*> f8cd0510 ? srsia sp, #16 ++0+364 <[^>]*> f9ed0510 ? srsib sp!, #16 +diff --git a/gas/testsuite/gas/arm/archv6.s b/gas/testsuite/gas/arm/archv6.s +index 85f05c1..bc8ea72 100644 +--- a/gas/testsuite/gas/arm/archv6.s ++++ b/gas/testsuite/gas/arm/archv6.s +@@ -35,14 +35,16 @@ label: + revne r3, r5 + revsh r2, r4 + revshne r3, r5 +- rfeda r2 +- rfedb r2! +- rfeea r2 +- rfeed r2! +- rfefa r2! +- rfefd r2 +- rfeia r2 +- rfeib r2! ++ rfeda r2 ++ rfefa r2! ++ rfedb r2 ++ rfeea r2! ++ rfeia r2 ++ rfefd r2! ++ rfeib r2 ++ rfeed r2! ++ rfe r2 ++ rfe r2! + sadd16 r2, r4, r7 + sadd16ne r2, r4, r7 + sxtah r2, r4, r5 +diff --git a/gas/testsuite/gas/arm/macro-pld.d b/gas/testsuite/gas/arm/macro-pld.d +new file mode 100644 +index 0000000..8f9d86c8 +--- /dev/null ++++ b/gas/testsuite/gas/arm/macro-pld.d +@@ -0,0 +1,8 @@ ++#objdump: -dr ++ ++.*: file format .* ++ ++Disassembly of section \.text: ++ ++0+ <.*>: ++\s*0:\s+f5d0f000\s+pld\s+\[r0\] +diff --git a/gas/testsuite/gas/arm/macro-pld.s b/gas/testsuite/gas/arm/macro-pld.s +new file mode 100644 +index 0000000..cf4df8b +--- /dev/null ++++ b/gas/testsuite/gas/arm/macro-pld.s +@@ -0,0 +1,4 @@ ++.macro foo arg, rest:vararg ++ \rest ++.endm ++ foo r0, pld [r0] +diff --git a/gas/testsuite/gas/arm/srs-arm.l b/gas/testsuite/gas/arm/srs-arm.l +index ad992f8..1138973 100644 +--- a/gas/testsuite/gas/arm/srs-arm.l ++++ b/gas/testsuite/gas/arm/srs-arm.l +@@ -3,3 +3,8 @@ + [^:]*:13: Error: SRS base register must be r13 -- `srsda r4,#13' + [^:]*:14: Error: SRS base register must be r13 -- `srsia r4,#13' + [^:]*:15: Error: SRS base register must be r13 -- `srsib r4,#13' ++[^:]*:24: Error: SRS base register must be r13 -- `srsea r4,#13' ++[^:]*:25: Error: SRS base register must be r13 -- `srsfd r4,#13' ++[^:]*:26: Error: SRS base register must be r13 -- `srsfa r4,#13' ++[^:]*:27: Error: SRS base register must be r13 -- `srsed r4,#13' ++[^:]*:30: Error: SRS base register must be r13 -- `srs r4,#13' +diff --git a/gas/testsuite/gas/arm/srs-arm.s b/gas/testsuite/gas/arm/srs-arm.s +index 7d00fc8..5c24b50 100644 +--- a/gas/testsuite/gas/arm/srs-arm.s ++++ b/gas/testsuite/gas/arm/srs-arm.s +@@ -13,4 +13,18 @@ foo: + srsda r4, #13 + srsia r4, #13 + srsib r4, #13 +- ++ srsea r13, #13 ++ srsea r13!, #13 ++ srsfd r13, #13 ++ srsfd r13!, #13 ++ srsfa r13, #13 ++ srsfa r13!, #13 ++ srsed r13, #13 ++ srsed r13!, #13 ++ srsea r4, #13 ++ srsfd r4, #13 ++ srsfa r4, #13 ++ srsed r4, #13 ++ srs r13, #13 ++ srs r13!, #13 ++ srs r4, #13 +diff --git a/gas/testsuite/gas/arm/srs-t2.l b/gas/testsuite/gas/arm/srs-t2.l +index f070375..e5f6fd4 100644 +--- a/gas/testsuite/gas/arm/srs-t2.l ++++ b/gas/testsuite/gas/arm/srs-t2.l +@@ -1,3 +1,6 @@ + [^:]*: Assembler messages: + [^:]*:8: Error: SRS base register must be r13 -- `srsdb r4,#13' + [^:]*:9: Error: SRS base register must be r13 -- `srsia r4,#13' ++[^:]*:16: Error: SRS base register must be r13 -- `srsea r4,#13' ++[^:]*:17: Error: SRS base register must be r13 -- `srsfd r4,#13' ++[^:]*:18: Error: SRS base register must be r13 -- `srs r4,#13' +diff --git a/gas/testsuite/gas/arm/srs-t2.s b/gas/testsuite/gas/arm/srs-t2.s +index 7132626..780d3ca 100644 +--- a/gas/testsuite/gas/arm/srs-t2.s ++++ b/gas/testsuite/gas/arm/srs-t2.s +@@ -7,4 +7,13 @@ foo: + srsia r13!, #13 + srsdb r4, #13 + srsia r4, #13 ++ srsea r13, #13 ++ srsea r13!, #13 ++ srsfd r13, #13 ++ srsfd r13!, #13 ++ srs r13, #13 ++ srs r13!, #13 ++ srsea r4, #13 ++ srsfd r4, #13 ++ srs r4, #13 + +diff --git a/gas/testsuite/gas/cfi/cfi-ppc-1.d b/gas/testsuite/gas/cfi/cfi-ppc-1.d +index 4fa4131..907fe0b 100644 +--- a/gas/testsuite/gas/cfi/cfi-ppc-1.d ++++ b/gas/testsuite/gas/cfi/cfi-ppc-1.d +@@ -1,16 +1,18 @@ +-#readelf: -wf ++#objdump: -Wf + #name: CFI on ppc + #as: -a32 + ++.* ++ + Contents of the .eh_frame section: + + 00000000 00000010 00000000 CIE + Version: 1 + Augmentation: "zR" +- Code alignment factor: 4 ++ Code alignment factor: [24] + Data alignment factor: -4 + Return address column: 65 +- Augmentation data: 1b ++ Augmentation data: [01]b + + DW_CFA_def_cfa: r1 ofs 0 + +diff --git a/gas/testsuite/gas/cfi/cfi-ppc-1.s b/gas/testsuite/gas/cfi/cfi-ppc-1.s +index e4b41cd..1f93bd3 100644 +--- a/gas/testsuite/gas/cfi/cfi-ppc-1.s ++++ b/gas/testsuite/gas/cfi/cfi-ppc-1.s +@@ -4,7 +4,6 @@ + .text + .align 2 + .globl foo +- .type foo, @function + foo: + .cfi_startproc + stwu 1,-48(1) +@@ -42,4 +41,3 @@ foo: + addi 1,1,48 + blr + .cfi_endproc +- .size foo, .-foo +diff --git a/gas/testsuite/gas/cfi/cfi.exp b/gas/testsuite/gas/cfi/cfi.exp +index dfe0cf5..8ae493c 100644 +--- a/gas/testsuite/gas/cfi/cfi.exp ++++ b/gas/testsuite/gas/cfi/cfi.exp +@@ -44,7 +44,7 @@ if { [istarget "i*86-*-*"] || [istarget "x86_64-*-*"] } then { + run_dump_test "cfi-alpha-2" + run_dump_test "cfi-alpha-3" + +-} elseif { [istarget ppc*-*-*] || [istarget powerpc*-*-*] } then { ++} elseif { [istarget powerpc*-*-*] } then { + run_dump_test "cfi-ppc-1" + + } elseif { [istarget s390*-*-*] } then { +@@ -100,8 +100,9 @@ if { ![istarget "hppa64*-*"] } then { + # This test uses .subsection/.previous which are elf-specific. + run_dump_test "cfi-common-5" + } +- # MIPS doesn't support PC relative cfi directives. +- if { ![istarget "mips*-*"] } then { ++ # Some targets don't support PC relative cfi directives ++ if { ![istarget "mips*-*"] && ++ !([istarget powerpc*-*-*] && [is_pecoff_format]) } then { + run_dump_test "cfi-common-6" + } + run_dump_test "cfi-common-7" +diff --git a/gas/testsuite/gas/i386/x86-64-opcode.d b/gas/testsuite/gas/i386/x86-64-opcode.d +index 7c6dd03..4b3003a 100644 +--- a/gas/testsuite/gas/i386/x86-64-opcode.d ++++ b/gas/testsuite/gas/i386/x86-64-opcode.d +@@ -296,4 +296,5 @@ Disassembly of section .text: + [ ]*[a-f0-9]+: 0f 07 sysret + [ ]*[a-f0-9]+: 0f 01 f8 swapgs + [ ]*[a-f0-9]+: 66 68 22 22 pushw \$0x2222 ++[ ]*[a-f0-9]+: 67 e3 ff jecxz 0x49d + #pass +diff --git a/gas/testsuite/gas/i386/x86-64-opcode.s b/gas/testsuite/gas/i386/x86-64-opcode.s +index cb9bbc1..96f624d 100644 +--- a/gas/testsuite/gas/i386/x86-64-opcode.s ++++ b/gas/testsuite/gas/i386/x86-64-opcode.s +@@ -424,3 +424,5 @@ + swapgs # -- -- -- -- 0F 01 f8 + + pushw $0x2222 ++ ++ jecxz .+2 +diff --git a/gas/testsuite/gas/ppc/476.d b/gas/testsuite/gas/ppc/476.d +index ec99678..23b5d6e 100644 +--- a/gas/testsuite/gas/ppc/476.d ++++ b/gas/testsuite/gas/ppc/476.d +@@ -2,496 +2,496 @@ + #as: -a32 -m476 + #name: PowerPC 476 instructions + +-.*: +file format elf32-powerpc.* ++.* + + Disassembly of section \.text: + + 0+00 : +- 0: 7c 64 2a 14 add r3,r4,r5 +- 4: 7c 64 2a 15 add\. r3,r4,r5 +- 8: 7c 64 28 14 addc r3,r4,r5 +- c: 7c 64 28 15 addc\. r3,r4,r5 +- 10: 7c 64 2c 14 addco r3,r4,r5 +- 14: 7c 64 2c 15 addco\. r3,r4,r5 +- 18: 7c 64 29 14 adde r3,r4,r5 +- 1c: 7c 64 29 15 adde\. r3,r4,r5 +- 20: 7c 64 2d 14 addeo r3,r4,r5 +- 24: 7c 64 2d 15 addeo\. r3,r4,r5 +- 28: 38 64 ff 80 addi r3,r4,-128 +- 2c: 30 64 ff 80 addic r3,r4,-128 +- 30: 34 64 ff 80 addic\. r3,r4,-128 +- 34: 3c 64 ff 80 addis r3,r4,-128 +- 38: 7c 64 01 d4 addme r3,r4 +- 3c: 7c 64 01 d5 addme\. r3,r4 +- 40: 7c 64 05 d4 addmeo r3,r4 +- 44: 7c 64 05 d5 addmeo\. r3,r4 +- 48: 7c 64 2e 14 addo r3,r4,r5 +- 4c: 7c 64 2e 15 addo\. r3,r4,r5 +- 50: 7c 64 01 94 addze r3,r4 +- 54: 7c 64 01 95 addze\. r3,r4 +- 58: 7c 64 05 94 addzeo r3,r4 +- 5c: 7c 64 05 95 addzeo\. r3,r4 +- 60: 7c 83 28 38 and r3,r4,r5 +- 64: 7c 83 28 39 and\. r3,r4,r5 +- 68: 7d cd 78 78 andc r13,r14,r15 +- 6c: 7e 30 90 79 andc\. r16,r17,r18 +- 70: 70 83 de ad andi\. r3,r4,57005 +- 74: 74 83 de ad andis\. r3,r4,57005 +- 78: 48 00 00 02 ba 0 +- 7c: 40 01 00 00 bdnzf gt,7c +- 80: 40 85 00 02 blea cr1,0 +- 84: 4d 80 04 20 bltctr +- 88: 4c 8a 04 20 bnectr cr2 +- 8c: 4c 86 04 20 bnectr cr1 +- 90: 4c 86 04 20 bnectr cr1 +- 94: 4d 80 04 21 bltctrl +- 98: 4c 8a 04 21 bnectrl cr2 +- 9c: 4c 86 04 21 bnectrl cr1 +- a0: 4c 86 04 21 bnectrl cr1 +- a4: 40 43 00 01 bdzfl so,a4 +- a8: 4d 80 00 20 bltlr +- ac: 4c 8a 00 20 bnelr cr2 +- b0: 4c 86 00 20 bnelr cr1 +- b4: 4c 86 00 20 bnelr cr1 +- b8: 4d 80 00 21 bltlrl +- bc: 4c 8a 00 21 bnelrl cr2 +- c0: 4c 86 00 21 bnelrl cr1 +- c4: 4c 86 00 21 bnelrl cr1 +- c8: 48 00 00 00 b c8 +- cc: 48 00 00 01 bl cc +- d0: 54 83 00 36 rlwinm r3,r4,0,0,27 +- d4: 7c 03 20 00 cmpw r3,r4 +- d8: 7f 83 20 00 cmpw cr7,r3,r4 +- dc: 7c 83 2b f8 cmpb r3,r4,r5 +- e0: 7c 83 2b f8 cmpb r3,r4,r5 +- e4: 2c 03 ff 59 cmpwi r3,-167 +- e8: 2f 83 ff 59 cmpwi cr7,r3,-167 +- ec: 7c 03 20 40 cmplw r3,r4 +- f0: 7f 83 20 40 cmplw cr7,r3,r4 +- f4: 28 03 00 a7 cmplwi r3,167 +- f8: 2b 83 00 a7 cmplwi cr7,r3,167 +- fc: 7c 03 20 40 cmplw r3,r4 +- 100: 28 03 00 a7 cmplwi r3,167 +- 104: 7c 03 20 00 cmpw r3,r4 +- 108: 2c 03 ff 59 cmpwi r3,-167 +- 10c: 7d 6a 00 34 cntlzw r10,r11 +- 110: 7d 6a 00 35 cntlzw\. r10,r11 +- 114: 4c 85 32 02 crand 4\*cr1\+lt,4\*cr1\+gt,4\*cr1\+eq +- 118: 4c 64 29 02 crandc so,4\*cr1\+lt,4\*cr1\+gt +- 11c: 4c e0 0a 42 creqv 4\*cr1\+so,lt,gt +- 120: 4c 22 19 c2 crnand gt,eq,so +- 124: 4c 01 10 42 crnor lt,gt,eq +- 128: 4c a6 3b 82 cror 4\*cr1\+gt,4\*cr1\+eq,4\*cr1\+so +- 12c: 4c 43 23 42 crorc eq,so,4\*cr1\+lt +- 130: 4c c7 01 82 crxor 4\*cr1\+eq,4\*cr1\+so,lt +- 134: 7c 09 55 ec dcba r9,r10 +- 138: 7c 06 38 ac dcbf r6,r7 +- 13c: 7c 06 38 ac dcbf r6,r7 +- 140: 7c 06 3b ac dcbi r6,r7 +- 144: 7c 85 33 0c dcblc 4,r5,r6 +- 148: 7c 06 38 6c dcbst r6,r7 +- 14c: 7c c0 2a 2c dcbt 0,r5,6 +- 150: 7c 05 32 2c dcbt r5,r6 +- 154: 7c c8 2a 2c dcbt r8,r5,6 +- 158: 7c e8 49 4c dcbtls 7,r8,r9 +- 15c: 7c e0 31 ec dcbtst 0,r6,7 +- 160: 7c 06 39 ec dcbtst r6,r7 +- 164: 7c e9 31 ec dcbtst r9,r6,7 +- 168: 7d 4b 61 0c dcbtstls 10,r11,r12 +- 16c: 7c 01 17 ec dcbz r1,r2 +- 170: 7c 05 37 ec dcbz r5,r6 +- 174: 7c 00 03 8c dccci +- 178: 7c 00 03 8c dccci +- 17c: 7c 00 03 8c dccci +- 180: 7c 20 03 8c dci 1 +- 184: 7d 4b 63 d6 divw r10,r11,r12 +- 188: 7d 6c 6b d7 divw\. r11,r12,r13 +- 18c: 7d 4b 67 d6 divwo r10,r11,r12 +- 190: 7d 6c 6f d7 divwo\. r11,r12,r13 +- 194: 7d 4b 63 96 divwu r10,r11,r12 +- 198: 7d 6c 6b 97 divwu\. r11,r12,r13 +- 19c: 7d 4b 67 96 divwuo r10,r11,r12 +- 1a0: 7d 6c 6f 97 divwuo\. r11,r12,r13 +- 1a4: 7c 83 28 9c dlmzb r3,r4,r5 +- 1a8: 7c 83 28 9d dlmzb\. r3,r4,r5 +- 1ac: 7d 6a 62 38 eqv r10,r11,r12 +- 1b0: 7d 6a 62 39 eqv\. r10,r11,r12 +- 1b4: 54 83 20 26 rlwinm r3,r4,4,0,19 +- 1b8: 7c 83 07 74 extsb r3,r4 +- 1bc: 7c 83 07 75 extsb\. r3,r4 +- 1c0: 7c 83 07 34 extsh r3,r4 +- 1c4: 7c 83 07 35 extsh\. r3,r4 +- 1c8: fe a0 fa 10 fabs f21,f31 +- 1cc: fe a0 fa 11 fabs\. f21,f31 +- 1d0: fd 4b 60 2a fadd f10,f11,f12 +- 1d4: fd 4b 60 2b fadd\. f10,f11,f12 +- 1d8: ed 4b 60 2a fadds f10,f11,f12 +- 1dc: ed 4b 60 2b fadds\. f10,f11,f12 +- 1e0: fd 40 5e 9c fcfid f10,f11 +- 1e4: fd 40 5e 9d fcfid\. f10,f11 +- 1e8: fd 8a 58 40 fcmpo cr3,f10,f11 +- 1ec: fd 84 28 00 fcmpu cr3,f4,f5 +- 1f0: fd 4b 60 10 fcpsgn f10,f11,f12 +- 1f4: fd 4b 60 11 fcpsgn\. f10,f11,f12 +- 1f8: fd 40 5e 5c fctid f10,f11 +- 1fc: fd 40 5e 5d fctid\. f10,f11 +- 200: fd 40 5e 5e fctidz f10,f11 +- 204: fd 40 5e 5f fctidz\. f10,f11 +- 208: fd 40 58 1c fctiw f10,f11 +- 20c: fd 40 58 1d fctiw\. f10,f11 +- 210: fd 40 58 1e fctiwz f10,f11 +- 214: fd 40 58 1f fctiwz\. f10,f11 +- 218: fd 4b 60 24 fdiv f10,f11,f12 +- 21c: fd 4b 60 25 fdiv\. f10,f11,f12 +- 220: ed 4b 60 24 fdivs f10,f11,f12 +- 224: ed 4b 60 25 fdivs\. f10,f11,f12 +- 228: fd 4b 6b 3a fmadd f10,f11,f12,f13 +- 22c: fd 4b 6b 3b fmadd\. f10,f11,f12,f13 +- 230: ed 4b 6b 3a fmadds f10,f11,f12,f13 +- 234: ed 4b 6b 3b fmadds\. f10,f11,f12,f13 +- 238: fc 60 20 90 fmr f3,f4 +- 23c: fc 60 20 91 fmr\. f3,f4 +- 240: fd 4b 6b 38 fmsub f10,f11,f12,f13 +- 244: fd 4b 6b 39 fmsub\. f10,f11,f12,f13 +- 248: ed 4b 6b 38 fmsubs f10,f11,f12,f13 +- 24c: ed 4b 6b 39 fmsubs\. f10,f11,f12,f13 +- 250: fd 4b 03 32 fmul f10,f11,f12 +- 254: fd 4b 03 33 fmul\. f10,f11,f12 +- 258: ed 4b 03 32 fmuls f10,f11,f12 +- 25c: ed 4b 03 33 fmuls\. f10,f11,f12 +- 260: fe 80 f1 10 fnabs f20,f30 +- 264: fe 80 f1 11 fnabs\. f20,f30 +- 268: fc 60 20 50 fneg f3,f4 +- 26c: fc 60 20 51 fneg\. f3,f4 +- 270: fd 4b 6b 3e fnmadd f10,f11,f12,f13 +- 274: fd 4b 6b 3f fnmadd\. f10,f11,f12,f13 +- 278: ed 4b 6b 3e fnmadds f10,f11,f12,f13 +- 27c: ed 4b 6b 3f fnmadds\. f10,f11,f12,f13 +- 280: fd 4b 6b 3c fnmsub f10,f11,f12,f13 +- 284: fd 4b 6b 3d fnmsub\. f10,f11,f12,f13 +- 288: ed 4b 6b 3c fnmsubs f10,f11,f12,f13 +- 28c: ed 4b 6b 3d fnmsubs\. f10,f11,f12,f13 +- 290: fd c0 78 30 fre f14,f15 +- 294: fd c0 78 31 fre\. f14,f15 +- 298: ed c0 78 30 fres f14,f15 +- 29c: ed c0 78 31 fres\. f14,f15 +- 2a0: fd 40 5b d0 frim f10,f11 +- 2a4: fd 40 5b d1 frim\. f10,f11 +- 2a8: fd 40 5b 10 frin f10,f11 +- 2ac: fd 40 5b 11 frin\. f10,f11 +- 2b0: fd 40 5b 90 frip f10,f11 +- 2b4: fd 40 5b 91 frip\. f10,f11 +- 2b8: fd 40 5b 50 friz f10,f11 +- 2bc: fd 40 5b 51 friz\. f10,f11 +- 2c0: fc c0 38 18 frsp f6,f7 +- 2c4: fd 00 48 19 frsp\. f8,f9 +- 2c8: fd c0 78 34 frsqrte f14,f15 +- 2cc: fd c0 78 35 frsqrte\. f14,f15 +- 2d0: ed c0 78 34 frsqrtes f14,f15 +- 2d4: ed c0 78 35 frsqrtes\. f14,f15 +- 2d8: fd 4b 6b 2e fsel f10,f11,f12,f13 +- 2dc: fd 4b 6b 2f fsel\. f10,f11,f12,f13 +- 2e0: fd 40 58 2c fsqrt f10,f11 +- 2e4: fd 40 58 2d fsqrt\. f10,f11 +- 2e8: ed 40 58 2c fsqrts f10,f11 +- 2ec: ed 40 58 2d fsqrts\. f10,f11 +- 2f0: fd 4b 60 28 fsub f10,f11,f12 +- 2f4: fd 4b 60 29 fsub\. f10,f11,f12 +- 2f8: ed 4b 60 28 fsubs f10,f11,f12 +- 2fc: ed 4b 60 29 fsubs\. f10,f11,f12 +- 300: 7c 03 27 ac icbi r3,r4 +- 304: 7e 11 91 cc icblc 16,r17,r18 +- 308: 7c a8 48 2c icbt 5,r8,r9 +- 30c: 7d ae 7b cc icbtls 13,r14,r15 +- 310: 7c 00 07 8c iccci +- 314: 7c 00 07 8c iccci +- 318: 7c 00 07 8c iccci +- 31c: 7c 20 07 8c ici 1 +- 320: 7c 03 27 cc icread r3,r4 +- 324: 50 83 65 36 rlwimi r3,r4,12,20,27 +- 328: 7c 43 27 1e isel r2,r3,r4,28 +- 32c: 4c 00 01 2c isync +- 330: 89 21 00 00 lbz r9,0\(r1\) +- 334: 8d 41 00 01 lbzu r10,1\(r1\) +- 338: 7e 95 b0 ee lbzux r20,r21,r22 +- 33c: 7c 64 28 ae lbzx r3,r4,r5 +- 340: ca a1 00 08 lfd f21,8\(r1\) +- 344: ce c1 00 10 lfdu f22,16\(r1\) +- 348: 7e 95 b4 ee lfdux f20,r21,r22 +- 34c: 7d ae 7c ae lfdx f13,r14,r15 +- 350: 7d 43 26 ae lfiwax f10,r3,r4 +- 354: c2 61 00 00 lfs f19,0\(r1\) +- 358: c6 81 00 04 lfsu f20,4\(r1\) +- 35c: 7d 4b 64 6e lfsux f10,r11,r12 +- 360: 7d 4b 64 2e lfsx f10,r11,r12 +- 364: a9 e1 00 06 lha r15,6\(r1\) +- 368: ae 01 00 08 lhau r16,8\(r1\) +- 36c: 7d 2a 5a ee lhaux r9,r10,r11 +- 370: 7d 2a 5a ae lhax r9,r10,r11 +- 374: 7c 64 2e 2c lhbrx r3,r4,r5 +- 378: a1 a1 00 00 lhz r13,0\(r1\) +- 37c: a5 c1 00 02 lhzu r14,2\(r1\) +- 380: 7e 96 c2 6e lhzux r20,r22,r24 +- 384: 7e f8 ca 2e lhzx r23,r24,r25 +- 388: b8 61 ff f0 lmw r3,-16\(r1\) +- 38c: 7c a4 84 aa lswi r5,r4,16 +- 390: 7c 64 2c 2a lswx r3,r4,r5 +- 394: 7c 64 28 28 lwarx r3,r4,r5 +- 398: 7c 64 28 28 lwarx r3,r4,r5 +- 39c: 7c 64 28 29 lwarx r3,r4,r5,1 +- 3a0: 7c 64 2c 2c lwbrx r3,r4,r5 +- 3a4: 80 c7 00 00 lwz r6,0\(r7\) +- 3a8: 84 61 00 10 lwzu r3,16\(r1\) +- 3ac: 7c 64 28 6e lwzux r3,r4,r5 +- 3b0: 7c 64 28 2e lwzx r3,r4,r5 +- 3b4: 10 64 29 58 macchw r3,r4,r5 +- 3b8: 10 64 29 59 macchw\. r3,r4,r5 +- 3bc: 10 64 2d 58 macchwo r3,r4,r5 +- 3c0: 10 64 2d 59 macchwo\. r3,r4,r5 +- 3c4: 10 64 29 d8 macchws r3,r4,r5 +- 3c8: 10 64 29 d9 macchws\. r3,r4,r5 +- 3cc: 10 64 2d d8 macchwso r3,r4,r5 +- 3d0: 10 64 2d d9 macchwso\. r3,r4,r5 +- 3d4: 10 64 29 98 macchwsu r3,r4,r5 +- 3d8: 10 64 29 99 macchwsu\. r3,r4,r5 +- 3dc: 10 64 2d 98 macchwsuo r3,r4,r5 +- 3e0: 10 64 2d 99 macchwsuo\. r3,r4,r5 +- 3e4: 10 64 29 18 macchwu r3,r4,r5 +- 3e8: 10 64 29 19 macchwu\. r3,r4,r5 +- 3ec: 10 64 2d 18 macchwuo r3,r4,r5 +- 3f0: 10 64 2d 19 macchwuo\. r3,r4,r5 +- 3f4: 10 64 28 58 machhw r3,r4,r5 +- 3f8: 10 64 28 59 machhw\. r3,r4,r5 +- 3fc: 10 64 2c 58 machhwo r3,r4,r5 +- 400: 10 64 2c 59 machhwo\. r3,r4,r5 +- 404: 10 64 28 d8 machhws r3,r4,r5 +- 408: 10 64 28 d9 machhws\. r3,r4,r5 +- 40c: 10 64 2c d8 machhwso r3,r4,r5 +- 410: 10 64 2c d9 machhwso\. r3,r4,r5 +- 414: 10 64 28 98 machhwsu r3,r4,r5 +- 418: 10 64 28 99 machhwsu\. r3,r4,r5 +- 41c: 10 64 2c 98 machhwsuo r3,r4,r5 +- 420: 10 64 2c 99 machhwsuo\. r3,r4,r5 +- 424: 10 64 28 18 machhwu r3,r4,r5 +- 428: 10 64 28 19 machhwu\. r3,r4,r5 +- 42c: 10 64 2c 18 machhwuo r3,r4,r5 +- 430: 10 64 2c 19 machhwuo\. r3,r4,r5 +- 434: 10 64 2b 58 maclhw r3,r4,r5 +- 438: 10 64 2b 59 maclhw\. r3,r4,r5 +- 43c: 10 64 2f 58 maclhwo r3,r4,r5 +- 440: 10 64 2f 59 maclhwo\. r3,r4,r5 +- 444: 10 64 2b d8 maclhws r3,r4,r5 +- 448: 10 64 2b d9 maclhws\. r3,r4,r5 +- 44c: 10 64 2f d8 maclhwso r3,r4,r5 +- 450: 10 64 2f d9 maclhwso\. r3,r4,r5 +- 454: 10 64 2b 98 maclhwsu r3,r4,r5 +- 458: 10 64 2b 99 maclhwsu\. r3,r4,r5 +- 45c: 10 64 2f 98 maclhwsuo r3,r4,r5 +- 460: 10 64 2f 99 maclhwsuo\. r3,r4,r5 +- 464: 10 64 2b 18 maclhwu r3,r4,r5 +- 468: 10 64 2b 19 maclhwu\. r3,r4,r5 +- 46c: 10 64 2f 18 maclhwuo r3,r4,r5 +- 470: 10 64 2f 19 maclhwuo\. r3,r4,r5 +- 474: 7c 00 06 ac mbar +- 478: 7c 00 06 ac mbar +- 47c: 7c 20 06 ac mbar 1 +- 480: 4c 04 00 00 mcrf cr0,cr1 +- 484: fd 90 00 80 mcrfs cr3,cr4 +- 488: 7d 80 04 00 mcrxr cr3 +- 48c: 7c 60 00 26 mfcr r3 +- 490: 7c 60 00 26 mfcr r3 +- 494: 7c aa 3a 86 mfdcr r5,234 +- 498: 7c 64 02 46 mfdcrux r3,r4 +- 49c: 7c 85 02 06 mfdcrx r4,r5 +- 4a0: ff c0 04 8e mffs f30 +- 4a4: ff e0 04 8f mffs\. f31 +- 4a8: 7e 60 00 a6 mfmsr r19 +- 4ac: 7c 78 00 26 mfocrf r3,128 +- 4b0: 7c 60 22 a6 mfspr r3,128 +- 4b4: 7c 6c 42 e6 mftbl r3 +- 4b8: 7c 00 04 ac msync +- 4bc: 7c 78 01 20 mtocrf 128,r3 +- 4c0: 7c 6f f1 20 mtcr r3 +- 4c4: 7d 10 6b 86 mtdcr 432,r8 +- 4c8: 7c 83 03 46 mtdcrux r3,r4 +- 4cc: 7c e6 03 06 mtdcrx r6,r7 +- 4d0: fc 60 00 8c mtfsb0 so +- 4d4: fc 60 00 8d mtfsb0\. so +- 4d8: fc 60 00 4c mtfsb1 so +- 4dc: fc 60 00 4d mtfsb1\. so +- 4e0: fc 0c 55 8e mtfsf 6,f10 +- 4e4: fc 0c 55 8e mtfsf 6,f10 +- 4e8: fc 0d 55 8e mtfsf 6,f10,0,1 +- 4ec: fe 0c 55 8e mtfsf 6,f10,1,0 +- 4f0: fc 0c 5d 8f mtfsf\. 6,f11 +- 4f4: fc 0c 5d 8f mtfsf\. 6,f11 +- 4f8: fc 0d 5d 8f mtfsf\. 6,f11,0,1 +- 4fc: fe 0c 5d 8f mtfsf\. 6,f11,1,0 +- 500: ff 00 01 0c mtfsfi 6,0 +- 504: ff 00 01 0c mtfsfi 6,0 +- 508: ff 00 01 0c mtfsfi 6,0 +- 50c: ff 01 01 0c mtfsfi 6,0,1 +- 510: ff 00 f1 0d mtfsfi\. 6,15 +- 514: ff 00 f1 0d mtfsfi\. 6,15 +- 518: ff 00 f1 0d mtfsfi\. 6,15 +- 51c: ff 01 f1 0d mtfsfi\. 6,15,1 +- 520: 7d 40 01 24 mtmsr r10 +- 524: 7c 78 01 20 mtocrf 128,r3 +- 528: 7c 60 23 a6 mtspr 128,r3 +- 52c: 10 64 29 50 mulchw r3,r4,r5 +- 530: 10 64 29 51 mulchw\. r3,r4,r5 +- 534: 10 64 29 10 mulchwu r3,r4,r5 +- 538: 10 64 29 11 mulchwu\. r3,r4,r5 +- 53c: 10 64 28 50 mulhhw r3,r4,r5 +- 540: 10 64 28 51 mulhhw\. r3,r4,r5 +- 544: 10 64 28 10 mulhhwu r3,r4,r5 +- 548: 10 64 28 11 mulhhwu\. r3,r4,r5 +- 54c: 7c 64 28 96 mulhw r3,r4,r5 +- 550: 7c 64 28 97 mulhw\. r3,r4,r5 +- 554: 7c 64 28 16 mulhwu r3,r4,r5 +- 558: 7c 64 28 17 mulhwu\. r3,r4,r5 +- 55c: 10 64 2b 50 mullhw r3,r4,r5 +- 560: 10 64 2b 51 mullhw\. r3,r4,r5 +- 564: 10 64 2b 10 mullhwu r3,r4,r5 +- 568: 10 64 2b 11 mullhwu\. r3,r4,r5 +- 56c: 1c 64 00 05 mulli r3,r4,5 +- 570: 7c 64 29 d6 mullw r3,r4,r5 +- 574: 7c 64 29 d7 mullw\. r3,r4,r5 +- 578: 7c 64 2d d6 mullwo r3,r4,r5 +- 57c: 7c 64 2d d7 mullwo\. r3,r4,r5 +- 580: 7f bc f3 b8 nand r28,r29,r30 +- 584: 7f bc f3 b9 nand\. r28,r29,r30 +- 588: 7c 64 00 d0 neg r3,r4 +- 58c: 7c 64 00 d1 neg\. r3,r4 +- 590: 7e 11 04 d0 nego r16,r17 +- 594: 7e 53 04 d1 nego\. r18,r19 +- 598: 10 64 29 5c nmacchw r3,r4,r5 +- 59c: 10 64 29 5d nmacchw\. r3,r4,r5 +- 5a0: 10 64 2d 5c nmacchwo r3,r4,r5 +- 5a4: 10 64 2d 5d nmacchwo\. r3,r4,r5 +- 5a8: 10 64 29 dc nmacchws r3,r4,r5 +- 5ac: 10 64 29 dd nmacchws\. r3,r4,r5 +- 5b0: 10 64 2d dc nmacchwso r3,r4,r5 +- 5b4: 10 64 2d dd nmacchwso\. r3,r4,r5 +- 5b8: 10 64 28 5c nmachhw r3,r4,r5 +- 5bc: 10 64 28 5d nmachhw\. r3,r4,r5 +- 5c0: 10 64 2c 5c nmachhwo r3,r4,r5 +- 5c4: 10 64 2c 5d nmachhwo\. r3,r4,r5 +- 5c8: 10 64 28 dc nmachhws r3,r4,r5 +- 5cc: 10 64 28 dd nmachhws\. r3,r4,r5 +- 5d0: 10 64 2c dc nmachhwso r3,r4,r5 +- 5d4: 10 64 2c dd nmachhwso\. r3,r4,r5 +- 5d8: 10 64 2b 5c nmaclhw r3,r4,r5 +- 5dc: 10 64 2b 5d nmaclhw\. r3,r4,r5 +- 5e0: 10 64 2f 5c nmaclhwo r3,r4,r5 +- 5e4: 10 64 2f 5d nmaclhwo\. r3,r4,r5 +- 5e8: 10 64 2b dc nmaclhws r3,r4,r5 +- 5ec: 10 64 2b dd nmaclhws\. r3,r4,r5 +- 5f0: 10 64 2f dc nmaclhwso r3,r4,r5 +- 5f4: 10 64 2f dd nmaclhwso\. r3,r4,r5 +- 5f8: 7e b4 b0 f8 nor r20,r21,r22 +- 5fc: 7e b4 b0 f9 nor\. r20,r21,r22 +- 600: 7c 40 23 78 or r0,r2,r4 +- 604: 7d cc 83 79 or\. r12,r14,r16 +- 608: 7e 0f 8b 38 orc r15,r16,r17 +- 60c: 7e 72 a3 39 orc\. r18,r19,r20 +- 610: 60 21 00 00 ori r1,r1,0 +- 614: 64 83 de ad oris r3,r4,57005 +- 618: 7c 83 00 f4 popcntb r3,r4 +- 61c: 7c 83 01 34 prtyw r3,r4 +- 620: 4c 00 00 66 rfci +- 624: 4c 00 00 64 rfi +- 628: 4c 00 00 4c rfmci +- 62c: 50 83 65 36 rlwimi r3,r4,12,20,27 +- 630: 50 83 65 37 rlwimi\. r3,r4,12,20,27 +- 634: 54 83 00 36 rlwinm r3,r4,0,0,27 +- 638: 54 83 d1 be rlwinm r3,r4,26,6,31 +- 63c: 54 83 20 26 rlwinm r3,r4,4,0,19 +- 640: 54 83 00 37 rlwinm\. r3,r4,0,0,27 +- 644: 5c 83 28 3e rotlw r3,r4,r5 +- 648: 5c 83 28 3f rotlw\. r3,r4,r5 +- 64c: 5c 83 28 3e rotlw r3,r4,r5 +- 650: 5c 83 28 3f rotlw\. r3,r4,r5 +- 654: 44 00 00 02 sc +- 658: 7c 83 28 30 slw r3,r4,r5 +- 65c: 7c 83 28 31 slw\. r3,r4,r5 +- 660: 7c 83 2e 30 sraw r3,r4,r5 +- 664: 7c 83 2e 31 sraw\. r3,r4,r5 +- 668: 7c 83 86 70 srawi r3,r4,16 +- 66c: 7c 83 86 71 srawi\. r3,r4,16 +- 670: 7c 83 2c 30 srw r3,r4,r5 +- 674: 7c 83 2c 31 srw\. r3,r4,r5 +- 678: 54 83 d1 be rlwinm r3,r4,26,6,31 +- 67c: 99 61 00 02 stb r11,2\(r1\) +- 680: 9d 81 00 03 stbu r12,3\(r1\) +- 684: 7d ae 79 ee stbux r13,r14,r15 +- 688: 7c 64 29 ae stbx r3,r4,r5 +- 68c: db 21 00 20 stfd f25,32\(r1\) +- 690: df 41 00 28 stfdu f26,40\(r1\) +- 694: 7c 01 15 ee stfdux f0,r1,r2 +- 698: 7f be fd ae stfdx f29,r30,r31 +- 69c: 7d 43 27 ae stfiwx f10,r3,r4 +- 6a0: d2 e1 00 14 stfs f23,20\(r1\) +- 6a4: d7 01 00 18 stfsu f24,24\(r1\) +- 6a8: 7f 5b e5 6e stfsux f26,r27,r28 +- 6ac: 7e f8 cd 2e stfsx f23,r24,r25 +- 6b0: b2 21 00 0a sth r17,10\(r1\) +- 6b4: 7c c7 47 2c sthbrx r6,r7,r8 +- 6b8: b6 41 00 0c sthu r18,12\(r1\) +- 6bc: 7e b6 bb 6e sthux r21,r22,r23 +- 6c0: 7d 8d 73 2e sthx r12,r13,r14 +- 6c4: bc c1 ff f0 stmw r6,-16\(r1\) +- 6c8: 7c 64 85 aa stswi r3,r4,16 +- 6cc: 7c 64 2d 2a stswx r3,r4,r5 +- 6d0: 90 c7 ff f0 stw r6,-16\(r7\) +- 6d4: 7c 64 2d 2c stwbrx r3,r4,r5 +- 6d8: 7c 64 29 2d stwcx\. r3,r4,r5 +- 6dc: 94 61 00 10 stwu r3,16\(r1\) +- 6e0: 7c 64 29 6e stwux r3,r4,r5 +- 6e4: 7c 64 29 2e stwx r3,r4,r5 +- 6e8: 7c 64 28 50 subf r3,r4,r5 +- 6ec: 7c 64 28 51 subf\. r3,r4,r5 +- 6f0: 7c 64 28 10 subfc r3,r4,r5 +- 6f4: 7c 64 28 11 subfc\. r3,r4,r5 +- 6f8: 7c 64 2c 10 subfco r3,r4,r5 +- 6fc: 7c 64 2c 11 subfco\. r3,r4,r5 +- 700: 7c 64 29 10 subfe r3,r4,r5 +- 704: 7c 64 29 11 subfe\. r3,r4,r5 +- 708: 7c 64 2d 10 subfeo r3,r4,r5 +- 70c: 7c 64 2d 11 subfeo\. r3,r4,r5 +- 710: 20 64 00 05 subfic r3,r4,5 +- 714: 7c 64 01 d0 subfme r3,r4 +- 718: 7c 64 01 d1 subfme\. r3,r4 +- 71c: 7c 64 05 d0 subfmeo r3,r4 +- 720: 7c 64 05 d1 subfmeo\. r3,r4 +- 724: 7c 64 2c 50 subfo r3,r4,r5 +- 728: 7c 64 2c 51 subfo\. r3,r4,r5 +- 72c: 7c 64 01 90 subfze r3,r4 +- 730: 7c 64 01 91 subfze\. r3,r4 +- 734: 7c 64 05 90 subfzeo r3,r4 +- 738: 7c 64 05 91 subfzeo\. r3,r4 +- 73c: 7c 07 46 24 tlbivax r7,r8 +- 740: 7c 22 3f 64 tlbre r1,r2,7 +- 744: 7c 0b 67 24 tlbsx r11,r12 +- 748: 7d 8d 77 24 tlbsx r12,r13,r14 +- 74c: 7d 8d 77 25 tlbsx\. r12,r13,r14 +- 750: 7c 00 04 6c tlbsync +- 754: 7c 00 07 a4 tlbwe +- 758: 7c 00 07 a4 tlbwe +- 75c: 7c 21 0f a4 tlbwe r1,r1,1 +- 760: 7f e0 00 08 trap +- 764: 7f e0 00 08 trap +- 768: 7c 83 20 08 tweq r3,r4 +- 76c: 7c a3 20 08 twlge r3,r4 +- 770: 7c 83 20 08 tweq r3,r4 +- 774: 0d 03 00 0f twgti r3,15 +- 778: 0c c3 00 0f twllei r3,15 +- 77c: 0d 03 00 0f twgti r3,15 +- 780: 7c a3 20 08 twlge r3,r4 +- 784: 0c c3 00 0f twllei r3,15 +- 788: 7c 60 01 06 wrtee r3 +- 78c: 7c 00 81 46 wrteei 1 +- 790: 7f dd fa 78 xor r29,r30,r31 +- 794: 7f dd fa 79 xor\. r29,r30,r31 +- 798: 68 83 de ad xori r3,r4,57005 +- 79c: 6c 83 de ad xoris r3,r4,57005 ++ 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 c0 2a 2c|2c 2a c0 7c) dcbt 0,r5,6 ++ 150: (7c 05 32 2c|2c 32 05 7c) dcbt r5,r6 ++ 154: (7c c8 2a 2c|2c 2a c8 7c) dcbt r8,r5,6 ++ 158: (7c e8 49 4c|4c 49 e8 7c) dcbtls 7,r8,r9 ++ 15c: (7c e0 31 ec|ec 31 e0 7c) dcbtst 0,r6,7 ++ 160: (7c 06 39 ec|ec 39 06 7c) dcbtst r6,r7 ++ 164: (7c e9 31 ec|ec 31 e9 7c) dcbtst r9,r6,7 ++ 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 e6|e6 42 6c 7c) mftbl 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 so ++ 4d4: (fc 60 00 8d|8d 00 60 fc) mtfsb0\. so ++ 4d8: (fc 60 00 4c|4c 00 60 fc) mtfsb1 so ++ 4dc: (fc 60 00 4d|4d 00 60 fc) mtfsb1\. so ++ 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,0 ++ 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,0 ++ 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 +diff --git a/gas/testsuite/gas/ppc/476.s b/gas/testsuite/gas/ppc/476.s +index c075efb..da6fb71 100644 +--- a/gas/testsuite/gas/ppc/476.s ++++ b/gas/testsuite/gas/ppc/476.s +@@ -1,4 +1,4 @@ +- .section ".text" ++ .text + ppc476: + add 3,4,5 + add. 3,4,5 +diff --git a/gas/testsuite/gas/ppc/a2.d b/gas/testsuite/gas/ppc/a2.d +index 89810dd..8684ed7 100644 +--- a/gas/testsuite/gas/ppc/a2.d ++++ b/gas/testsuite/gas/ppc/a2.d +@@ -3,582 +3,582 @@ + #name: A2 tests + + +-.*: +file format elf(32)?(64)?-powerpc.* ++.* + + + Disassembly of section \.text: + + 0+00 : +- 0: 7c 85 32 15 add\. r4,r5,r6 +- 4: 7c 85 32 14 add r4,r5,r6 +- 8: 7c 85 30 15 addc\. r4,r5,r6 +- c: 7c 85 30 14 addc r4,r5,r6 +- 10: 7c 85 34 15 addco\. r4,r5,r6 +- 14: 7c 85 34 14 addco r4,r5,r6 +- 18: 7c 85 31 15 adde\. r4,r5,r6 +- 1c: 7c 85 31 14 adde r4,r5,r6 +- 20: 7c 85 35 15 addeo\. r4,r5,r6 +- 24: 7c 85 35 14 addeo r4,r5,r6 +- 28: 38 85 00 0d addi r4,r5,13 +- 2c: 38 85 ff f3 addi r4,r5,-13 +- 30: 34 85 00 0d addic\. r4,r5,13 +- 34: 34 85 ff f3 addic\. r4,r5,-13 +- 38: 30 85 00 0d addic r4,r5,13 +- 3c: 30 85 ff f3 addic r4,r5,-13 +- 40: 3c 85 00 17 addis r4,r5,23 +- 44: 3c 85 ff e9 addis r4,r5,-23 +- 48: 7c 85 01 d5 addme\. r4,r5 +- 4c: 7c 85 01 d4 addme r4,r5 +- 50: 7c 85 05 d5 addmeo\. r4,r5 +- 54: 7c 85 05 d4 addmeo r4,r5 +- 58: 7c 85 36 15 addo\. r4,r5,r6 +- 5c: 7c 85 36 14 addo r4,r5,r6 +- 60: 7c 85 01 95 addze\. r4,r5 +- 64: 7c 85 01 94 addze r4,r5 +- 68: 7c 85 05 95 addzeo\. r4,r5 +- 6c: 7c 85 05 94 addzeo r4,r5 +- 70: 7c a4 30 39 and\. r4,r5,r6 +- 74: 7c a4 30 38 and r4,r5,r6 +- 78: 7c a4 30 79 andc\. r4,r5,r6 +- 7c: 7c a4 30 78 andc r4,r5,r6 +- 80: 70 a4 00 06 andi\. r4,r5,6 +- 84: 74 a4 00 06 andis\. r4,r5,6 +- 88: 00 00 02 00 attn +- 8c: 48 00 00 02 ba 0 ++ 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 01 00 00 bdnzf gt,90 ++ 90: (40 01 00 00|00 00 01 40) bdnzf gt,90 + 90: R_PPC(|64)_REL14 foo +- 94: 40 01 00 00 bdnzf gt,94 ++ 94: (40 01 00 00|00 00 01 40) bdnzf gt,94 + 94: R_PPC(|64)_REL14 foo +- 98: 40 01 00 00 bdnzf gt,98 ++ 98: (40 01 00 00|00 00 01 40) bdnzf gt,98 + 98: R_PPC(|64)_REL14 foo +- 9c: 40 85 00 02 blea cr1,0 ++ 9c: (40 85 00 02|02 00 85 40) blea cr1,0 + 9c: R_PPC(|64)_ADDR14 foo_abs +- a0: 40 c5 00 02 blea- cr1,0 ++ a0: (40 c5 00 02|02 00 c5 40) blea- cr1,0 + a0: R_PPC(|64)_ADDR14 foo_abs +- a4: 40 e5 00 02 blea\+ cr1,0 ++ a4: (40 e5 00 02|02 00 e5 40) blea\+ cr1,0 + a4: R_PPC(|64)_ADDR14 foo_abs +- a8: 4c 86 0c 20 bcctr 4,4\*cr1\+eq,1 +- ac: 4c 86 04 20 bnectr cr1 +- b0: 4c a6 04 20 bcctr\+ 4,4\*cr1\+eq +- b4: 4c 86 0c 21 bcctrl 4,4\*cr1\+eq,1 +- b8: 4c 86 04 21 bnectrl cr1 +- bc: 4c a6 04 21 bcctrl\+ 4,4\*cr1\+eq +- c0: 40 01 00 01 bdnzfl gt,c0 ++ a8: (4c 86 0c 20|20 0c 86 4c) bcctr 4,4\*cr1\+eq,1 ++ ac: (4c 86 04 20|20 04 86 4c) bnectr cr1 ++ b0: (4c a6 04 20|20 04 a6 4c) bcctr\+ 4,4\*cr1\+eq ++ b4: (4c 86 0c 21|21 0c 86 4c) bcctrl 4,4\*cr1\+eq,1 ++ b8: (4c 86 04 21|21 04 86 4c) bnectrl cr1 ++ bc: (4c a6 04 21|21 04 a6 4c) bcctrl\+ 4,4\*cr1\+eq ++ c0: (40 01 00 01|01 00 01 40) bdnzfl gt,c0 + c0: R_PPC(|64)_REL14 foo +- c4: 40 01 00 01 bdnzfl gt,c4 ++ c4: (40 01 00 01|01 00 01 40) bdnzfl gt,c4 + c4: R_PPC(|64)_REL14 foo +- c8: 40 01 00 01 bdnzfl gt,c8 ++ c8: (40 01 00 01|01 00 01 40) bdnzfl gt,c8 + c8: R_PPC(|64)_REL14 foo +- cc: 40 85 00 03 blela cr1,0 ++ cc: (40 85 00 03|03 00 85 40) blela cr1,0 + cc: R_PPC(|64)_ADDR14 foo_abs +- d0: 40 c5 00 03 blela- cr1,0 ++ d0: (40 c5 00 03|03 00 c5 40) blela- cr1,0 + d0: R_PPC(|64)_ADDR14 foo_abs +- d4: 40 e5 00 03 blela\+ cr1,0 ++ d4: (40 e5 00 03|03 00 e5 40) blela\+ cr1,0 + d4: R_PPC(|64)_ADDR14 foo_abs +- d8: 4c 86 08 20 bclr 4,4\*cr1\+eq,1 +- dc: 4c 86 00 20 bnelr cr1 +- e0: 4c a6 00 20 bclr\+ 4,4\*cr1\+eq +- e4: 4c 86 08 21 bclrl 4,4\*cr1\+eq,1 +- e8: 4c 86 00 21 bnelrl cr1 +- ec: 4c a6 00 21 bclrl\+ 4,4\*cr1\+eq +- f0: 48 00 00 00 b f0 ++ d8: (4c 86 08 20|20 08 86 4c) bclr 4,4\*cr1\+eq,1 ++ dc: (4c 86 00 20|20 00 86 4c) bnelr cr1 ++ e0: (4c a6 00 20|20 00 a6 4c) bclr\+ 4,4\*cr1\+eq ++ e4: (4c 86 08 21|21 08 86 4c) bclrl 4,4\*cr1\+eq,1 ++ e8: (4c 86 00 21|21 00 86 4c) bnelrl cr1 ++ ec: (4c a6 00 21|21 00 a6 4c) bclrl\+ 4,4\*cr1\+eq ++ f0: (48 00 00 00|00 00 00 48) b f0 + f0: R_PPC(|64)_REL24 label +- f4: 48 00 00 03 bla 0 ++ f4: (48 00 00 03|03 00 00 48) bla 0 + f4: R_PPC(|64)_ADDR24 label_abs +- f8: 48 00 00 01 bl f8 ++ f8: (48 00 00 01|01 00 00 48) bl f8 + f8: R_PPC(|64)_REL24 label +- fc: 7d 6a 61 f8 bpermd r10,r11,r12 +- 100: 7c a7 40 00 cmpd cr1,r7,r8 +- 104: 7d 6a 63 f8 cmpb r10,r11,r12 +- 108: 2c aa 00 0d cmpdi cr1,r10,13 +- 10c: 2c aa ff f3 cmpdi cr1,r10,-13 +- 110: 7c a7 40 40 cmpld cr1,r7,r8 +- 114: 28 aa 00 64 cmpldi cr1,r10,100 +- 118: 7e b4 00 75 cntlzd\. r20,r21 +- 11c: 7e b4 00 74 cntlzd r20,r21 +- 120: 7e b4 00 35 cntlzw\. r20,r21 +- 124: 7e b4 00 34 cntlzw r20,r21 +- 128: 4c 22 1a 02 crand gt,eq,so +- 12c: 4c 22 19 02 crandc gt,eq,so +- 130: 4c 22 1a 42 creqv gt,eq,so +- 134: 4c 22 19 c2 crnand gt,eq,so +- 138: 4c 22 18 42 crnor gt,eq,so +- 13c: 4c 22 1b 82 cror gt,eq,so +- 140: 4c 22 1b 42 crorc gt,eq,so +- 144: 4c 22 19 82 crxor gt,eq,so +- 148: 7c 0a 5d ec dcba r10,r11 +- 14c: 7c 0a 58 ac dcbf r10,r11 +- 150: 7c 2a 58 ac dcbfl r10,r11 +- 154: 7c 0a 58 fe dcbfep r10,r11 +- 158: 7c 0a 5b ac dcbi r10,r11 +- 15c: 7c 0a 5b 0c dcblc r10,r11 +- 160: 7c 2a 5b 0c dcblc 1,r10,r11 +- 164: 7c 0a 58 6c dcbst r10,r11 +- 168: 7c 0a 58 7e dcbstep r10,r11 +- 16c: 7c 0a 5a 2c dcbt r10,r11 +- 170: 7c 2a 5a 2c dcbt r10,r11,1 +- 174: 7d 4b 62 7e dcbtep r10,r11,r12 +- 178: 7c 0a 59 4c dcbtls r10,r11 +- 17c: 7c 2a 59 4c dcbtls 1,r10,r11 +- 180: 7c 0a 59 ec dcbtst r10,r11 +- 184: 7c 2a 59 ec dcbtst r10,r11,1 +- 188: 7d 4b 61 fe dcbtstep r10,r11,r12 +- 18c: 7c 0a 59 0c dcbtstls r10,r11 +- 190: 7c 2a 59 0c dcbtstls 1,r10,r11 +- 194: 7c 0a 5f ec dcbz r10,r11 +- 198: 7c 0a 5f fe dcbzep r10,r11 +- 19c: 7c 00 03 8c dccci +- 1a0: 7c 00 03 8c dccci +- 1a4: 7c 00 03 8c dccci +- 1a8: 7d 40 03 8c dci 10 +- 1ac: 7e 95 b3 d3 divd\. r20,r21,r22 +- 1b0: 7e 95 b3 d2 divd r20,r21,r22 +- 1b4: 7e 95 b7 d3 divdo\. r20,r21,r22 +- 1b8: 7e 95 b7 d2 divdo r20,r21,r22 +- 1bc: 7e 95 b3 93 divdu\. r20,r21,r22 +- 1c0: 7e 95 b3 92 divdu r20,r21,r22 +- 1c4: 7e 95 b7 93 divduo\. r20,r21,r22 +- 1c8: 7e 95 b7 92 divduo r20,r21,r22 +- 1cc: 7e 95 b3 d7 divw\. r20,r21,r22 +- 1d0: 7e 95 b3 d6 divw r20,r21,r22 +- 1d4: 7e 95 b7 d7 divwo\. r20,r21,r22 +- 1d8: 7e 95 b7 d6 divwo r20,r21,r22 +- 1dc: 7e 95 b3 97 divwu\. r20,r21,r22 +- 1e0: 7e 95 b3 96 divwu r20,r21,r22 +- 1e4: 7e 95 b7 97 divwuo\. r20,r21,r22 +- 1e8: 7e 95 b7 96 divwuo r20,r21,r22 +- 1ec: 7e b4 b2 39 eqv\. r20,r21,r22 +- 1f0: 7e b4 b2 38 eqv r20,r21,r22 +- 1f4: 7c 0a 58 66 eratilx 0,r10,r11 +- 1f8: 7c 2a 58 66 eratilx 1,r10,r11 +- 1fc: 7c ea 58 66 eratilx 7,r10,r11 +- 200: 7d 4b 66 66 erativax r10,r11,r12 +- 204: 7d 4b 01 66 eratre r10,r11,0 +- 208: 7d 4b 19 66 eratre r10,r11,3 +- 20c: 7d 4b 61 27 eratsx\. r10,r11,r12 +- 210: 7d 4b 61 26 eratsx r10,r11,r12 +- 214: 7d 4b 01 a6 eratwe r10,r11,0 +- 218: 7d 4b 19 a6 eratwe r10,r11,3 +- 21c: 7d 6a 07 75 extsb\. r10,r11 +- 220: 7d 6a 07 74 extsb r10,r11 +- 224: 7d 6a 07 35 extsh\. r10,r11 +- 228: 7d 6a 07 34 extsh r10,r11 +- 22c: 7d 6a 07 b5 extsw\. r10,r11 +- 230: 7d 6a 07 b4 extsw r10,r11 +- 234: fe 80 aa 11 fabs\. f20,f21 +- 238: fe 80 aa 10 fabs f20,f21 +- 23c: fe 95 b0 2b fadd\. f20,f21,f22 +- 240: fe 95 b0 2a fadd f20,f21,f22 +- 244: ee 95 b0 2b fadds\. f20,f21,f22 +- 248: ee 95 b0 2a fadds f20,f21,f22 +- 24c: fe 80 ae 9d fcfid\. f20,f21 +- 250: fe 80 ae 9c fcfid f20,f21 +- 254: fc 14 a8 40 fcmpo cr0,f20,f21 +- 258: fc 94 a8 40 fcmpo cr1,f20,f21 +- 25c: fc 14 a8 00 fcmpu cr0,f20,f21 +- 260: fc 94 a8 00 fcmpu cr1,f20,f21 +- 264: fe 95 b0 11 fcpsgn\. f20,f21,f22 +- 268: fe 95 b0 10 fcpsgn f20,f21,f22 +- 26c: fe 80 ae 5d fctid\. f20,f21 +- 270: fe 80 ae 5c fctid f20,f21 +- 274: fe 80 ae 5f fctidz\. f20,f21 +- 278: fe 80 ae 5e fctidz f20,f21 +- 27c: fe 80 a8 1d fctiw\. f20,f21 +- 280: fe 80 a8 1c fctiw f20,f21 +- 284: fe 80 a8 1f fctiwz\. f20,f21 +- 288: fe 80 a8 1e fctiwz f20,f21 +- 28c: fe 95 b0 25 fdiv\. f20,f21,f22 +- 290: fe 95 b0 24 fdiv f20,f21,f22 +- 294: ee 95 b0 25 fdivs\. f20,f21,f22 +- 298: ee 95 b0 24 fdivs f20,f21,f22 +- 29c: fe 95 bd bb fmadd\. f20,f21,f22,f23 +- 2a0: fe 95 bd ba fmadd f20,f21,f22,f23 +- 2a4: ee 95 bd bb fmadds\. f20,f21,f22,f23 +- 2a8: ee 95 bd ba fmadds f20,f21,f22,f23 +- 2ac: fe 80 a8 91 fmr\. f20,f21 +- 2b0: fe 80 a8 90 fmr f20,f21 +- 2b4: fe 95 bd b9 fmsub\. f20,f21,f22,f23 +- 2b8: fe 95 bd b8 fmsub f20,f21,f22,f23 +- 2bc: ee 95 bd b9 fmsubs\. f20,f21,f22,f23 +- 2c0: ee 95 bd b8 fmsubs f20,f21,f22,f23 +- 2c4: fe 95 05 b3 fmul\. f20,f21,f22 +- 2c8: fe 95 05 b2 fmul f20,f21,f22 +- 2cc: ee 95 05 b3 fmuls\. f20,f21,f22 +- 2d0: ee 95 05 b2 fmuls f20,f21,f22 +- 2d4: fe 80 a9 11 fnabs\. f20,f21 +- 2d8: fe 80 a9 10 fnabs f20,f21 +- 2dc: fe 80 a8 51 fneg\. f20,f21 +- 2e0: fe 80 a8 50 fneg f20,f21 +- 2e4: fe 95 bd bf fnmadd\. f20,f21,f22,f23 +- 2e8: fe 95 bd be fnmadd f20,f21,f22,f23 +- 2ec: ee 95 bd bf fnmadds\. f20,f21,f22,f23 +- 2f0: ee 95 bd be fnmadds f20,f21,f22,f23 +- 2f4: fe 95 bd bd fnmsub\. f20,f21,f22,f23 +- 2f8: fe 95 bd bc fnmsub f20,f21,f22,f23 +- 2fc: ee 95 bd bd fnmsubs\. f20,f21,f22,f23 +- 300: ee 95 bd bc fnmsubs f20,f21,f22,f23 +- 304: fe 80 a8 31 fre\. f20,f21 +- 308: fe 80 a8 30 fre f20,f21 +- 30c: fe 80 a8 31 fre\. f20,f21 +- 310: fe 80 a8 30 fre f20,f21 +- 314: fe 81 a8 31 fre\. f20,f21,1 +- 318: fe 81 a8 30 fre f20,f21,1 +- 31c: ee 80 a8 31 fres\. f20,f21 +- 320: ee 80 a8 30 fres f20,f21 +- 324: ee 80 a8 31 fres\. f20,f21 +- 328: ee 80 a8 30 fres f20,f21 +- 32c: ee 81 a8 31 fres\. f20,f21,1 +- 330: ee 81 a8 30 fres f20,f21,1 +- 334: fe 80 ab d1 frim\. f20,f21 +- 338: fe 80 ab d0 frim f20,f21 +- 33c: fe 80 ab 11 frin\. f20,f21 +- 340: fe 80 ab 10 frin f20,f21 +- 344: fe 80 ab 91 frip\. f20,f21 +- 348: fe 80 ab 90 frip f20,f21 +- 34c: fe 80 ab 51 friz\. f20,f21 +- 350: fe 80 ab 50 friz f20,f21 +- 354: fe 80 a8 19 frsp\. f20,f21 +- 358: fe 80 a8 18 frsp f20,f21 +- 35c: fe 80 a8 35 frsqrte\. f20,f21 +- 360: fe 80 a8 34 frsqrte f20,f21 +- 364: fe 80 a8 35 frsqrte\. f20,f21 +- 368: fe 80 a8 34 frsqrte f20,f21 +- 36c: fe 81 a8 35 frsqrte\. f20,f21,1 +- 370: fe 81 a8 34 frsqrte f20,f21,1 +- 374: ee 80 a8 34 frsqrtes f20,f21 +- 378: ee 80 a8 35 frsqrtes\. f20,f21 +- 37c: ee 80 a8 34 frsqrtes f20,f21 +- 380: ee 80 a8 35 frsqrtes\. f20,f21 +- 384: ee 81 a8 34 frsqrtes f20,f21,1 +- 388: ee 81 a8 35 frsqrtes\. f20,f21,1 +- 38c: fe 95 bd af fsel\. f20,f21,f22,f23 +- 390: fe 95 bd ae fsel f20,f21,f22,f23 +- 394: fe 80 a8 2d fsqrt\. f20,f21 +- 398: fe 80 a8 2c fsqrt f20,f21 +- 39c: ee 80 a8 2d fsqrts\. f20,f21 +- 3a0: ee 80 a8 2c fsqrts f20,f21 +- 3a4: fe 95 b0 29 fsub\. f20,f21,f22 +- 3a8: fe 95 b0 28 fsub f20,f21,f22 +- 3ac: ee 95 b0 29 fsubs\. f20,f21,f22 +- 3b0: ee 95 b0 28 fsubs f20,f21,f22 +- 3b4: 7c 0a 5f ac icbi r10,r11 +- 3b8: 7c 0a 5f be icbiep r10,r11 +- 3bc: 7c 0a 58 2c icbt r10,r11 +- 3c0: 7c ea 58 2c icbt 7,r10,r11 +- 3c4: 7c 0a 5b cc icbtls r10,r11 +- 3c8: 7c ea 5b cc icbtls 7,r10,r11 +- 3cc: 7c 00 07 8c iccci +- 3d0: 7c 00 07 8c iccci +- 3d4: 7c 00 07 8c iccci +- 3d8: 7d 40 07 8c ici 10 +- 3dc: 7d 4b 63 2d icswx\. r10,r11,r12 +- 3e0: 7d 4b 63 2c icswx r10,r11,r12 +- 3e4: 7d 4b 65 de isel r10,r11,r12,23 +- 3e8: 4c 00 01 2c isync +- 3ec: 7d 4b 60 be lbepx r10,r11,r12 +- 3f0: 89 4b ff ef lbz r10,-17\(r11\) +- 3f4: 89 4b 00 11 lbz r10,17\(r11\) +- 3f8: 8d 4b ff ff lbzu r10,-1\(r11\) +- 3fc: 8d 4b 00 01 lbzu r10,1\(r11\) +- 400: 7d 4b 68 ee lbzux r10,r11,r13 +- 404: 7d 4b 68 ae lbzx r10,r11,r13 +- 408: e9 4b ff f8 ld r10,-8\(r11\) +- 40c: e9 4b 00 08 ld r10,8\(r11\) +- 410: 7d 4b 60 a8 ldarx r10,r11,r12 +- 414: 7d 4b 60 a9 ldarx r10,r11,r12,1 +- 418: 7d 4b 64 28 ldbrx r10,r11,r12 +- 41c: 7d 4b 60 3a ldepx r10,r11,r12 +- 420: e9 4b ff f9 ldu r10,-8\(r11\) +- 424: e9 4b 00 09 ldu r10,8\(r11\) +- 428: 7d 4b 60 6a ldux r10,r11,r12 +- 42c: 7d 4b 60 2a ldx r10,r11,r12 +- 430: ca 8a ff f8 lfd f20,-8\(r10\) +- 434: ca 8a 00 08 lfd f20,8\(r10\) +- 438: 7e 8a 5c be lfdepx f20,r10,r11 +- 43c: ce 8a ff f8 lfdu f20,-8\(r10\) +- 440: ce 8a 00 08 lfdu f20,8\(r10\) +- 444: 7e 8a 5c ee lfdux f20,r10,r11 +- 448: 7e 8a 5c ae lfdx f20,r10,r11 +- 44c: 7e 8a 5e ae lfiwax f20,r10,r11 +- 450: 7e 8a 5e ee lfiwzx f20,r10,r11 +- 454: c2 8a ff fc lfs f20,-4\(r10\) +- 458: c2 8a 00 04 lfs f20,4\(r10\) +- 45c: c6 8a ff fc lfsu f20,-4\(r10\) +- 460: c6 8a 00 04 lfsu f20,4\(r10\) +- 464: 7e 8a 5c 6e lfsux f20,r10,r11 +- 468: 7e 8a 5c 2e lfsx f20,r10,r11 +- 46c: a9 4b 00 02 lha r10,2\(r11\) +- 470: ad 4b ff fe lhau r10,-2\(r11\) +- 474: 7d 4b 62 ee lhaux r10,r11,r12 +- 478: 7d 4b 62 ae lhax r10,r11,r12 +- 47c: 7d 4b 66 2c lhbrx r10,r11,r12 +- 480: 7d 4b 62 3e lhepx r10,r11,r12 +- 484: a1 4b ff fe lhz r10,-2\(r11\) +- 488: a1 4b 00 02 lhz r10,2\(r11\) +- 48c: a5 4b ff fe lhzu r10,-2\(r11\) +- 490: a5 4b 00 02 lhzu r10,2\(r11\) +- 494: 7d 4b 62 6e lhzux r10,r11,r12 +- 498: 7d 4b 62 2e lhzx r10,r11,r12 +- 49c: ba 8a 00 10 lmw r20,16\(r10\) +- 4a0: 7d 4b 0c aa lswi r10,r11,1 +- 4a4: 7d 8b 04 aa lswi r12,r11,32 +- 4a8: 7d 4b 64 2a lswx r10,r11,r12 +- 4ac: e9 4b ff fe lwa r10,-4\(r11\) +- 4b0: e9 4b 00 06 lwa r10,4\(r11\) +- 4b4: 7d 4b 60 28 lwarx r10,r11,r12 +- 4b8: 7d 4b 60 29 lwarx r10,r11,r12,1 +- 4bc: 7d 4b 62 ea lwaux r10,r11,r12 +- 4c0: 7d 4b 62 aa lwax r10,r11,r12 +- 4c4: 7d 4b 64 2c lwbrx r10,r11,r12 +- 4c8: 7d 4b 60 3e lwepx r10,r11,r12 +- 4cc: 81 4b ff fc lwz r10,-4\(r11\) +- 4d0: 81 4b 00 04 lwz r10,4\(r11\) +- 4d4: 85 4b ff fc lwzu r10,-4\(r11\) +- 4d8: 85 4b 00 04 lwzu r10,4\(r11\) +- 4dc: 7d 4b 60 6e lwzux r10,r11,r12 +- 4e0: 7d 4b 60 2e lwzx r10,r11,r12 +- 4e4: 7c 00 06 ac mbar +- 4e8: 7c 00 06 ac mbar +- 4ec: 7c 00 06 ac mbar +- 4f0: 7c 20 06 ac mbar 1 +- 4f4: 4c 04 00 00 mcrf cr0,cr1 +- 4f8: fd 90 00 80 mcrfs cr3,cr4 +- 4fc: 7c 00 04 00 mcrxr cr0 +- 500: 7d 80 04 00 mcrxr cr3 +- 504: 7c 60 00 26 mfcr r3 +- 508: 7c 60 00 26 mfcr r3 +- 50c: 7c 70 10 26 mfocrf r3,1 +- 510: 7c 78 00 26 mfocrf r3,128 +- 514: 7d 4a 3a 87 mfdcr\. r10,234 +- 518: 7d 4a 3a 86 mfdcr r10,234 +- 51c: 7d 4b 02 07 mfdcrx\. r10,r11 +- 520: 7d 4b 02 06 mfdcrx r10,r11 +- 524: fe 80 04 8f mffs\. f20 +- 528: fe 80 04 8e mffs f20 +- 52c: 7d 40 00 a6 mfmsr r10 +- 530: 7c 70 10 26 mfocrf r3,1 +- 534: 7c 78 00 26 mfocrf r3,128 +- 538: 7d 4a 3a a6 mfspr r10,234 +- 53c: 7d 4c 42 e6 mftbl r10 +- 540: 7d 4d 42 e6 mftbu r10 +- 544: 7c 00 51 dc msgclr r10 +- 548: 7c 00 51 9c msgsnd r10 +- 54c: 7c 60 01 20 mtcrf 0,r3 +- 550: 7c 70 11 20 mtocrf 1,r3 +- 554: 7c 78 01 20 mtocrf 128,r3 +- 558: 7c 6f f1 20 mtcr r3 +- 55c: 7d 4a 3b 87 mtdcr\. 234,r10 +- 560: 7d 4a 3b 86 mtdcr 234,r10 +- 564: 7d 6a 03 07 mtdcrx\. r10,r11 +- 568: 7d 6a 03 06 mtdcrx r10,r11 +- 56c: fc 60 00 8d mtfsb0\. so +- 570: fc 60 00 8c mtfsb0 so +- 574: fc 60 00 4d mtfsb1\. so +- 578: fc 60 00 4c mtfsb1 so +- 57c: fc 0c a5 8f mtfsf\. 6,f20 +- 580: fc 0c a5 8e mtfsf 6,f20 +- 584: fc 0c a5 8f mtfsf\. 6,f20 +- 588: fc 0c a5 8e mtfsf 6,f20 +- 58c: fe 0d a5 8f mtfsf\. 6,f20,1,1 +- 590: fe 0d a5 8e mtfsf 6,f20,1,1 +- 594: ff 00 01 0d mtfsfi\. 6,0 +- 598: ff 00 01 0c mtfsfi 6,0 +- 59c: ff 00 d1 0d mtfsfi\. 6,13 +- 5a0: ff 00 d1 0c mtfsfi 6,13 +- 5a4: ff 01 d1 0d mtfsfi\. 6,13,1 +- 5a8: ff 01 d1 0c mtfsfi 6,13,1 +- 5ac: 7d 40 01 24 mtmsr r10 +- 5b0: 7d 40 01 24 mtmsr r10 +- 5b4: 7d 41 01 24 mtmsr r10,1 +- 5b8: 7c 70 11 20 mtocrf 1,r3 +- 5bc: 7c 78 01 20 mtocrf 128,r3 +- 5c0: 7d 4a 3b a6 mtspr 234,r10 +- 5c4: 7e 95 b0 93 mulhd\. r20,r21,r22 +- 5c8: 7e 95 b0 92 mulhd r20,r21,r22 +- 5cc: 7e 95 b0 13 mulhdu\. r20,r21,r22 +- 5d0: 7e 95 b0 12 mulhdu r20,r21,r22 +- 5d4: 7e 95 b0 97 mulhw\. r20,r21,r22 +- 5d8: 7e 95 b0 96 mulhw r20,r21,r22 +- 5dc: 7e 95 b0 17 mulhwu\. r20,r21,r22 +- 5e0: 7e 95 b0 16 mulhwu r20,r21,r22 +- 5e4: 7e 95 b1 d3 mulld\. r20,r21,r22 +- 5e8: 7e 95 b1 d2 mulld r20,r21,r22 +- 5ec: 7e 95 b5 d3 mulldo\. r20,r21,r22 +- 5f0: 7e 95 b5 d2 mulldo r20,r21,r22 +- 5f4: 1e 95 00 64 mulli r20,r21,100 +- 5f8: 1e 95 ff 9c mulli r20,r21,-100 +- 5fc: 7e 95 b1 d7 mullw\. r20,r21,r22 +- 600: 7e 95 b1 d6 mullw r20,r21,r22 +- 604: 7e 95 b5 d7 mullwo\. r20,r21,r22 +- 608: 7e 95 b5 d6 mullwo r20,r21,r22 +- 60c: 7e b4 b3 b9 nand\. r20,r21,r22 +- 610: 7e b4 b3 b8 nand r20,r21,r22 +- 614: 7e 95 00 d1 neg\. r20,r21 +- 618: 7e 95 00 d0 neg r20,r21 +- 61c: 7e 95 04 d1 nego\. r20,r21 +- 620: 7e 95 04 d0 nego r20,r21 +- 624: 7e b4 b0 f9 nor\. r20,r21,r22 +- 628: 7e b4 b0 f8 nor r20,r21,r22 +- 62c: 7e b4 b3 79 or\. r20,r21,r22 +- 630: 7e b4 b3 78 or r20,r21,r22 +- 634: 7e b4 b3 39 orc\. r20,r21,r22 +- 638: 7e b4 b3 38 orc r20,r21,r22 +- 63c: 62 b4 10 00 ori r20,r21,4096 +- 640: 66 b4 10 00 oris r20,r21,4096 +- 644: 7d 6a 00 f4 popcntb r10,r11 +- 648: 7d 6a 03 f4 popcntd r10,r11 +- 64c: 7d 6a 02 f4 popcntw r10,r11 +- 650: 7d 6a 01 74 prtyd r10,r11 +- 654: 7d 6a 01 34 prtyw r10,r11 +- 658: 4c 00 00 66 rfci +- 65c: 4c 00 00 cc rfgi +- 660: 4c 00 00 64 rfi +- 664: 4c 00 00 4c rfmci +- 668: 79 6a 67 f1 rldcl\. r10,r11,r12,63 +- 66c: 79 6a 67 f0 rldcl r10,r11,r12,63 +- 670: 79 6a 67 f3 rldcr\. r10,r11,r12,63 +- 674: 79 6a 67 f2 rldcr r10,r11,r12,63 +- 678: 79 6a bf e9 rldic\. r10,r11,23,63 +- 67c: 79 6a bf e8 rldic r10,r11,23,63 +- 680: 79 6a bf e1 rldicl\. r10,r11,23,63 +- 684: 79 6a bf e0 rldicl r10,r11,23,63 +- 688: 79 6a bf e5 rldicr\. r10,r11,23,63 +- 68c: 79 6a bf e4 rldicr r10,r11,23,63 +- 690: 79 6a bf ed rldimi\. r10,r11,23,63 +- 694: 79 6a bf ec rldimi r10,r11,23,63 +- 698: 51 6a b8 3f rlwimi\. r10,r11,23,0,31 +- 69c: 51 6a b8 3e rlwimi r10,r11,23,0,31 +- 6a0: 55 6a b8 3f rotlwi\. r10,r11,23 +- 6a4: 55 6a b8 3e rotlwi r10,r11,23 +- 6a8: 5d 6a b8 3f rotlw\. r10,r11,r23 +- 6ac: 5d 6a b8 3e rotlw r10,r11,r23 +- 6b0: 44 00 00 02 sc +- 6b4: 44 00 0c 82 sc 100 +- 6b8: 7d 6a 60 37 sld\. r10,r11,r12 +- 6bc: 7d 6a 60 36 sld r10,r11,r12 +- 6c0: 7d 6a 60 31 slw\. r10,r11,r12 +- 6c4: 7d 6a 60 30 slw r10,r11,r12 +- 6c8: 7d 6a 66 35 srad\. r10,r11,r12 +- 6cc: 7d 6a 66 34 srad r10,r11,r12 +- 6d0: 7d 6a fe 77 sradi\. r10,r11,63 +- 6d4: 7d 6a fe 76 sradi r10,r11,63 +- 6d8: 7d 6a 66 31 sraw\. r10,r11,r12 +- 6dc: 7d 6a 66 30 sraw r10,r11,r12 +- 6e0: 7d 6a fe 71 srawi\. r10,r11,31 +- 6e4: 7d 6a fe 70 srawi r10,r11,31 +- 6e8: 7d 6a 64 37 srd\. r10,r11,r12 +- 6ec: 7d 6a 64 36 srd r10,r11,r12 +- 6f0: 7d 6a 64 31 srw\. r10,r11,r12 +- 6f4: 7d 6a 64 30 srw r10,r11,r12 +- 6f8: 99 4b ff ff stb r10,-1\(r11\) +- 6fc: 99 4b 00 01 stb r10,1\(r11\) +- 700: 7d 4b 61 be stbepx r10,r11,r12 +- 704: 9d 4b ff ff stbu r10,-1\(r11\) +- 708: 9d 4b 00 01 stbu r10,1\(r11\) +- 70c: 7d 4b 61 ee stbux r10,r11,r12 +- 710: 7d 4b 61 ae stbx r10,r11,r12 +- 714: f9 4b ff f8 std r10,-8\(r11\) +- 718: f9 4b 00 08 std r10,8\(r11\) +- 71c: 7d 4b 65 28 stdbrx r10,r11,r12 +- 720: 7d 4b 61 ad stdcx\. r10,r11,r12 +- 724: 7d 4b 61 3a stdepx r10,r11,r12 +- 728: f9 4b ff f9 stdu r10,-8\(r11\) +- 72c: f9 4b 00 09 stdu r10,8\(r11\) +- 730: 7d 4b 61 6a stdux r10,r11,r12 +- 734: 7d 4b 61 2a stdx r10,r11,r12 +- 738: da 8a ff f8 stfd f20,-8\(r10\) +- 73c: da 8a 00 08 stfd f20,8\(r10\) +- 740: 7e 8a 5d be stfdepx f20,r10,r11 +- 744: de 8a ff f8 stfdu f20,-8\(r10\) +- 748: de 8a 00 08 stfdu f20,8\(r10\) +- 74c: 7e 8a 5d ee stfdux f20,r10,r11 +- 750: 7e 8a 5d ae stfdx f20,r10,r11 +- 754: 7e 8a 5f ae stfiwx f20,r10,r11 +- 758: d2 8a ff fc stfs f20,-4\(r10\) +- 75c: d2 8a 00 04 stfs f20,4\(r10\) +- 760: d6 8a ff fc stfsu f20,-4\(r10\) +- 764: d6 8a 00 04 stfsu f20,4\(r10\) +- 768: 7e 8a 5d 6e stfsux f20,r10,r11 +- 76c: 7e 8a 5d 2e stfsx f20,r10,r11 +- 770: b1 4b ff fe sth r10,-2\(r11\) +- 774: b1 4b 00 02 sth r10,2\(r11\) +- 778: b1 4b ff fc sth r10,-4\(r11\) +- 77c: b1 4b 00 04 sth r10,4\(r11\) +- 780: 7d 4b 67 2c sthbrx r10,r11,r12 +- 784: 7d 4b 63 3e sthepx r10,r11,r12 +- 788: b5 4b ff fe sthu r10,-2\(r11\) +- 78c: b5 4b 00 02 sthu r10,2\(r11\) +- 790: 7d 4b 63 6e sthux r10,r11,r12 +- 794: 7d 4b 63 2e sthx r10,r11,r12 +- 798: be 8a 00 10 stmw r20,16\(r10\) +- 79c: 7d 4b 0d aa stswi r10,r11,1 +- 7a0: 7d 4b 05 aa stswi r10,r11,32 +- 7a4: 7d 4b 65 2a stswx r10,r11,r12 +- 7a8: 7d 4b 65 2c stwbrx r10,r11,r12 +- 7ac: 7d 4b 61 2d stwcx\. r10,r11,r12 +- 7b0: 7d 4b 61 3e stwepx r10,r11,r12 +- 7b4: 95 4b ff fc stwu r10,-4\(r11\) +- 7b8: 95 4b 00 04 stwu r10,4\(r11\) +- 7bc: 7d 4b 61 6e stwux r10,r11,r12 +- 7c0: 7d 4b 61 2e stwx r10,r11,r12 +- 7c4: 7e 95 b0 51 subf\. r20,r21,r22 +- 7c8: 7e 95 b0 50 subf r20,r21,r22 +- 7cc: 7e 95 b0 11 subfc\. r20,r21,r22 +- 7d0: 7e 95 b0 10 subfc r20,r21,r22 +- 7d4: 7e 95 b4 11 subfco\. r20,r21,r22 +- 7d8: 7e 95 b4 10 subfco r20,r21,r22 +- 7dc: 7e 95 b1 11 subfe\. r20,r21,r22 +- 7e0: 7e 95 b1 10 subfe r20,r21,r22 +- 7e4: 7e 95 b5 11 subfeo\. r20,r21,r22 +- 7e8: 7e 95 b5 10 subfeo r20,r21,r22 +- 7ec: 22 95 00 64 subfic r20,r21,100 +- 7f0: 22 95 ff 9c subfic r20,r21,-100 +- 7f4: 7e 95 01 d1 subfme\. r20,r21 +- 7f8: 7e 95 01 d0 subfme r20,r21 +- 7fc: 7e 95 05 d1 subfmeo\. r20,r21 +- 800: 7e 95 05 d0 subfmeo r20,r21 +- 804: 7e 95 b4 51 subfo\. r20,r21,r22 +- 808: 7e 95 b4 50 subfo r20,r21,r22 +- 80c: 7e 95 01 91 subfze\. r20,r21 +- 810: 7e 95 01 90 subfze r20,r21 +- 814: 7e 95 05 91 subfzeo\. r20,r21 +- 818: 7e 95 05 90 subfzeo r20,r21 +- 81c: 7c 00 04 ac sync +- 820: 7c 00 04 ac sync +- 824: 7c 00 04 ac sync +- 828: 7c 20 04 ac lwsync +- 82c: 7c aa 58 88 tdlge r10,r11 +- 830: 08 aa 00 64 tdlgei r10,100 +- 834: 08 aa ff 9c tdlgei r10,-100 +- 838: 7c 6a 58 24 tlbilxva r10,r11 +- 83c: 7c 0a 5e 24 tlbivax r10,r11 +- 840: 7c 00 07 64 tlbre +- 844: 7d 4b 3f 64 tlbre r10,r11,7 +- 848: 7c 0a 5e a5 tlbsrx\. r10,r11 +- 84c: 7d 4b 67 25 tlbsx\. r10,r11,r12 +- 850: 7d 4b 67 24 tlbsx r10,r11,r12 +- 854: 7c 00 04 6c tlbsync +- 858: 7c 00 07 a4 tlbwe +- 85c: 7d 4b 3f a4 tlbwe r10,r11,7 +- 860: 7c aa 58 08 twlge r10,r11 +- 864: 0c aa 00 64 twlgei r10,100 +- 868: 0c aa ff 9c twlgei r10,-100 +- 86c: 7c 00 00 7c wait +- 870: 7c 00 00 7c wait +- 874: 7c 20 00 7c waitrsv +- 878: 7c 40 00 7c waitimpl +- 87c: 7c 40 00 7c waitimpl +- 880: 7c 20 00 7c waitrsv +- 884: 7c 00 01 6c wchkall +- 888: 7c 00 01 6c wchkall +- 88c: 7d 80 01 6c wchkall cr3 +- 890: 7c 2a 5f 4c wclr 1,r10,r11 +- 894: 7c 20 07 4c wclrall 1 +- 898: 7c 4a 5f 4c wclrone r10,r11 +- 89c: 7d 40 01 06 wrtee r10 +- 8a0: 7c 00 81 46 wrteei 1 +- 8a4: 7d 6a 62 79 xor\. r10,r11,r12 +- 8a8: 7d 6a 62 78 xor r10,r11,r12 +- 8ac: 69 6a 10 00 xori r10,r11,4096 +- 8b0: 6d 6a 10 00 xoris r10,r11,4096 ++ 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 r10,r11,1 ++ 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 r10,r11,1 ++ 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 60 00 26|26 00 60 7c) mfcr r3 ++ 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 e6|e6 42 4c 7d) mftbl r10 ++ 540: (7d 4d 42 e6|e6 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\. so ++ 570: (fc 60 00 8c|8c 00 60 fc) mtfsb0 so ++ 574: (fc 60 00 4d|4d 00 60 fc) mtfsb1\. so ++ 578: (fc 60 00 4c|4c 00 60 fc) mtfsb1 so ++ 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) sync ++ 820: (7c 00 04 ac|ac 04 00 7c) sync ++ 824: (7c 00 04 ac|ac 04 00 7c) sync ++ 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 +diff --git a/gas/testsuite/gas/ppc/a2.s b/gas/testsuite/gas/ppc/a2.s +index 9ab0024..bcab185 100644 +--- a/gas/testsuite/gas/ppc/a2.s ++++ b/gas/testsuite/gas/ppc/a2.s +@@ -1,4 +1,4 @@ +- .section ".text" ++ .text + start: + add. 4,5,6 + add 4,5,6 +diff --git a/gas/testsuite/gas/ppc/altivec.d b/gas/testsuite/gas/ppc/altivec.d +index 46d17d5..01e7657 100644 +--- a/gas/testsuite/gas/ppc/altivec.d ++++ b/gas/testsuite/gas/ppc/altivec.d +@@ -2,14 +2,206 @@ + #objdump: -dr + #name: AltiVec tests + +-.*: +file format elf32-powerpc.* ++.* + + Disassembly of section \.text: + + 00000000 : +- 0: 7c 60 06 6c dss 3 +- 4: 7e 00 06 6c dssall +- 8: 7c 25 22 ac dst r5,r4,1 +- c: 7e 08 3a ac dstt r8,r7,0 +- 10: 7c 65 32 ec dstst r5,r6,3 +- 14: 7e 44 2a ec dststt r4,r5,2 ++ 0: (7c 60 06 6c|6c 06 60 7c) dss 3 ++ 4: (7e 00 06 6c|6c 06 00 7e) dssall ++ 8: (7c 25 22 ac|ac 22 25 7c) dst r5,r4,1 ++ c: (7e 08 3a ac|ac 3a 08 7e) dstt r8,r7,0 ++ 10: (7c 65 32 ec|ec 32 65 7c) dstst r5,r6,3 ++ 14: (7e 44 2a ec|ec 2a 44 7e) dststt r4,r5,2 ++ 18: (7f d6 c0 0e|0e c0 d6 7f) lvebx v30,r22,r24 ++ 1c: (7e a0 c0 0e|0e c0 a0 7e) lvebx v21,0,r24 ++ 20: (7d 50 10 4e|4e 10 50 7d) lvehx v10,r16,r2 ++ 24: (7e 80 b8 4e|4e b8 80 7e) lvehx v20,0,r23 ++ 28: (7e 24 90 8e|8e 90 24 7e) lvewx v17,r4,r18 ++ 2c: (7e e0 40 8e|8e 40 e0 7e) lvewx v23,0,r8 ++ 30: (7c c0 c8 0c|0c c8 c0 7c) lvsl v6,0,r25 ++ 34: (7c 40 30 0c|0c 30 40 7c) lvsl v2,0,r6 ++ 38: (7e d0 60 4c|4c 60 d0 7e) lvsr v22,r16,r12 ++ 3c: (7c 00 e8 4c|4c e8 00 7c) lvsr v0,0,r29 ++ 40: (7d e5 6a ce|ce 6a e5 7d) lvxl v15,r5,r13 ++ 44: (7e 60 ba ce|ce ba 60 7e) lvxl v19,0,r23 ++ 48: (7e c1 10 ce|ce 10 c1 7e) lvx v22,r1,r2 ++ 4c: (7e 40 88 ce|ce 88 40 7e) lvx v18,0,r17 ++ 50: (7f e0 42 a6|a6 42 e0 7f) mfvrsave r31 ++ 54: (13 00 06 04|04 06 00 13) mfvscr v24 ++ 58: (7d 40 43 a6|a6 43 40 7d) mtvrsave r10 ++ 5c: (10 00 ce 44|44 ce 00 10) mtvscr v25 ++ 60: (7e 5b 51 0e|0e 51 5b 7e) stvebx v18,r27,r10 ++ 64: (7e 00 31 0e|0e 31 00 7e) stvebx v16,0,r6 ++ 68: (7e 2d 81 4e|4e 81 2d 7e) stvehx v17,r13,r16 ++ 6c: (7e e0 a1 4e|4e a1 e0 7e) stvehx v23,0,r20 ++ 70: (7d 73 f9 8e|8e f9 73 7d) stvewx v11,r19,r31 ++ 74: (7f e0 09 8e|8e 09 e0 7f) stvewx v31,0,r1 ++ 78: (7f 55 8b ce|ce 8b 55 7f) stvxl v26,r21,r17 ++ 7c: (7d a0 b3 ce|ce b3 a0 7d) stvxl v13,0,r22 ++ 80: (7d 7f f9 ce|ce f9 7f 7d) stvx v11,r31,r31 ++ 84: (7f c0 81 ce|ce 81 c0 7f) stvx v30,0,r16 ++ 88: (13 07 e1 80|80 e1 07 13) vaddcuw v24,v7,v28 ++ 8c: (10 7e 58 0a|0a 58 7e 10) vaddfp v3,v30,v11 ++ 90: (11 1c 4b 00|00 4b 1c 11) vaddsbs v8,v28,v9 ++ 94: (10 e5 23 40|40 23 e5 10) vaddshs v7,v5,v4 ++ 98: (12 da db 80|80 db da 12) vaddsws v22,v26,v27 ++ 9c: (12 0e e0 00|00 e0 0e 12) vaddubm v16,v14,v28 ++ a0: (10 c1 ca 00|00 ca c1 10) vaddubs v6,v1,v25 ++ a4: (10 44 30 40|40 30 44 10) vadduhm v2,v4,v6 ++ a8: (13 55 42 40|40 42 55 13) vadduhs v26,v21,v8 ++ ac: (13 bf 08 80|80 08 bf 13) vadduwm v29,v31,v1 ++ b0: (12 ed 22 80|80 22 ed 12) vadduws v23,v13,v4 ++ b4: (13 d0 4c 44|44 4c d0 13) vandc v30,v16,v9 ++ b8: (10 6d dc 04|04 dc 6d 10) vand v3,v13,v27 ++ bc: (10 86 8d 02|02 8d 86 10) vavgsb v4,v6,v17 ++ c0: (12 fc 9d 42|42 9d fc 12) vavgsh v23,v28,v19 ++ c4: (11 0f fd 82|82 fd 0f 11) vavgsw v8,v15,v31 ++ c8: (10 c7 cc 02|02 cc c7 10) vavgub v6,v7,v25 ++ cc: (13 36 54 42|42 54 36 13) vavguh v25,v22,v10 ++ d0: (10 77 ec 82|82 ec 77 10) vavguw v3,v23,v29 ++ d4: (11 c6 13 ca|ca 13 c6 11) vctsxs v14,v2,6 ++ d8: (11 34 fb 8a|8a fb 34 11) vctuxs v9,v31,20 ++ dc: (13 03 f3 4a|4a f3 03 13) vcfsx v24,v30,3 ++ e0: (12 3d ab 0a|0a ab 3d 12) vcfux v17,v21,29 ++ e4: (12 5c 03 c6|c6 03 5c 12) vcmpbfp v18,v28,v0 ++ e8: (12 7a 1f c6|c6 1f 7a 12) vcmpbfp\. v19,v26,v3 ++ ec: (12 02 58 c6|c6 58 02 12) vcmpeqfp v16,v2,v11 ++ f0: (12 ed 6c c6|c6 6c ed 12) vcmpeqfp\. v23,v13,v13 ++ f4: (13 33 50 06|06 50 33 13) vcmpequb v25,v19,v10 ++ f8: (12 4b 14 06|06 14 4b 12) vcmpequb\. v18,v11,v2 ++ fc: (11 39 38 46|46 38 39 11) vcmpequh v9,v25,v7 ++ 100: (11 d8 ac 46|46 ac d8 11) vcmpequh\. v14,v24,v21 ++ 104: (13 0c 28 86|86 28 0c 13) vcmpequw v24,v12,v5 ++ 108: (12 70 0c 86|86 0c 70 12) vcmpequw\. v19,v16,v1 ++ 10c: (12 f1 81 c6|c6 81 f1 12) vcmpgefp v23,v17,v16 ++ 110: (12 7d 8d c6|c6 8d 7d 12) vcmpgefp\. v19,v29,v17 ++ 114: (12 1c 6a c6|c6 6a 1c 12) vcmpgtfp v16,v28,v13 ++ 118: (11 d8 3e c6|c6 3e d8 11) vcmpgtfp\. v14,v24,v7 ++ 11c: (12 16 33 06|06 33 16 12) vcmpgtsb v16,v22,v6 ++ 120: (10 4c 77 06|06 77 4c 10) vcmpgtsb\. v2,v12,v14 ++ 124: (13 83 eb 46|46 eb 83 13) vcmpgtsh v28,v3,v29 ++ 128: (12 13 6f 46|46 6f 13 12) vcmpgtsh\. v16,v19,v13 ++ 12c: (11 e0 2b 86|86 2b e0 11) vcmpgtsw v15,v0,v5 ++ 130: (12 ad 07 86|86 07 ad 12) vcmpgtsw\. v21,v13,v0 ++ 134: (10 aa f2 06|06 f2 aa 10) vcmpgtub v5,v10,v30 ++ 138: (10 ed 56 06|06 56 ed 10) vcmpgtub\. v7,v13,v10 ++ 13c: (13 0f 82 46|46 82 0f 13) vcmpgtuh v24,v15,v16 ++ 140: (13 35 de 46|46 de 35 13) vcmpgtuh\. v25,v21,v27 ++ 144: (12 3b 32 86|86 32 3b 12) vcmpgtuw v17,v27,v6 ++ 148: (11 15 de 86|86 de 15 11) vcmpgtuw\. v8,v21,v27 ++ 14c: (10 2e 0b 4a|4a 0b 2e 10) vcfsx v1,v1,14 ++ 150: (10 99 7b ca|ca 7b 99 10) vctsxs v4,v15,25 ++ 154: (13 8e bb 8a|8a bb 8e 13) vctuxs v28,v23,14 ++ 158: (10 c0 33 0a|0a 33 c0 10) vcfux v6,v6,0 ++ 15c: (10 00 41 8a|8a 41 00 10) vexptefp v0,v8 ++ 160: (12 c0 d9 ca|ca d9 c0 12) vlogefp v22,v27 ++ 164: (12 f2 91 6e|6e 91 f2 12) vmaddfp v23,v18,v5,v18 ++ 168: (11 ad dc 0a|0a dc ad 11) vmaxfp v13,v13,v27 ++ 16c: (11 17 71 02|02 71 17 11) vmaxsb v8,v23,v14 ++ 170: (12 71 01 42|42 01 71 12) vmaxsh v19,v17,v0 ++ 174: (12 63 b1 82|82 b1 63 12) vmaxsw v19,v3,v22 ++ 178: (12 fe e0 02|02 e0 fe 12) vmaxub v23,v30,v28 ++ 17c: (11 34 b8 42|42 b8 34 11) vmaxuh v9,v20,v23 ++ 180: (12 b3 08 82|82 08 b3 12) vmaxuw v21,v19,v1 ++ 184: (12 cd 2d a0|a0 2d cd 12) vmhaddshs v22,v13,v5,v22 ++ 188: (13 e0 1c a1|a1 1c e0 13) vmhraddshs v31,v0,v3,v18 ++ 18c: (10 55 c4 4a|4a c4 55 10) vminfp v2,v21,v24 ++ 190: (12 86 53 02|02 53 86 12) vminsb v20,v6,v10 ++ 194: (12 5b d3 42|42 d3 5b 12) vminsh v18,v27,v26 ++ 198: (10 64 0b 82|82 0b 64 10) vminsw v3,v4,v1 ++ 19c: (10 e0 6a 02|02 6a e0 10) vminub v7,v0,v13 ++ 1a0: (10 0c 32 42|42 32 0c 10) vminuh v0,v12,v6 ++ 1a4: (10 c3 0a 82|82 0a c3 10) vminuw v6,v3,v1 ++ 1a8: (10 7d 1e a2|a2 1e 7d 10) vmladduhm v3,v29,v3,v26 ++ 1ac: (12 a5 f8 0c|0c f8 a5 12) vmrghb v21,v5,v31 ++ 1b0: (12 b8 00 4c|4c 00 b8 12) vmrghh v21,v24,v0 ++ 1b4: (12 00 b0 8c|8c b0 00 12) vmrghw v16,v0,v22 ++ 1b8: (10 31 81 0c|0c 81 31 10) vmrglb v1,v17,v16 ++ 1bc: (11 c8 79 4c|4c 79 c8 11) vmrglh v14,v8,v15 ++ 1c0: (13 f5 29 8c|8c 29 f5 13) vmrglw v31,v21,v5 ++ 1c4: (13 09 4c 84|84 4c 09 13) vmr v24,v9 ++ 1c8: (13 09 4c 84|84 4c 09 13) vmr v24,v9 ++ 1cc: (10 18 7d e5|e5 7d 18 10) vmsummbm v0,v24,v15,v23 ++ 1d0: (10 24 3e 68|68 3e 24 10) vmsumshm v1,v4,v7,v25 ++ 1d4: (11 28 6f e9|e9 6f 28 11) vmsumshs v9,v8,v13,v31 ++ 1d8: (12 ff 67 a4|a4 67 ff 12) vmsumubm v23,v31,v12,v30 ++ 1dc: (13 a0 d5 66|66 d5 a0 13) vmsumuhm v29,v0,v26,v21 ++ 1e0: (13 6e c9 67|67 c9 6e 13) vmsumuhs v27,v14,v25,v5 ++ 1e4: (11 59 73 08|08 73 59 11) vmulesb v10,v25,v14 ++ 1e8: (10 32 43 48|48 43 32 10) vmulesh v1,v18,v8 ++ 1ec: (12 2e 4a 08|08 4a 2e 12) vmuleub v17,v14,v9 ++ 1f0: (10 ba 4a 48|48 4a ba 10) vmuleuh v5,v26,v9 ++ 1f4: (12 b2 31 08|08 31 b2 12) vmulosb v21,v18,v6 ++ 1f8: (10 85 41 48|48 41 85 10) vmulosh v4,v5,v8 ++ 1fc: (10 49 98 08|08 98 49 10) vmuloub v2,v9,v19 ++ 200: (13 a5 20 48|48 20 a5 13) vmulouh v29,v5,v4 ++ 204: (11 02 29 af|af 29 02 11) vnmsubfp v8,v2,v6,v5 ++ 208: (13 e9 55 04|04 55 e9 13) vnor v31,v9,v10 ++ 20c: (13 3f fd 04|04 fd 3f 13) vnot v25,v31 ++ 210: (13 3f fd 04|04 fd 3f 13) vnot v25,v31 ++ 214: (12 e7 14 84|84 14 e7 12) vor v23,v7,v2 ++ 218: (10 1c b6 6b|6b b6 1c 10) vperm v0,v28,v22,v25 ++ 21c: (12 19 8b 0e|0e 8b 19 12) vpkpx v16,v25,v17 ++ 220: (11 90 89 8e|8e 89 90 11) vpkshss v12,v16,v17 ++ 224: (10 33 b9 0e|0e b9 33 10) vpkshus v1,v19,v23 ++ 228: (13 27 69 ce|ce 69 27 13) vpkswss v25,v7,v13 ++ 22c: (10 98 51 4e|4e 51 98 10) vpkswus v4,v24,v10 ++ 230: (11 3b 60 0e|0e 60 3b 11) vpkuhum v9,v27,v12 ++ 234: (12 ca c8 8e|8e c8 ca 12) vpkuhus v22,v10,v25 ++ 238: (13 d2 00 4e|4e 00 d2 13) vpkuwum v30,v18,v0 ++ 23c: (10 e3 b0 ce|ce b0 e3 10) vpkuwus v7,v3,v22 ++ 240: (13 00 e1 0a|0a e1 00 13) vrefp v24,v28 ++ 244: (12 20 9a ca|ca 9a 20 12) vrfim v17,v19 ++ 248: (13 00 ca 0a|0a ca 00 13) vrfin v24,v25 ++ 24c: (10 60 2a 8a|8a 2a 60 10) vrfip v3,v5 ++ 250: (11 00 52 4a|4a 52 00 11) vrfiz v8,v10 ++ 254: (13 52 f0 04|04 f0 52 13) vrlb v26,v18,v30 ++ 258: (12 11 c8 44|44 c8 11 12) vrlh v16,v17,v25 ++ 25c: (12 fe 48 84|84 48 fe 12) vrlw v23,v30,v9 ++ 260: (10 40 91 4a|4a 91 40 10) vrsqrtefp v2,v18 ++ 264: (12 8e 92 aa|aa 92 8e 12) vsel v20,v14,v18,v10 ++ 268: (13 39 61 04|04 61 39 13) vslb v25,v25,v12 ++ 26c: (11 29 61 ec|ec 61 29 11) vsldoi v9,v9,v12,7 ++ 270: (11 c2 59 44|44 59 c2 11) vslh v14,v2,v11 ++ 274: (13 c5 34 0c|0c 34 c5 13) vslo v30,v5,v6 ++ 278: (12 de 49 c4|c4 49 de 12) vsl v22,v30,v9 ++ 27c: (13 5a 19 84|84 19 5a 13) vslw v26,v26,v3 ++ 280: (10 26 a2 0c|0c a2 26 10) vspltb v1,v20,6 ++ 284: (12 03 92 4c|4c 92 03 12) vsplth v16,v18,3 ++ 288: (13 33 03 0c|0c 03 33 13) vspltisb v25,-13 ++ 28c: (12 ca 03 4c|4c 03 ca 12) vspltish v22,10 ++ 290: (11 ad 03 8c|8c 03 ad 11) vspltisw v13,13 ++ 294: (11 22 92 8c|8c 92 22 11) vspltw v9,v18,2 ++ 298: (11 d6 03 04|04 03 d6 11) vsrab v14,v22,v0 ++ 29c: (11 8c 93 44|44 93 8c 11) vsrah v12,v12,v18 ++ 2a0: (10 42 6b 84|84 6b 42 10) vsraw v2,v2,v13 ++ 2a4: (10 fb 2a 04|04 2a fb 10) vsrb v7,v27,v5 ++ 2a8: (10 eb ea 44|44 ea eb 10) vsrh v7,v11,v29 ++ 2ac: (12 5e fc 4c|4c fc 5e 12) vsro v18,v30,v31 ++ 2b0: (10 49 e2 c4|c4 e2 49 10) vsr v2,v9,v28 ++ 2b4: (10 19 02 84|84 02 19 10) vsrw v0,v25,v0 ++ 2b8: (13 02 55 80|80 55 02 13) vsubcuw v24,v2,v10 ++ 2bc: (12 d8 a0 4a|4a a0 d8 12) vsubfp v22,v24,v20 ++ 2c0: (11 56 6f 00|00 6f 56 11) vsubsbs v10,v22,v13 ++ 2c4: (13 11 e7 40|40 e7 11 13) vsubshs v24,v17,v28 ++ 2c8: (11 5a 07 80|80 07 5a 11) vsubsws v10,v26,v0 ++ 2cc: (12 0b c4 00|00 c4 0b 12) vsububm v16,v11,v24 ++ 2d0: (11 75 0e 00|00 0e 75 11) vsububs v11,v21,v1 ++ 2d4: (10 cc c4 40|40 c4 cc 10) vsubuhm v6,v12,v24 ++ 2d8: (13 cb 4e 40|40 4e cb 13) vsubuhs v30,v11,v9 ++ 2dc: (12 74 6c 80|80 6c 74 12) vsubuwm v19,v20,v13 ++ 2e0: (12 59 36 80|80 36 59 12) vsubuws v18,v25,v6 ++ 2e4: (13 2a 96 88|88 96 2a 13) vsum2sws v25,v10,v18 ++ 2e8: (11 b0 af 08|08 af b0 11) vsum4sbs v13,v16,v21 ++ 2ec: (12 e8 26 48|48 26 e8 12) vsum4shs v23,v8,v4 ++ 2f0: (13 8d f6 08|08 f6 8d 13) vsum4ubs v28,v13,v30 ++ 2f4: (12 ca 47 88|88 47 ca 12) vsumsws v22,v10,v8 ++ 2f8: (13 00 73 4e|4e 73 00 13) vupkhpx v24,v14 ++ 2fc: (10 40 b2 0e|0e b2 40 10) vupkhsb v2,v22 ++ 300: (12 00 12 4e|4e 12 00 12) vupkhsh v16,v2 ++ 304: (11 40 d3 ce|ce d3 40 11) vupklpx v10,v26 ++ 308: (11 e0 e2 8e|8e e2 e0 11) vupklsb v15,v28 ++ 30c: (11 00 42 ce|ce 42 00 11) vupklsh v8,v8 ++ 310: (13 20 1c c4|c4 1c 20 13) vxor v25,v0,v3 ++#pass +diff --git a/gas/testsuite/gas/ppc/altivec.s b/gas/testsuite/gas/ppc/altivec.s +index 2f7e4df..9bc13b6 100644 +--- a/gas/testsuite/gas/ppc/altivec.s ++++ b/gas/testsuite/gas/ppc/altivec.s +@@ -1,6 +1,6 @@ + # PowerPC AltiVec tests + #as: -m601 -maltivec +- .section ".text" ++ .text + start: + dss 3 + dssall +@@ -8,3 +8,194 @@ start: + dstt 8,7,0 + dstst 5,6,3 + dststt 4,5,2 ++ lvebx 30,22,24 ++ lvebx 21,0,24 ++ lvehx 10,16,2 ++ lvehx 20,0,23 ++ lvewx 17,4,18 ++ lvewx 23,0,8 ++ lvsl 6,0,25 ++ lvsl 2,0,6 ++ lvsr 22,16,12 ++ lvsr 0,0,29 ++ lvxl 15,5,13 ++ lvxl 19,0,23 ++ lvx 22,1,2 ++ lvx 18,0,17 ++ mfvrsave 31 ++ mfvscr 24 ++ mtvrsave 10 ++ mtvscr 25 ++ stvebx 18,27,10 ++ stvebx 16,0,6 ++ stvehx 17,13,16 ++ stvehx 23,0,20 ++ stvewx 11,19,31 ++ stvewx 31,0,1 ++ stvxl 26,21,17 ++ stvxl 13,0,22 ++ stvx 11,31,31 ++ stvx 30,0,16 ++ vaddcuw 24,7,28 ++ vaddfp 3,30,11 ++ vaddsbs 8,28,9 ++ vaddshs 7,5,4 ++ vaddsws 22,26,27 ++ vaddubm 16,14,28 ++ vaddubs 6,1,25 ++ vadduhm 2,4,6 ++ vadduhs 26,21,8 ++ vadduwm 29,31,1 ++ vadduws 23,13,4 ++ vandc 30,16,9 ++ vand 3,13,27 ++ vavgsb 4,6,17 ++ vavgsh 23,28,19 ++ vavgsw 8,15,31 ++ vavgub 6,7,25 ++ vavguh 25,22,10 ++ vavguw 3,23,29 ++ vcfpsxws 14,2,6 ++ vcfpuxws 9,31,20 ++ vcfsx 24,30,3 ++ vcfux 17,21,29 ++ vcmpbfp 18,28,0 ++ vcmpbfp. 19,26,3 ++ vcmpeqfp 16,2,11 ++ vcmpeqfp. 23,13,13 ++ vcmpequb 25,19,10 ++ vcmpequb. 18,11,2 ++ vcmpequh 9,25,7 ++ vcmpequh. 14,24,21 ++ vcmpequw 24,12,5 ++ vcmpequw. 19,16,1 ++ vcmpgefp 23,17,16 ++ vcmpgefp. 19,29,17 ++ vcmpgtfp 16,28,13 ++ vcmpgtfp. 14,24,7 ++ vcmpgtsb 16,22,6 ++ vcmpgtsb. 2,12,14 ++ vcmpgtsh 28,3,29 ++ vcmpgtsh. 16,19,13 ++ vcmpgtsw 15,0,5 ++ vcmpgtsw. 21,13,0 ++ vcmpgtub 5,10,30 ++ vcmpgtub. 7,13,10 ++ vcmpgtuh 24,15,16 ++ vcmpgtuh. 25,21,27 ++ vcmpgtuw 17,27,6 ++ vcmpgtuw. 8,21,27 ++ vcsxwfp 1,1,14 ++ vctsxs 4,15,25 ++ vctuxs 28,23,14 ++ vcuxwfp 6,6,0 ++ vexptefp 0,8 ++ vlogefp 22,27 ++ vmaddfp 23,18,5,18 ++ vmaxfp 13,13,27 ++ vmaxsb 8,23,14 ++ vmaxsh 19,17,0 ++ vmaxsw 19,3,22 ++ vmaxub 23,30,28 ++ vmaxuh 9,20,23 ++ vmaxuw 21,19,1 ++ vmhaddshs 22,13,5,22 ++ vmhraddshs 31,0,3,18 ++ vminfp 2,21,24 ++ vminsb 20,6,10 ++ vminsh 18,27,26 ++ vminsw 3,4,1 ++ vminub 7,0,13 ++ vminuh 0,12,6 ++ vminuw 6,3,1 ++ vmladduhm 3,29,3,26 ++ vmrghb 21,5,31 ++ vmrghh 21,24,0 ++ vmrghw 16,0,22 ++ vmrglb 1,17,16 ++ vmrglh 14,8,15 ++ vmrglw 31,21,5 ++ vmr 24,9, ++ vor 24,9,9 ++ vmsummbm 0,24,15,23 ++ vmsumshm 1,4,7,25 ++ vmsumshs 9,8,13,31 ++ vmsumubm 23,31,12,30 ++ vmsumuhm 29,0,26,21 ++ vmsumuhs 27,14,25,5 ++ vmulesb 10,25,14 ++ vmulesh 1,18,8 ++ vmuleub 17,14,9 ++ vmuleuh 5,26,9 ++ vmulosb 21,18,6 ++ vmulosh 4,5,8 ++ vmuloub 2,9,19 ++ vmulouh 29,5,4 ++ vnmsubfp 8,2,6,5 ++ vnor 31,9,10 ++ vnor 25,31,31 ++ vnot 25,31, ++ vor 23,7,2 ++ vperm 0,28,22,25 ++ vpkpx 16,25,17 ++ vpkshss 12,16,17 ++ vpkshus 1,19,23 ++ vpkswss 25,7,13 ++ vpkswus 4,24,10 ++ vpkuhum 9,27,12 ++ vpkuhus 22,10,25 ++ vpkuwum 30,18,0 ++ vpkuwus 7,3,22 ++ vrefp 24,28 ++ vrfim 17,19 ++ vrfin 24,25 ++ vrfip 3,5 ++ vrfiz 8,10 ++ vrlb 26,18,30 ++ vrlh 16,17,25 ++ vrlw 23,30,9 ++ vrsqrtefp 2,18 ++ vsel 20,14,18,10 ++ vslb 25,25,12 ++ vsldoi 9,9,12,7 ++ vslh 14,2,11 ++ vslo 30,5,6 ++ vsl 22,30,9 ++ vslw 26,26,3 ++ vspltb 1,20,6 ++ vsplth 16,18,3 ++ vspltisb 25,-13 ++ vspltish 22,10 ++ vspltisw 13,13 ++ vspltw 9,18,2 ++ vsrab 14,22,0 ++ vsrah 12,12,18 ++ vsraw 2,2,13 ++ vsrb 7,27,5 ++ vsrh 7,11,29 ++ vsro 18,30,31 ++ vsr 2,9,28 ++ vsrw 0,25,0 ++ vsubcuw 24,2,10 ++ vsubfp 22,24,20 ++ vsubsbs 10,22,13 ++ vsubshs 24,17,28 ++ vsubsws 10,26,0 ++ vsububm 16,11,24 ++ vsububs 11,21,1 ++ vsubuhm 6,12,24 ++ vsubuhs 30,11,9 ++ vsubuwm 19,20,13 ++ vsubuws 18,25,6 ++ vsum2sws 25,10,18 ++ vsum4sbs 13,16,21 ++ vsum4shs 23,8,4 ++ vsum4ubs 28,13,30 ++ vsumsws 22,10,8 ++ vupkhpx 24,14 ++ vupkhsb 2,22 ++ vupkhsh 16,2 ++ vupklpx 10,26 ++ vupklsb 15,28 ++ vupklsh 8,8 ++ vxor 25,0,3 +diff --git a/gas/testsuite/gas/ppc/altivec2.d b/gas/testsuite/gas/ppc/altivec2.d +new file mode 100644 +index 0000000..90a4b10 +--- /dev/null ++++ b/gas/testsuite/gas/ppc/altivec2.d +@@ -0,0 +1,61 @@ ++#as: -maltivec ++#objdump: -dr -Maltivec ++#name: Altivec ISA 2.07 instructions ++ ++.* ++ ++Disassembly of section \.text: ++ ++0+00 : ++ 0: (7c 60 e2 0e|0e e2 60 7c) lvepxl v3,0,r28 ++ 4: (7e 64 92 0e|0e 92 64 7e) lvepxl v19,r4,r18 ++ 8: (7f 60 9a 4e|4e 9a 60 7f) lvepx v27,0,r19 ++ c: (7c 39 92 4e|4e 92 39 7c) lvepx v1,r25,r18 ++ 10: (7f e0 da 0a|0a da e0 7f) lvexbx v31,0,r27 ++ 14: (7f 81 62 0a|0a 62 81 7f) lvexbx v28,r1,r12 ++ 18: (7f e0 72 4a|4a 72 e0 7f) lvexhx v31,0,r14 ++ 1c: (7e 30 fa 4a|4a fa 30 7e) lvexhx v17,r16,r31 ++ 20: (7e c0 ea 8a|8a ea c0 7e) lvexwx v22,0,r29 ++ 24: (7e f9 2a 8a|8a 2a f9 7e) lvexwx v23,r25,r5 ++ 28: (7c 60 66 0a|0a 66 60 7c) lvsm v3,0,r12 ++ 2c: (7f 7d 0e 0a|0a 0e 7d 7f) lvsm v27,r29,r1 ++ 30: (7c e0 36 ca|ca 36 e0 7c) lvswxl v7,0,r6 ++ 34: (7c f0 46 ca|ca 46 f0 7c) lvswxl v7,r16,r8 ++ 38: (7d c0 94 ca|ca 94 c0 7d) lvswx v14,0,r18 ++ 3c: (7f 9c 84 ca|ca 84 9c 7f) lvswx v28,r28,r16 ++ 40: (7f 60 66 8a|8a 66 60 7f) lvtlxl v27,0,r12 ++ 44: (7f 7c 06 8a|8a 06 7c 7f) lvtlxl v27,r28,r0 ++ 48: (7e e0 cc 8a|8a cc e0 7e) lvtlx v23,0,r25 ++ 4c: (7c 39 74 8a|8a 74 39 7c) lvtlx v1,r25,r14 ++ 50: (7e 80 c6 4a|4a c6 80 7e) lvtrxl v20,0,r24 ++ 54: (7e dd c6 4a|4a c6 dd 7e) lvtrxl v22,r29,r24 ++ 58: (7f 00 44 4a|4a 44 00 7f) lvtrx v24,0,r8 ++ 5c: (7d b7 e4 4a|4a e4 b7 7d) lvtrx v13,r23,r28 ++ 60: (7d 9c 60 dc|dc 60 9c 7d) mvidsplt v12,r28,r12 ++ 64: (7d 5b 00 5c|5c 00 5b 7d) mviwsplt v10,r27,r0 ++ 68: (7f 60 6e 0e|0e 6e 60 7f) stvepxl v27,0,r13 ++ 6c: (7c 42 fe 0e|0e fe 42 7c) stvepxl v2,r2,r31 ++ 70: (7c 60 56 4e|4e 56 60 7c) stvepx v3,0,r10 ++ 74: (7f 7c 06 4e|4e 06 7c 7f) stvepx v27,r28,r0 ++ 78: (7d a0 33 0a|0a 33 a0 7d) stvexbx v13,0,r6 ++ 7c: (7d b9 1b 0a|0a 1b b9 7d) stvexbx v13,r25,r3 ++ 80: (7e c0 0b 4a|4a 0b c0 7e) stvexhx v22,0,r1 ++ 84: (7e 2e 53 4a|4a 53 2e 7e) stvexhx v17,r14,r10 ++ 88: (7e a0 db 8a|8a db a0 7e) stvexwx v21,0,r27 ++ 8c: (7f f2 0b 8a|8a 0b f2 7f) stvexwx v31,r18,r1 ++ 90: (7f 40 6f 8a|8a 6f 40 7f) stvflxl v26,0,r13 ++ 94: (7e cd af 8a|8a af cd 7e) stvflxl v22,r13,r21 ++ 98: (7c a0 4d 8a|8a 4d a0 7c) stvflx v5,0,r9 ++ 9c: (7e b8 0d 8a|8a 0d b8 7e) stvflx v21,r24,r1 ++ a0: (7d a0 57 4a|4a 57 a0 7d) stvfrxl v13,0,r10 ++ a4: (7d b1 cf 4a|4a cf b1 7d) stvfrxl v13,r17,r25 ++ a8: (7e 20 55 4a|4a 55 20 7e) stvfrx v17,0,r10 ++ ac: (7d 0c fd 4a|4a fd 0c 7d) stvfrx v8,r12,r31 ++ b0: (7e 40 ef ca|ca ef 40 7e) stvswxl v18,0,r29 ++ b4: (7f 4e 47 ca|ca 47 4e 7f) stvswxl v26,r14,r8 ++ b8: (7c 00 7d ca|ca 7d 00 7c) stvswx v0,0,r15 ++ bc: (7d b7 3d ca|ca 3d b7 7d) stvswx v13,r23,r7 ++ c0: (10 d1 84 03|03 84 d1 10) vabsdub v6,v17,v16 ++ c4: (12 b2 24 43|43 24 b2 12) vabsduh v21,v18,v4 ++ c8: (13 34 4c 83|83 4c 34 13) vabsduw v25,v20,v9 ++#pass +diff --git a/gas/testsuite/gas/ppc/altivec2.s b/gas/testsuite/gas/ppc/altivec2.s +new file mode 100644 +index 0000000..9f11a8b +--- /dev/null ++++ b/gas/testsuite/gas/ppc/altivec2.s +@@ -0,0 +1,52 @@ ++start: ++ lvepxl 3,0,28 ++ lvepxl 19,4,18 ++ lvepx 27,0,19 ++ lvepx 1,25,18 ++ lvexbx 31,0,27 ++ lvexbx 28,1,12 ++ lvexhx 31,0,14 ++ lvexhx 17,16,31 ++ lvexwx 22,0,29 ++ lvexwx 23,25,5 ++ lvsm 3,0,12 ++ lvsm 27,29,1 ++ lvswxl 7,0,6 ++ lvswxl 7,16,8 ++ lvswx 14,0,18 ++ lvswx 28,28,16 ++ lvtlxl 27,0,12 ++ lvtlxl 27,28,0 ++ lvtlx 23,0,25 ++ lvtlx 1,25,14 ++ lvtrxl 20,0,24 ++ lvtrxl 22,29,24 ++ lvtrx 24,0,8 ++ lvtrx 13,23,28 ++ mvidsplt 12,28,12 ++ mviwsplt 10,27,0 ++ stvepxl 27,0,13 ++ stvepxl 2,2,31 ++ stvepx 3,0,10 ++ stvepx 27,28,0 ++ stvexbx 13,0,6 ++ stvexbx 13,25,3 ++ stvexhx 22,0,1 ++ stvexhx 17,14,10 ++ stvexwx 21,0,27 ++ stvexwx 31,18,1 ++ stvflxl 26,0,13 ++ stvflxl 22,13,21 ++ stvflx 5,0,9 ++ stvflx 21,24,1 ++ stvfrxl 13,0,10 ++ stvfrxl 13,17,25 ++ stvfrx 17,0,10 ++ stvfrx 8,12,31 ++ stvswxl 18,0,29 ++ stvswxl 26,14,8 ++ stvswx 0,0,15 ++ stvswx 13,23,7 ++ vabsdub 6,17,16 ++ vabsduh 21,18,4 ++ vabsduw 25,20,9 +diff --git a/gas/testsuite/gas/ppc/altivec_and_spe.d b/gas/testsuite/gas/ppc/altivec_and_spe.d +index 45672b8..b15b61c 100644 +--- a/gas/testsuite/gas/ppc/altivec_and_spe.d ++++ b/gas/testsuite/gas/ppc/altivec_and_spe.d +@@ -2,11 +2,12 @@ + #objdump: -d -Maltivec -Mppc64 + #name: Check that ISA extensions can be specified before CPU selection + +-.*: +file format elf.*-powerpc.* ++.* + + Disassembly of section \.text: + + 0+00 <.*>: +- 0: 7e 00 06 6c dssall +- 4: 7d 00 83 a6 mtspr 512,r8 +- 8: 4c 00 00 24 rfid ++ 0: (7e 00 06 6c|6c 06 00 7e) dssall ++ 4: (7d 00 83 a6|a6 83 00 7d) mtspr 512,r8 ++ 8: (4c 00 00 24|24 00 00 4c) rfid ++#pass +diff --git a/gas/testsuite/gas/ppc/astest.d b/gas/testsuite/gas/ppc/astest.d +index aebc745..70a11ac 100644 +--- a/gas/testsuite/gas/ppc/astest.d ++++ b/gas/testsuite/gas/ppc/astest.d +@@ -1,74 +1,60 @@ + #objdump: -Dr + #name: PowerPC test 1 + +-.*: +file format elf32-powerpc ++.* + + Disassembly of section \.text: + + 0+0000000 : +- 0: 60 00 00 00 nop +- 4: 60 00 00 00 nop +- 8: 60 00 00 00 nop ++ 0: (60 00 00 00|00 00 00 60) nop ++ 4: (60 00 00 00|00 00 00 60) nop ++ 8: (60 00 00 00|00 00 00 60) nop + + 0+000000c : +- c: 48 00 00 04 b 10 ++ c: (48 00 00 04|04 00 00 48) b 10 + + 0+0000010 : +- 10: 48 00 00 08 b 18 +- 14: 48 00 00 00 b 14 ++ 10: (48 00 00 08|08 00 00 48) b 18 ++ 14: (48 00 00 00|00 00 00 48) b .* + 14: R_PPC_REL24 x +- 18: 48 00 00 04 b 1c ++ 18: (48 00 00 0.|0. 00 00 48) b .* + 18: R_PPC_REL24 \.data\+0x4 +- 1c: 48 00 00 00 b 1c ++ 1c: (48 00 00 00|00 00 00 48) b .* + 1c: R_PPC_REL24 z +- 20: 48 00 00 14 b 34 ++ 20: (48 00 00 ..|.. 00 00 48) b .* + 20: R_PPC_REL24 z\+0x14 +- 24: 48 00 00 04 b 28 +- 28: 48 00 00 00 b 28 ++ 24: (48 00 00 04|04 00 00 48) b 28 ++ 28: (48 00 00 00|00 00 00 48) b .* + 28: R_PPC_REL24 a +- 2c: 4b ff ff e4 b 10 +- 30: 48 00 00 04 b 34 ++ 2c: (4b ff ff e4|e4 ff ff 4b) b 10 ++ 30: (48 00 00 0.|0. 00 00 48) b .* + 30: R_PPC_REL24 a\+0x4 +- 34: 4b ff ff e0 b 14 +- 38: 48 00 00 00 b 38 ++ 34: (4b ff ff e0|e0 ff ff 4b) b 14 ++ 38: (48 00 00 00|00 00 00 48) b .* + 38: R_PPC_LOCAL24PC a +- 3c: 4b ff ff d4 b 10 +- 40: 00 00 00 40 \.long 0x40 ++ 3c: (4b ff ff d4|d4 ff ff 4b) b 10 ++ \.\.\. + 40: R_PPC_ADDR32 \.text\+0x40 +- 44: 00 00 00 4c \.long 0x4c + 44: R_PPC_ADDR32 \.text\+0x4c +- 48: 00 00 00 00 \.long 0x0 + 48: R_PPC_REL32 x +- 4c: 00 00 00 04 \.long 0x4 + 4c: R_PPC_REL32 x\+0x4 +- 50: 00 00 00 00 \.long 0x0 + 50: R_PPC_REL32 z +- 54: 00 00 00 04 \.long 0x4 + 54: R_PPC_REL32 \.data\+0x4 +- 58: 00 00 00 00 \.long 0x0 + 58: R_PPC_ADDR32 x +- 5c: 00 00 00 04 \.long 0x4 + 5c: R_PPC_ADDR32 \.data\+0x4 +- 60: 00 00 00 00 \.long 0x0 + 60: R_PPC_ADDR32 z +- 64: ff ff ff fc fnmsub f31,f31,f31,f31 + 64: R_PPC_ADDR32 x-0x4 +- 68: 00 00 00 00 \.long 0x0 + 68: R_PPC_ADDR32 \.data +- 6c: ff ff ff fc fnmsub f31,f31,f31,f31 + 6c: R_PPC_ADDR32 z-0x4 +- 70: ff ff ff 9c \.long 0xffffff9c +- 74: ff ff ff 9c \.long 0xffffff9c +- 78: 00 00 00 00 \.long 0x0 ++ 70: (ff ff ff 9c|9c ff ff ff) \.long 0xffffff9c ++ 74: (ff ff ff 9c|9c ff ff ff) \.long 0xffffff9c ++ \.\.\. + 78: R_PPC_ADDR32 a +- 7c: 00 00 00 10 \.long 0x10 + 7c: R_PPC_ADDR32 \.text\+0x10 +- 80: 00 00 00 10 \.long 0x10 + 80: R_PPC_ADDR32 \.text\+0x10 +- 84: ff ff ff fc fnmsub f31,f31,f31,f31 +- 88: 00 00 00 12 \.long 0x12 ++ 84: (ff ff ff fc|fc ff ff ff) fnmsub f31,f31,f31,f31 ++ \.\.\. + 88: R_PPC_ADDR32 \.text\+0x12 +- 8c: 00 00 00 00 \.long 0x0 + Disassembly of section \.data: + + 0+0000000 : +diff --git a/gas/testsuite/gas/ppc/astest2.d b/gas/testsuite/gas/ppc/astest2.d +index 030e985..972b9a5 100644 +--- a/gas/testsuite/gas/ppc/astest2.d ++++ b/gas/testsuite/gas/ppc/astest2.d +@@ -1,83 +1,70 @@ +-#objdump: -Dr ++#objdump: -Dr -Mppc + #name: PowerPC test 2 + +-.*: +file format elf32-powerpc ++.* + + Disassembly of section \.text: + + 0+0000000 : +- 0: 60 00 00 00 nop +- 4: 60 00 00 00 nop +- 8: 60 00 00 00 nop +- c: 48 00 00 04 b 10 +- 10: 48 00 00 08 b 18 +- 14: 48 00 00 00 b 14 ++ 0: (60 00 00 00|00 00 00 60) nop ++ 4: (60 00 00 00|00 00 00 60) nop ++ 8: (60 00 00 00|00 00 00 60) nop ++ c: (48 00 00 04|04 00 00 48) b 10 ++ 10: (48 00 00 08|08 00 00 48) b 18 ++ 14: (48 00 00 00|00 00 00 48) b .* + 14: R_PPC_REL24 x +- 18: 48 00 00 04 b 1c ++ 18: (48 00 00 0.|0. 00 00 48) b .* + 18: R_PPC_REL24 \.data\+0x4 +- 1c: 48 00 00 00 b 1c ++ 1c: (48 00 00 00|00 00 00 48) b .* + 1c: R_PPC_REL24 z +- 20: 48 00 00 14 b 34 ++ 20: (48 00 00 ..|.. 00 00 48) b .* + 20: R_PPC_REL24 z\+0x14 +- 24: 48 00 00 04 b 28 +- 28: 48 00 00 00 b 28 ++ 24: (48 00 00 04|04 00 00 48) b 28 ++ 28: (48 00 00 00|00 00 00 48) b .* + 28: R_PPC_REL24 a +- 2c: 48 00 00 50 b 7c +- 30: 48 00 00 04 b 34 ++ 2c: (48 00 00 50|50 00 00 48) b 7c ++ 30: (48 00 00 0.|0. 00 00 48) b .* + 30: R_PPC_REL24 a\+0x4 +- 34: 48 00 00 4c b 80 +- 38: 48 00 00 00 b 38 ++ 34: (48 00 00 4c|4c 00 00 48) b 80 ++ 38: (48 00 00 00|00 00 00 48) b .* + 38: R_PPC_LOCAL24PC a +- 3c: 48 00 00 40 b 7c +- 40: 00 00 00 40 \.long 0x40 ++ 3c: (48 00 00 40|40 00 00 48) b 7c ++ \.\.\. + 40: R_PPC_ADDR32 \.text\+0x40 +- 44: 00 00 00 4c \.long 0x4c + 44: R_PPC_ADDR32 \.text\+0x4c +- 48: 00 00 00 00 \.long 0x0 + 48: R_PPC_REL32 x +- 4c: 00 00 00 04 \.long 0x4 + 4c: R_PPC_REL32 x\+0x4 +- 50: 00 00 00 00 \.long 0x0 + 50: R_PPC_REL32 z +- 54: 00 00 00 04 \.long 0x4 + 54: R_PPC_REL32 \.data\+0x4 +- 58: 00 00 00 00 \.long 0x0 + 58: R_PPC_ADDR32 x +- 5c: 00 00 00 04 \.long 0x4 + 5c: R_PPC_ADDR32 \.data\+0x4 +- 60: 00 00 00 00 \.long 0x0 + 60: R_PPC_ADDR32 z +- 64: ff ff ff fc fnmsub f31,f31,f31,f31 + 64: R_PPC_ADDR32 x-0x4 +- 68: 00 00 00 00 \.long 0x0 + 68: R_PPC_ADDR32 \.data +- 6c: ff ff ff fc fnmsub f31,f31,f31,f31 + 6c: R_PPC_ADDR32 z-0x4 +- 70: 00 00 00 08 \.long 0x8 +- 74: 00 00 00 08 \.long 0x8 ++ 70: (00 00 00 08|08 00 00 00) \.long 0x8 ++ 74: (00 00 00 08|08 00 00 00) \.long 0x8 + + 0+0000078 : +- 78: 00 00 00 00 \.long 0x0 ++ 78: (00 00 00 00|00 00 00 00) \.long 0x0 + 78: R_PPC_ADDR32 a + + 0+000007c : +- 7c: 00 00 00 7c \.long 0x7c ++ \.\.\. + 7c: R_PPC_ADDR32 \.text\+0x7c +- 80: 00 00 00 7c \.long 0x7c + 80: R_PPC_ADDR32 \.text\+0x7c +- 84: ff ff ff fc fnmsub f31,f31,f31,f31 +- 88: 00 00 00 7e \.long 0x7e ++ 84: (ff ff ff fc|fc ff ff ff) fnmsub f31,f31,f31,f31 ++ \.\.\. + 88: R_PPC_ADDR32 \.text\+0x7e +- 8c: 00 00 00 00 \.long 0x0 +- 90: 60 00 00 00 nop +- 94: 40 a5 ff fc ble- cr1,90 +- 98: 41 a9 ff f8 bgt- cr2,90 +- 9c: 40 8d ff f4 ble\+ cr3,90 +- a0: 41 91 ff f0 bgt\+ cr4,90 +- a4: 40 95 00 10 ble- cr5,b4 +- a8: 41 99 00 0c bgt- cr6,b4 +- ac: 40 bd 00 08 ble\+ cr7,b4 +- b0: 41 a1 00 04 bgt\+ b4 ++ 90: (60 00 00 00|00 00 00 60) nop ++ 94: (40 a5 ff fc|fc ff a5 40) ble- cr1,90 ++ 98: (41 a9 ff f8|f8 ff a9 41) bgt- cr2,90 ++ 9c: (40 8d ff f4|f4 ff 8d 40) ble\+ cr3,90 ++ a0: (41 91 ff f0|f0 ff 91 41) bgt\+ cr4,90 ++ a4: (40 95 00 10|10 00 95 40) ble- cr5,b4 ++ a8: (41 99 00 0c|0c 00 99 41) bgt- cr6,b4 ++ ac: (40 bd 00 08|08 00 bd 40) ble\+ cr7,b4 ++ b0: (41 a1 00 04|04 00 a1 41) bgt\+ b4 + Disassembly of section \.data: + + 0+0000000 : +diff --git a/gas/testsuite/gas/ppc/astest2_64.d b/gas/testsuite/gas/ppc/astest2_64.d +index 901d425..516b8bc 100644 +--- a/gas/testsuite/gas/ppc/astest2_64.d ++++ b/gas/testsuite/gas/ppc/astest2_64.d +@@ -1,71 +1,58 @@ + #objdump: -Dr + #name: PowerPC 64-bit test 2 + +-.*: +file format elf64-powerpc ++.* + + Disassembly of section \.text: + + 0000000000000000 : +- 0: 60 00 00 00 nop +- 4: 60 00 00 00 nop +- 8: 60 00 00 00 nop +- c: 48 00 00 04 b 10 +- 10: 48 00 00 08 b 18 +- 14: 48 00 00 00 b 14 ++ 0: (60 00 00 00|00 00 00 60) nop ++ 4: (60 00 00 00|00 00 00 60) nop ++ 8: (60 00 00 00|00 00 00 60) nop ++ c: (48 00 00 04|04 00 00 48) b 10 ++ 10: (48 00 00 08|08 00 00 48) b 18 ++ 14: (48 00 00 00|00 00 00 48) b .* + 14: R_PPC64_REL24 x +- 18: 48 00 00 04 b 1c ++ 18: (48 00 00 0.|0. 00 00 48) b .* + 18: R_PPC64_REL24 \.data\+0x4 +- 1c: 48 00 00 00 b 1c ++ 1c: (48 00 00 00|00 00 00 48) b .* + 1c: R_PPC64_REL24 z +- 20: 48 00 00 14 b 34 ++ 20: (48 00 00 ..|.. 00 00 48) b .* + 20: R_PPC64_REL24 z\+0x14 +- 24: 48 00 00 04 b 28 +- 28: 48 00 00 00 b 28 ++ 24: (48 00 00 04|04 00 00 48) b 28 ++ 28: (48 00 00 00|00 00 00 48) b .* + 28: R_PPC64_REL24 a +- 2c: 48 00 00 48 b 74 +- 30: 48 00 00 04 b 34 ++ 2c: (48 00 00 48|48 00 00 48) b 74 ++ 30: (48 00 00 0.|0. 00 00 48) b .* + 30: R_PPC64_REL24 a\+0x4 +- 34: 48 00 00 44 b 78 +- 38: 00 00 00 38 \.long 0x38 ++ 34: (48 00 00 44|44 00 00 48) b 78 ++ \.\.\. + 38: R_PPC64_ADDR32 \.text\+0x38 +- 3c: 00 00 00 44 \.long 0x44 + 3c: R_PPC64_ADDR32 \.text\+0x44 +- 40: 00 00 00 00 \.long 0x0 + 40: R_PPC64_REL32 x +- 44: 00 00 00 04 \.long 0x4 + 44: R_PPC64_REL32 x\+0x4 +- 48: 00 00 00 00 \.long 0x0 + 48: R_PPC64_REL32 z +- 4c: 00 00 00 04 \.long 0x4 + 4c: R_PPC64_REL32 \.data\+0x4 +- 50: 00 00 00 00 \.long 0x0 + 50: R_PPC64_ADDR32 x +- 54: 00 00 00 04 \.long 0x4 + 54: R_PPC64_ADDR32 \.data\+0x4 +- 58: 00 00 00 00 \.long 0x0 + 58: R_PPC64_ADDR32 z +- 5c: ff ff ff fc fnmsub f31,f31,f31,f31 + 5c: R_PPC64_ADDR32 x-0x4 +- 60: 00 00 00 00 \.long 0x0 + 60: R_PPC64_ADDR32 \.data +- 64: ff ff ff fc fnmsub f31,f31,f31,f31 + 64: R_PPC64_ADDR32 z-0x4 +- 68: 00 00 00 08 \.long 0x8 +- 6c: 00 00 00 08 \.long 0x8 ++ 68: (00 00 00 08|08 00 00 00) \.long 0x8 ++ 6c: (00 00 00 08|08 00 00 00) \.long 0x8 + + 0000000000000070 : +- 70: 00 00 00 00 \.long 0x0 ++ 70: (00 00 00 00|00 00 00 00) \.long 0x0 + 70: R_PPC64_ADDR32 a + + 0000000000000074 : +- 74: 00 00 00 74 \.long 0x74 ++ \.\.\. + 74: R_PPC64_ADDR32 \.text\+0x74 +- 78: 00 00 00 74 \.long 0x74 + 78: R_PPC64_ADDR32 \.text\+0x74 +- 7c: ff ff ff fc fnmsub f31,f31,f31,f31 +- 80: 00 00 00 76 \.long 0x76 ++ 7c: (ff ff ff fc|fc ff ff ff) fnmsub f31,f31,f31,f31 ++ \.\.\. + 80: R_PPC64_ADDR32 \.text\+0x76 +- 84: 00 00 00 00 \.long 0x0 + Disassembly of section \.data: + + 0000000000000000 : +diff --git a/gas/testsuite/gas/ppc/astest64.d b/gas/testsuite/gas/ppc/astest64.d +index a1a39cc..82ccb90 100644 +--- a/gas/testsuite/gas/ppc/astest64.d ++++ b/gas/testsuite/gas/ppc/astest64.d +@@ -1,71 +1,57 @@ + #objdump: -Dr + #name: PowerPC 64-bit test 1 + +-.*: +file format elf64-powerpc ++.* + + Disassembly of section \.text: + + 0000000000000000 : +- 0: 60 00 00 00 nop +- 4: 60 00 00 00 nop +- 8: 60 00 00 00 nop ++ 0: (60 00 00 00|00 00 00 60) nop ++ 4: (60 00 00 00|00 00 00 60) nop ++ 8: (60 00 00 00|00 00 00 60) nop + + 000000000000000c : +- c: 48 00 00 04 b 10 ++ c: (48 00 00 04|04 00 00 48) b 10 + + 0000000000000010 : +- 10: 48 00 00 08 b 18 +- 14: 48 00 00 00 b 14 ++ 10: (48 00 00 08|08 00 00 48) b 18 ++ 14: (48 00 00 00|00 00 00 48) b .* + 14: R_PPC64_REL24 x +- 18: 48 00 00 04 b 1c ++ 18: (48 00 00 0.|0. 00 00 48) b .* + 18: R_PPC64_REL24 \.data\+0x4 +- 1c: 48 00 00 00 b 1c ++ 1c: (48 00 00 00|00 00 00 48) b .* + 1c: R_PPC64_REL24 z +- 20: 48 00 00 14 b 34 ++ 20: (48 00 00 ..|.. 00 00 48) b .* + 20: R_PPC64_REL24 z\+0x14 +- 24: 48 00 00 04 b 28 +- 28: 48 00 00 00 b 28 ++ 24: (48 00 00 04|04 00 00 48) b 28 ++ 28: (48 00 00 00|00 00 00 48) b .* + 28: R_PPC64_REL24 a +- 2c: 4b ff ff e4 b 10 +- 30: 48 00 00 04 b 34 ++ 2c: (4b ff ff e4|e4 ff ff 4b) b 10 ++ 30: (48 00 00 0.|0. 00 00 48) b .* + 30: R_PPC64_REL24 a\+0x4 +- 34: 4b ff ff e0 b 14 +- 38: 00 00 00 38 \.long 0x38 ++ 34: (4b ff ff e0|e0 ff ff 4b) b 14 ++ \.\.\. + 38: R_PPC64_ADDR32 \.text\+0x38 +- 3c: 00 00 00 44 \.long 0x44 + 3c: R_PPC64_ADDR32 \.text\+0x44 +- 40: 00 00 00 00 \.long 0x0 + 40: R_PPC64_REL32 x +- 44: 00 00 00 04 \.long 0x4 + 44: R_PPC64_REL32 x\+0x4 +- 48: 00 00 00 00 \.long 0x0 + 48: R_PPC64_REL32 z +- 4c: 00 00 00 04 \.long 0x4 + 4c: R_PPC64_REL32 \.data\+0x4 +- 50: 00 00 00 00 \.long 0x0 + 50: R_PPC64_ADDR32 x +- 54: 00 00 00 04 \.long 0x4 + 54: R_PPC64_ADDR32 \.data\+0x4 +- 58: 00 00 00 00 \.long 0x0 + 58: R_PPC64_ADDR32 z +- 5c: ff ff ff fc fnmsub f31,f31,f31,f31 + 5c: R_PPC64_ADDR32 x-0x4 +- 60: 00 00 00 00 \.long 0x0 + 60: R_PPC64_ADDR32 \.data +- 64: ff ff ff fc fnmsub f31,f31,f31,f31 + 64: R_PPC64_ADDR32 z-0x4 +- 68: ff ff ff a4 \.long 0xffffffa4 +- 6c: ff ff ff a4 \.long 0xffffffa4 +- 70: 00 00 00 00 \.long 0x0 ++ 68: (ff ff ff a4|a4 ff ff ff) \.long 0xffffffa4 ++ 6c: (ff ff ff a4|a4 ff ff ff) \.long 0xffffffa4 ++ \.\.\. + 70: R_PPC64_ADDR32 a +- 74: 00 00 00 10 \.long 0x10 + 74: R_PPC64_ADDR32 \.text\+0x10 +- 78: 00 00 00 10 \.long 0x10 + 78: R_PPC64_ADDR32 \.text\+0x10 +- 7c: ff ff ff fc fnmsub f31,f31,f31,f31 +- 80: 00 00 00 12 \.long 0x12 ++ 7c: (ff ff ff fc|fc ff ff ff) fnmsub f31,f31,f31,f31 ++ \.\.\. + 80: R_PPC64_ADDR32 \.text\+0x12 +- 84: 00 00 00 00 \.long 0x0 + Disassembly of section \.data: + + 0000000000000000 : +diff --git a/gas/testsuite/gas/ppc/booke.d b/gas/testsuite/gas/ppc/booke.d +index a7792a8..c427141 100644 +--- a/gas/testsuite/gas/ppc/booke.d ++++ b/gas/testsuite/gas/ppc/booke.d +@@ -2,42 +2,42 @@ + #objdump: -dr -Mbooke + #name: BookE tests + +-.*: +file format elf(32)?(64)?-powerpc.* ++.* + + Disassembly of section \.text: + + 0+0000000 : +- 0: 7c a8 48 2c icbt 5,r8,r9 +- 4: 7c a6 02 26 mfapidi r5,r6 +- 8: 7c 07 46 24 tlbivax r7,r8 +- c: 7c 0b 67 24 tlbsx r11,r12 +- 10: 7c 00 07 a4 tlbwe +- 14: 7c 00 07 a4 tlbwe +- 18: 7c 21 0f a4 tlbwe r1,r1,1 ++ 0: (7c a8 48 2c|2c 48 a8 7c) icbt 5,r8,r9 ++ 4: (7c a6 02 26|26 02 a6 7c) mfapidi r5,r6 ++ 8: (7c 07 46 24|24 46 07 7c) tlbivax r7,r8 ++ c: (7c 0b 67 24|24 67 0b 7c) tlbsx r11,r12 ++ 10: (7c 00 07 a4|a4 07 00 7c) tlbwe ++ 14: (7c 00 07 a4|a4 07 00 7c) tlbwe ++ 18: (7c 21 0f a4|a4 0f 21 7c) tlbwe r1,r1,1 + + 0+000001c : +- 1c: 4c 00 00 66 rfci +- 20: 7c 60 01 06 wrtee r3 +- 24: 7c 00 81 46 wrteei 1 +- 28: 7c 85 02 06 mfdcrx r4,r5 +- 2c: 7c aa 3a 86 mfdcr r5,234 +- 30: 7c e6 03 06 mtdcrx r6,r7 +- 34: 7d 10 6b 86 mtdcr 432,r8 +- 38: 7c 00 04 ac msync +- 3c: 7c 09 55 ec dcba r9,r10 +- 40: 7c 00 06 ac mbar +- 44: 7c 00 06 ac mbar +- 48: 7c 20 06 ac mbar 1 +- 4c: 7d 8d 77 24 tlbsx r12,r13,r14 +- 50: 7d 8d 77 25 tlbsx\. r12,r13,r14 +- 54: 7c 12 42 a6 mfsprg r0,2 +- 58: 7c 12 42 a6 mfsprg r0,2 +- 5c: 7c 12 43 a6 mtsprg 2,r0 +- 60: 7c 12 43 a6 mtsprg 2,r0 +- 64: 7c 07 42 a6 mfsprg r0,7 +- 68: 7c 07 42 a6 mfsprg r0,7 +- 6c: 7c 17 43 a6 mtsprg 7,r0 +- 70: 7c 17 43 a6 mtsprg 7,r0 +- 74: 7c 05 32 2c dcbt r5,r6 +- 78: 7c 05 32 2c dcbt r5,r6 +- 7c: 7d 05 32 2c dcbt 8,r5,r6 ++ 1c: (4c 00 00 66|66 00 00 4c) rfci ++ 20: (7c 60 01 06|06 01 60 7c) wrtee r3 ++ 24: (7c 00 81 46|46 81 00 7c) wrteei 1 ++ 28: (7c 85 02 06|06 02 85 7c) mfdcrx r4,r5 ++ 2c: (7c aa 3a 86|86 3a aa 7c) mfdcr r5,234 ++ 30: (7c e6 03 06|06 03 e6 7c) mtdcrx r6,r7 ++ 34: (7d 10 6b 86|86 6b 10 7d) mtdcr 432,r8 ++ 38: (7c 00 04 ac|ac 04 00 7c) msync ++ 3c: (7c 09 55 ec|ec 55 09 7c) dcba r9,r10 ++ 40: (7c 00 06 ac|ac 06 00 7c) mbar ++ 44: (7c 00 06 ac|ac 06 00 7c) mbar ++ 48: (7c 20 06 ac|ac 06 20 7c) mbar 1 ++ 4c: (7d 8d 77 24|24 77 8d 7d) tlbsx r12,r13,r14 ++ 50: (7d 8d 77 25|25 77 8d 7d) tlbsx\. r12,r13,r14 ++ 54: (7c 12 42 a6|a6 42 12 7c) mfsprg r0,2 ++ 58: (7c 12 42 a6|a6 42 12 7c) mfsprg r0,2 ++ 5c: (7c 12 43 a6|a6 43 12 7c) mtsprg 2,r0 ++ 60: (7c 12 43 a6|a6 43 12 7c) mtsprg 2,r0 ++ 64: (7c 07 42 a6|a6 42 07 7c) mfsprg r0,7 ++ 68: (7c 07 42 a6|a6 42 07 7c) mfsprg r0,7 ++ 6c: (7c 17 43 a6|a6 43 17 7c) mtsprg 7,r0 ++ 70: (7c 17 43 a6|a6 43 17 7c) mtsprg 7,r0 ++ 74: (7c 05 32 2c|2c 32 05 7c) dcbt r5,r6 ++ 78: (7c 05 32 2c|2c 32 05 7c) dcbt r5,r6 ++ 7c: (7d 05 32 2c|2c 32 05 7d) dcbt 8,r5,r6 +diff --git a/gas/testsuite/gas/ppc/booke.s b/gas/testsuite/gas/ppc/booke.s +index 4061bf1..3947c61 100644 +--- a/gas/testsuite/gas/ppc/booke.s ++++ b/gas/testsuite/gas/ppc/booke.s +@@ -1,6 +1,6 @@ + # Motorola PowerPC BookE tests + #as: -mbooke +- .section ".text" ++ .text + + branch_target_1: + icbt 5, 8, 9 +diff --git a/gas/testsuite/gas/ppc/cell.d b/gas/testsuite/gas/ppc/cell.d +index ca1db2b..bda56ae 100644 +--- a/gas/testsuite/gas/ppc/cell.d ++++ b/gas/testsuite/gas/ppc/cell.d +@@ -3,35 +3,35 @@ + #name: Cell tests (includes Altivec) + + +-.*: +file format elf(32)?(64)?-powerpc.* ++.* + + + Disassembly of section \.text: + + 0+00 <.text>: +- 0: 7c 01 14 0e lvlx v0,r1,r2 +- 4: 7c 00 14 0e lvlx v0,0,r2 +- 8: 7c 01 16 0e lvlxl v0,r1,r2 +- c: 7c 00 16 0e lvlxl v0,0,r2 +- 10: 7c 01 14 4e lvrx v0,r1,r2 +- 14: 7c 00 14 4e lvrx v0,0,r2 +- 18: 7c 01 16 4e lvrxl v0,r1,r2 +- 1c: 7c 00 16 4e lvrxl v0,0,r2 +- 20: 7c 01 15 0e stvlx v0,r1,r2 +- 24: 7c 00 15 0e stvlx v0,0,r2 +- 28: 7c 01 17 0e stvlxl v0,r1,r2 +- 2c: 7c 00 17 0e stvlxl v0,0,r2 +- 30: 7c 01 15 4e stvrx v0,r1,r2 +- 34: 7c 00 15 4e stvrx v0,0,r2 +- 38: 7c 01 17 4e stvrxl v0,r1,r2 +- 3c: 7c 00 17 4e stvrxl v0,0,r2 +- 40: 7c 00 0c 28 ldbrx r0,0,r1 +- 44: 7c 01 14 28 ldbrx r0,r1,r2 +- 48: 7c 00 0d 28 stdbrx r0,0,r1 +- 4c: 7c 01 15 28 stdbrx r0,r1,r2 +- 50: 7c 60 06 6c dss 3 +- 54: 7e 00 06 6c dssall +- 58: 7c 25 22 ac dst r5,r4,1 +- 5c: 7e 08 3a ac dstt r8,r7,0 +- 60: 7c 65 32 ec dstst r5,r6,3 +- 64: 7e 44 2a ec dststt r4,r5,2 ++ 0: (7c 01 14 0e|0e 14 01 7c) lvlx v0,r1,r2 ++ 4: (7c 00 14 0e|0e 14 00 7c) lvlx v0,0,r2 ++ 8: (7c 01 16 0e|0e 16 01 7c) lvlxl v0,r1,r2 ++ c: (7c 00 16 0e|0e 16 00 7c) lvlxl v0,0,r2 ++ 10: (7c 01 14 4e|4e 14 01 7c) lvrx v0,r1,r2 ++ 14: (7c 00 14 4e|4e 14 00 7c) lvrx v0,0,r2 ++ 18: (7c 01 16 4e|4e 16 01 7c) lvrxl v0,r1,r2 ++ 1c: (7c 00 16 4e|4e 16 00 7c) lvrxl v0,0,r2 ++ 20: (7c 01 15 0e|0e 15 01 7c) stvlx v0,r1,r2 ++ 24: (7c 00 15 0e|0e 15 00 7c) stvlx v0,0,r2 ++ 28: (7c 01 17 0e|0e 17 01 7c) stvlxl v0,r1,r2 ++ 2c: (7c 00 17 0e|0e 17 00 7c) stvlxl v0,0,r2 ++ 30: (7c 01 15 4e|4e 15 01 7c) stvrx v0,r1,r2 ++ 34: (7c 00 15 4e|4e 15 00 7c) stvrx v0,0,r2 ++ 38: (7c 01 17 4e|4e 17 01 7c) stvrxl v0,r1,r2 ++ 3c: (7c 00 17 4e|4e 17 00 7c) stvrxl v0,0,r2 ++ 40: (7c 00 0c 28|28 0c 00 7c) ldbrx r0,0,r1 ++ 44: (7c 01 14 28|28 14 01 7c) ldbrx r0,r1,r2 ++ 48: (7c 00 0d 28|28 0d 00 7c) stdbrx r0,0,r1 ++ 4c: (7c 01 15 28|28 15 01 7c) stdbrx r0,r1,r2 ++ 50: (7c 60 06 6c|6c 06 60 7c) dss 3 ++ 54: (7e 00 06 6c|6c 06 00 7e) dssall ++ 58: (7c 25 22 ac|ac 22 25 7c) dst r5,r4,1 ++ 5c: (7e 08 3a ac|ac 3a 08 7e) dstt r8,r7,0 ++ 60: (7c 65 32 ec|ec 32 65 7c) dstst r5,r6,3 ++ 64: (7e 44 2a ec|ec 2a 44 7e) dststt r4,r5,2 +diff --git a/gas/testsuite/gas/ppc/cell.s b/gas/testsuite/gas/ppc/cell.s +index 681364c..b294299 100644 +--- a/gas/testsuite/gas/ppc/cell.s ++++ b/gas/testsuite/gas/ppc/cell.s +@@ -1,4 +1,4 @@ +- .section ".text" ++ .text + lvlx %r0, %r1, %r2 + lvlx %r0, 0, %r2 + lvlxl %r0, %r1, %r2 +diff --git a/gas/testsuite/gas/ppc/common.d b/gas/testsuite/gas/ppc/common.d +index 25cb3b5..3de1a71 100644 +--- a/gas/testsuite/gas/ppc/common.d ++++ b/gas/testsuite/gas/ppc/common.d +@@ -2,193 +2,193 @@ + #as: -a32 -mcom + #name: PowerPC COMMON instructions + +-.*: +file format elf32-powerpc.* ++.* + + Disassembly of section \.text: + + 0+00 : + +- 0: 7c 83 28 39 and. r3,r4,r5 +- 4: 7c 83 28 38 and r3,r4,r5 +- 8: 7d cd 78 78 andc r13,r14,r15 +- c: 7e 30 90 79 andc. r16,r17,r18 +- 10: 48 00 00 02 ba 0 +- 14: 40 01 00 00 bdnzf- 1,14 +- 18: 40 85 00 02 blea- 1,0 +- 1c: 40 43 00 01 bdzfl- 3,1c +- 20: 41 47 00 03 bdztla- 7,0 +- 24: 4e 80 04 20 bctr +- 28: 4e 80 04 21 bctrl +- 2c: 42 40 00 02 bdza- 0 +- 30: 42 40 00 00 bdz- 30 +- 34: 42 40 00 03 bdzla- 0 +- 38: 42 40 00 01 bdzl- 38 +- 3c: 41 82 00 00 beq- 3c +- 40: 41 8a 00 02 beqa- 2,0 +- 44: 41 86 00 01 beql- 1,44 +- 48: 41 8e 00 03 beqla- 3,0 +- 4c: 40 80 00 00 bge- 4c +- 50: 40 90 00 02 bgea- 4,0 +- 54: 40 88 00 01 bgel- 2,54 +- 58: 40 98 00 03 bgela- 6,0 +- 5c: 41 91 00 00 bgt- 4,5c +- 60: 41 99 00 02 bgta- 6,0 +- 64: 41 95 00 01 bgtl- 5,64 +- 68: 41 9d 00 03 bgtla- 7,0 +- 6c: 48 00 00 00 b 6c +- 70: 48 00 00 03 bla 0 +- 74: 40 81 00 00 ble- 74 +- 78: 40 91 00 02 blea- 4,0 +- 7c: 40 89 00 01 blel- 2,7c +- 80: 40 99 00 03 blela- 6,0 +- 84: 48 00 00 01 bl 84 +- 88: 41 80 00 00 blt- 88 +- 8c: 41 88 00 02 blta- 2,0 +- 90: 41 84 00 01 bltl- 1,90 +- 94: 41 8c 00 03 bltla- 3,0 +- 98: 40 82 00 00 bne- 98 +- 9c: 40 8a 00 02 bnea- 2,0 +- a0: 40 86 00 01 bnel- 1,a0 +- a4: 40 8e 00 03 bnela- 3,0 +- a8: 40 85 00 00 ble- 1,a8 +- ac: 40 95 00 02 blea- 5,0 +- b0: 40 8d 00 01 blel- 3,b0 +- b4: 40 9d 00 03 blela- 7,0 +- b8: 40 84 00 00 bge- 1,b8 +- bc: 40 94 00 02 bgea- 5,0 +- c0: 40 8c 00 01 bgel- 3,c0 +- c4: 40 9c 00 03 bgela- 7,0 +- c8: 40 93 00 00 bns- 4,c8 +- cc: 40 9b 00 02 bnsa- 6,0 +- d0: 40 97 00 01 bnsl- 5,d0 +- d4: 40 9f 00 03 bnsla- 7,0 +- d8: 41 93 00 00 bso- 4,d8 +- dc: 41 9b 00 02 bsoa- 6,0 +- e0: 41 97 00 01 bsol- 5,e0 +- e4: 41 9f 00 03 bsola- 7,0 +- e8: 4c 85 32 02 crand 4,5,6 +- ec: 4c 64 29 02 crandc 3,4,5 +- f0: 4c e0 0a 42 creqv 7,0,1 +- f4: 4c 22 19 c2 crnand 1,2,3 +- f8: 4c 01 10 42 crnor 0,1,2 +- fc: 4c a6 3b 82 cror 5,6,7 +- 100: 4c 43 23 42 crorc 2,3,4 +- 104: 4c c7 01 82 crxor 6,7,0 +- 108: 7d 6a 62 39 eqv. r10,r11,r12 +- 10c: 7d 6a 62 38 eqv r10,r11,r12 +- 110: fe a0 fa 11 fabs. f21,f31 +- 114: fe a0 fa 10 fabs f21,f31 +- 118: fd 8a 58 40 fcmpo 3,f10,f11 +- 11c: fd 84 28 00 fcmpu 3,f4,f5 +- 120: fc 60 20 91 fmr. f3,f4 +- 124: fc 60 20 90 fmr f3,f4 +- 128: fe 80 f1 11 fnabs. f20,f30 +- 12c: fe 80 f1 10 fnabs f20,f30 +- 130: fc 60 20 51 fneg. f3,f4 +- 134: fc 60 20 50 fneg f3,f4 +- 138: fc c0 38 18 frsp f6,f7 +- 13c: fd 00 48 19 frsp. f8,f9 +- 140: 89 21 00 00 lbz r9,0\(r1\) +- 144: 8d 41 00 01 lbzu r10,1\(r1\) +- 148: 7e 95 b0 ee lbzux r20,r21,r22 +- 14c: 7c 64 28 ae lbzx r3,r4,r5 +- 150: ca a1 00 08 lfd f21,8\(r1\) +- 154: ce c1 00 10 lfdu f22,16\(r1\) +- 158: 7e 95 b4 ee lfdux f20,r21,r22 +- 15c: 7d ae 7c ae lfdx f13,r14,r15 +- 160: c2 61 00 00 lfs f19,0\(r1\) +- 164: c6 81 00 04 lfsu f20,4\(r1\) +- 168: 7d 4b 64 6e lfsux f10,r11,r12 +- 16c: 7d 4b 64 2e lfsx f10,r11,r12 +- 170: a9 e1 00 06 lha r15,6\(r1\) +- 174: ae 01 00 08 lhau r16,8\(r1\) +- 178: 7d 2a 5a ee lhaux r9,r10,r11 +- 17c: 7d 2a 5a ae lhax r9,r10,r11 +- 180: 7c 64 2e 2c lhbrx r3,r4,r5 +- 184: a1 a1 00 00 lhz r13,0\(r1\) +- 188: a5 c1 00 02 lhzu r14,2\(r1\) +- 18c: 7e 96 c2 6e lhzux r20,r22,r24 +- 190: 7e f8 ca 2e lhzx r23,r24,r25 +- 194: 4c 04 00 00 mcrf 0,1 +- 198: fd 90 00 80 mcrfs 3,4 +- 19c: 7d 80 04 00 mcrxr 3 +- 1a0: 7c 60 00 26 mfcr r3 +- 1a4: 7c 69 02 a6 mfctr r3 +- 1a8: 7c b3 02 a6 mfdar r5 +- 1ac: 7c 92 02 a6 mfdsisr r4 +- 1b0: ff c0 04 8e mffs f30 +- 1b4: ff e0 04 8f mffs. f31 +- 1b8: 7c 48 02 a6 mflr r2 +- 1bc: 7e 60 00 a6 mfmsr r19 +- 1c0: 7c 78 00 26 mfocrf r3,128 +- 1c4: 7c 25 02 a6 mfrtcl r1 +- 1c8: 7c 04 02 a6 mfrtcu r0 +- 1cc: 7c d9 02 a6 mfsdr1 r6 +- 1d0: 7c 60 22 a6 mfspr r3,128 +- 1d4: 7c fa 02 a6 mfsrr0 r7 +- 1d8: 7d 1b 02 a6 mfsrr1 r8 +- 1dc: 7f c1 02 a6 mfxer r30 +- 1e0: 7f fe fb 79 mr. r30,r31 +- 1e4: 7f fe fb 78 mr r30,r31 +- 1e8: 7c 6f f1 20 mtcr r3 +- 1ec: 7c 68 01 20 mtcrf 128,r3 +- 1f0: 7e 69 03 a6 mtctr r19 +- 1f4: 7e b3 03 a6 mtdar r21 +- 1f8: 7f 16 03 a6 mtdec r24 +- 1fc: 7e 92 03 a6 mtdsisr r20 +- 200: fc 60 00 8d mtfsb0. 3 +- 204: fc 60 00 8c mtfsb0 3 +- 208: fc 60 00 4d mtfsb1. 3 +- 20c: fc 60 00 4c mtfsb1 3 +- 210: fc 0c 55 8e mtfsf 6,f10 +- 214: fc 0c 5d 8f mtfsf. 6,f11 +- 218: ff 00 01 0c mtfsfi 6,0 +- 21c: ff 00 f1 0d mtfsfi. 6,15 +- 220: 7e 48 03 a6 mtlr r18 +- 224: 7d 40 01 24 mtmsr r10 +- 228: 7c 78 01 20 mtocrf 128,r3 +- 22c: 7e f5 03 a6 mtrtcl r23 +- 230: 7e d4 03 a6 mtrtcu r22 +- 234: 7f 39 03 a6 mtsdr1 r25 +- 238: 7c 60 23 a6 mtspr 128,r3 +- 23c: 7f 5a 03 a6 mtsrr0 r26 +- 240: 7f 7b 03 a6 mtsrr1 r27 +- 244: 7e 21 03 a6 mtxer r17 +- 248: 7f bc f3 b9 nand. r28,r29,r30 +- 24c: 7f bc f3 b8 nand r28,r29,r30 +- 250: 7c 64 00 d1 neg. r3,r4 +- 254: 7c 64 00 d0 neg r3,r4 +- 258: 7e 11 04 d0 nego r16,r17 +- 25c: 7e 53 04 d1 nego. r18,r19 +- 260: 7e b4 b0 f9 nor. r20,r21,r22 +- 264: 7e b4 b0 f8 nor r20,r21,r22 +- 268: 7e b4 a8 f9 not. r20,r21 +- 26c: 7e b4 a8 f8 not r20,r21 +- 270: 7c 40 23 78 or r0,r2,r4 +- 274: 7d cc 83 79 or. r12,r14,r16 +- 278: 7e 0f 8b 38 orc r15,r16,r17 +- 27c: 7e 72 a3 39 orc. r18,r19,r20 +- 280: 4c 00 00 64 rfi +- 284: 99 61 00 02 stb r11,2\(r1\) +- 288: 9d 81 00 03 stbu r12,3\(r1\) +- 28c: 7d ae 79 ee stbux r13,r14,r15 +- 290: 7c 64 29 ae stbx r3,r4,r5 +- 294: db 21 00 20 stfd f25,32\(r1\) +- 298: df 41 00 28 stfdu f26,40\(r1\) +- 29c: 7c 01 15 ee stfdux f0,r1,r2 +- 2a0: 7f be fd ae stfdx f29,r30,r31 +- 2a4: d2 e1 00 14 stfs f23,20\(r1\) +- 2a8: d7 01 00 18 stfsu f24,24\(r1\) +- 2ac: 7f 5b e5 6e stfsux f26,r27,r28 +- 2b0: 7e f8 cd 2e stfsx f23,r24,r25 +- 2b4: b2 21 00 0a sth r17,10\(r1\) +- 2b8: 7c c7 47 2c sthbrx r6,r7,r8 +- 2bc: b6 41 00 0c sthu r18,12\(r1\) +- 2c0: 7e b6 bb 6e sthux r21,r22,r23 +- 2c4: 7d 8d 73 2e sthx r12,r13,r14 +- 2c8: 7f dd fa 79 xor. r29,r30,r31 +- 2cc: 7f dd fa 78 xor r29,r30,r31 +- 2d0: 60 00 00 00 nop +- 2d4: 60 00 00 00 nop +- 2d8: 68 00 00 00 xnop +- 2dc: 68 00 00 00 xnop ++ 0: (7c 83 28 39|39 28 83 7c) and. r3,r4,r5 ++ 4: (7c 83 28 38|38 28 83 7c) and r3,r4,r5 ++ 8: (7d cd 78 78|78 78 cd 7d) andc r13,r14,r15 ++ c: (7e 30 90 79|79 90 30 7e) andc. r16,r17,r18 ++ 10: (48 00 00 02|02 00 00 48) ba 0 ++ 14: (40 01 00 00|00 00 01 40) bdnzf- 1,14 ++ 18: (40 85 00 02|02 00 85 40) blea- 1,0 ++ 1c: (40 43 00 01|01 00 43 40) bdzfl- 3,1c ++ 20: (41 47 00 03|03 00 47 41) bdztla- 7,0 ++ 24: (4e 80 04 20|20 04 80 4e) bctr ++ 28: (4e 80 04 21|21 04 80 4e) bctrl ++ 2c: (42 40 00 02|02 00 40 42) bdza- 0 ++ 30: (42 40 00 00|00 00 40 42) bdz- 30 ++ 34: (42 40 00 03|03 00 40 42) bdzla- 0 ++ 38: (42 40 00 01|01 00 40 42) bdzl- 38 ++ 3c: (41 82 00 00|00 00 82 41) beq- 3c ++ 40: (41 8a 00 02|02 00 8a 41) beqa- 2,0 ++ 44: (41 86 00 01|01 00 86 41) beql- 1,44 ++ 48: (41 8e 00 03|03 00 8e 41) beqla- 3,0 ++ 4c: (40 80 00 00|00 00 80 40) bge- 4c ++ 50: (40 90 00 02|02 00 90 40) bgea- 4,0 ++ 54: (40 88 00 01|01 00 88 40) bgel- 2,54 ++ 58: (40 98 00 03|03 00 98 40) bgela- 6,0 ++ 5c: (41 91 00 00|00 00 91 41) bgt- 4,5c ++ 60: (41 99 00 02|02 00 99 41) bgta- 6,0 ++ 64: (41 95 00 01|01 00 95 41) bgtl- 5,64 ++ 68: (41 9d 00 03|03 00 9d 41) bgtla- 7,0 ++ 6c: (48 00 00 00|00 00 00 48) b 6c ++ 70: (48 00 00 03|03 00 00 48) bla 0 ++ 74: (40 81 00 00|00 00 81 40) ble- 74 ++ 78: (40 91 00 02|02 00 91 40) blea- 4,0 ++ 7c: (40 89 00 01|01 00 89 40) blel- 2,7c ++ 80: (40 99 00 03|03 00 99 40) blela- 6,0 ++ 84: (48 00 00 01|01 00 00 48) bl 84 ++ 88: (41 80 00 00|00 00 80 41) blt- 88 ++ 8c: (41 88 00 02|02 00 88 41) blta- 2,0 ++ 90: (41 84 00 01|01 00 84 41) bltl- 1,90 ++ 94: (41 8c 00 03|03 00 8c 41) bltla- 3,0 ++ 98: (40 82 00 00|00 00 82 40) bne- 98 ++ 9c: (40 8a 00 02|02 00 8a 40) bnea- 2,0 ++ a0: (40 86 00 01|01 00 86 40) bnel- 1,a0 ++ a4: (40 8e 00 03|03 00 8e 40) bnela- 3,0 ++ a8: (40 85 00 00|00 00 85 40) ble- 1,a8 ++ ac: (40 95 00 02|02 00 95 40) blea- 5,0 ++ b0: (40 8d 00 01|01 00 8d 40) blel- 3,b0 ++ b4: (40 9d 00 03|03 00 9d 40) blela- 7,0 ++ b8: (40 84 00 00|00 00 84 40) bge- 1,b8 ++ bc: (40 94 00 02|02 00 94 40) bgea- 5,0 ++ c0: (40 8c 00 01|01 00 8c 40) bgel- 3,c0 ++ c4: (40 9c 00 03|03 00 9c 40) bgela- 7,0 ++ c8: (40 93 00 00|00 00 93 40) bns- 4,c8 ++ cc: (40 9b 00 02|02 00 9b 40) bnsa- 6,0 ++ d0: (40 97 00 01|01 00 97 40) bnsl- 5,d0 ++ d4: (40 9f 00 03|03 00 9f 40) bnsla- 7,0 ++ d8: (41 93 00 00|00 00 93 41) bso- 4,d8 ++ dc: (41 9b 00 02|02 00 9b 41) bsoa- 6,0 ++ e0: (41 97 00 01|01 00 97 41) bsol- 5,e0 ++ e4: (41 9f 00 03|03 00 9f 41) bsola- 7,0 ++ e8: (4c 85 32 02|02 32 85 4c) crand 4,5,6 ++ ec: (4c 64 29 02|02 29 64 4c) crandc 3,4,5 ++ f0: (4c e0 0a 42|42 0a e0 4c) creqv 7,0,1 ++ f4: (4c 22 19 c2|c2 19 22 4c) crnand 1,2,3 ++ f8: (4c 01 10 42|42 10 01 4c) crnor 0,1,2 ++ fc: (4c a6 3b 82|82 3b a6 4c) cror 5,6,7 ++ 100: (4c 43 23 42|42 23 43 4c) crorc 2,3,4 ++ 104: (4c c7 01 82|82 01 c7 4c) crxor 6,7,0 ++ 108: (7d 6a 62 39|39 62 6a 7d) eqv. r10,r11,r12 ++ 10c: (7d 6a 62 38|38 62 6a 7d) eqv r10,r11,r12 ++ 110: (fe a0 fa 11|11 fa a0 fe) fabs. f21,f31 ++ 114: (fe a0 fa 10|10 fa a0 fe) fabs f21,f31 ++ 118: (fd 8a 58 40|40 58 8a fd) fcmpo 3,f10,f11 ++ 11c: (fd 84 28 00|00 28 84 fd) fcmpu 3,f4,f5 ++ 120: (fc 60 20 91|91 20 60 fc) fmr. f3,f4 ++ 124: (fc 60 20 90|90 20 60 fc) fmr f3,f4 ++ 128: (fe 80 f1 11|11 f1 80 fe) fnabs. f20,f30 ++ 12c: (fe 80 f1 10|10 f1 80 fe) fnabs f20,f30 ++ 130: (fc 60 20 51|51 20 60 fc) fneg. f3,f4 ++ 134: (fc 60 20 50|50 20 60 fc) fneg f3,f4 ++ 138: (fc c0 38 18|18 38 c0 fc) frsp f6,f7 ++ 13c: (fd 00 48 19|19 48 00 fd) frsp. f8,f9 ++ 140: (89 21 00 00|00 00 21 89) lbz r9,0\(r1\) ++ 144: (8d 41 00 01|01 00 41 8d) lbzu r10,1\(r1\) ++ 148: (7e 95 b0 ee|ee b0 95 7e) lbzux r20,r21,r22 ++ 14c: (7c 64 28 ae|ae 28 64 7c) lbzx r3,r4,r5 ++ 150: (ca a1 00 08|08 00 a1 ca) lfd f21,8\(r1\) ++ 154: (ce c1 00 10|10 00 c1 ce) lfdu f22,16\(r1\) ++ 158: (7e 95 b4 ee|ee b4 95 7e) lfdux f20,r21,r22 ++ 15c: (7d ae 7c ae|ae 7c ae 7d) lfdx f13,r14,r15 ++ 160: (c2 61 00 00|00 00 61 c2) lfs f19,0\(r1\) ++ 164: (c6 81 00 04|04 00 81 c6) lfsu f20,4\(r1\) ++ 168: (7d 4b 64 6e|6e 64 4b 7d) lfsux f10,r11,r12 ++ 16c: (7d 4b 64 2e|2e 64 4b 7d) lfsx f10,r11,r12 ++ 170: (a9 e1 00 06|06 00 e1 a9) lha r15,6\(r1\) ++ 174: (ae 01 00 08|08 00 01 ae) lhau r16,8\(r1\) ++ 178: (7d 2a 5a ee|ee 5a 2a 7d) lhaux r9,r10,r11 ++ 17c: (7d 2a 5a ae|ae 5a 2a 7d) lhax r9,r10,r11 ++ 180: (7c 64 2e 2c|2c 2e 64 7c) lhbrx r3,r4,r5 ++ 184: (a1 a1 00 00|00 00 a1 a1) lhz r13,0\(r1\) ++ 188: (a5 c1 00 02|02 00 c1 a5) lhzu r14,2\(r1\) ++ 18c: (7e 96 c2 6e|6e c2 96 7e) lhzux r20,r22,r24 ++ 190: (7e f8 ca 2e|2e ca f8 7e) lhzx r23,r24,r25 ++ 194: (4c 04 00 00|00 00 04 4c) mcrf 0,1 ++ 198: (fd 90 00 80|80 00 90 fd) mcrfs 3,4 ++ 19c: (7d 80 04 00|00 04 80 7d) mcrxr 3 ++ 1a0: (7c 60 00 26|26 00 60 7c) mfcr r3 ++ 1a4: (7c 69 02 a6|a6 02 69 7c) mfctr r3 ++ 1a8: (7c b3 02 a6|a6 02 b3 7c) mfdar r5 ++ 1ac: (7c 92 02 a6|a6 02 92 7c) mfdsisr r4 ++ 1b0: (ff c0 04 8e|8e 04 c0 ff) mffs f30 ++ 1b4: (ff e0 04 8f|8f 04 e0 ff) mffs. f31 ++ 1b8: (7c 48 02 a6|a6 02 48 7c) mflr r2 ++ 1bc: (7e 60 00 a6|a6 00 60 7e) mfmsr r19 ++ 1c0: (7c 78 00 26|26 00 78 7c) mfocrf r3,128 ++ 1c4: (7c 25 02 a6|a6 02 25 7c) mfrtcl r1 ++ 1c8: (7c 04 02 a6|a6 02 04 7c) mfrtcu r0 ++ 1cc: (7c d9 02 a6|a6 02 d9 7c) mfsdr1 r6 ++ 1d0: (7c 60 22 a6|a6 22 60 7c) mfspr r3,128 ++ 1d4: (7c fa 02 a6|a6 02 fa 7c) mfsrr0 r7 ++ 1d8: (7d 1b 02 a6|a6 02 1b 7d) mfsrr1 r8 ++ 1dc: (7f c1 02 a6|a6 02 c1 7f) mfxer r30 ++ 1e0: (7f fe fb 79|79 fb fe 7f) mr. r30,r31 ++ 1e4: (7f fe fb 78|78 fb fe 7f) mr r30,r31 ++ 1e8: (7c 6f f1 20|20 f1 6f 7c) mtcr r3 ++ 1ec: (7c 68 01 20|20 01 68 7c) mtcrf 128,r3 ++ 1f0: (7e 69 03 a6|a6 03 69 7e) mtctr r19 ++ 1f4: (7e b3 03 a6|a6 03 b3 7e) mtdar r21 ++ 1f8: (7f 16 03 a6|a6 03 16 7f) mtdec r24 ++ 1fc: (7e 92 03 a6|a6 03 92 7e) mtdsisr r20 ++ 200: (fc 60 00 8d|8d 00 60 fc) mtfsb0. 3 ++ 204: (fc 60 00 8c|8c 00 60 fc) mtfsb0 3 ++ 208: (fc 60 00 4d|4d 00 60 fc) mtfsb1. 3 ++ 20c: (fc 60 00 4c|4c 00 60 fc) mtfsb1 3 ++ 210: (fc 0c 55 8e|8e 55 0c fc) mtfsf 6,f10 ++ 214: (fc 0c 5d 8f|8f 5d 0c fc) mtfsf. 6,f11 ++ 218: (ff 00 01 0c|0c 01 00 ff) mtfsfi 6,0 ++ 21c: (ff 00 f1 0d|0d f1 00 ff) mtfsfi. 6,15 ++ 220: (7e 48 03 a6|a6 03 48 7e) mtlr r18 ++ 224: (7d 40 01 24|24 01 40 7d) mtmsr r10 ++ 228: (7c 78 01 20|20 01 78 7c) mtocrf 128,r3 ++ 22c: (7e f5 03 a6|a6 03 f5 7e) mtrtcl r23 ++ 230: (7e d4 03 a6|a6 03 d4 7e) mtrtcu r22 ++ 234: (7f 39 03 a6|a6 03 39 7f) mtsdr1 r25 ++ 238: (7c 60 23 a6|a6 23 60 7c) mtspr 128,r3 ++ 23c: (7f 5a 03 a6|a6 03 5a 7f) mtsrr0 r26 ++ 240: (7f 7b 03 a6|a6 03 7b 7f) mtsrr1 r27 ++ 244: (7e 21 03 a6|a6 03 21 7e) mtxer r17 ++ 248: (7f bc f3 b9|b9 f3 bc 7f) nand. r28,r29,r30 ++ 24c: (7f bc f3 b8|b8 f3 bc 7f) nand r28,r29,r30 ++ 250: (7c 64 00 d1|d1 00 64 7c) neg. r3,r4 ++ 254: (7c 64 00 d0|d0 00 64 7c) neg r3,r4 ++ 258: (7e 11 04 d0|d0 04 11 7e) nego r16,r17 ++ 25c: (7e 53 04 d1|d1 04 53 7e) nego. r18,r19 ++ 260: (7e b4 b0 f9|f9 b0 b4 7e) nor. r20,r21,r22 ++ 264: (7e b4 b0 f8|f8 b0 b4 7e) nor r20,r21,r22 ++ 268: (7e b4 a8 f9|f9 a8 b4 7e) not. r20,r21 ++ 26c: (7e b4 a8 f8|f8 a8 b4 7e) not r20,r21 ++ 270: (7c 40 23 78|78 23 40 7c) or r0,r2,r4 ++ 274: (7d cc 83 79|79 83 cc 7d) or. r12,r14,r16 ++ 278: (7e 0f 8b 38|38 8b 0f 7e) orc r15,r16,r17 ++ 27c: (7e 72 a3 39|39 a3 72 7e) orc. r18,r19,r20 ++ 280: (4c 00 00 64|64 00 00 4c) rfi ++ 284: (99 61 00 02|02 00 61 99) stb r11,2\(r1\) ++ 288: (9d 81 00 03|03 00 81 9d) stbu r12,3\(r1\) ++ 28c: (7d ae 79 ee|ee 79 ae 7d) stbux r13,r14,r15 ++ 290: (7c 64 29 ae|ae 29 64 7c) stbx r3,r4,r5 ++ 294: (db 21 00 20|20 00 21 db) stfd f25,32\(r1\) ++ 298: (df 41 00 28|28 00 41 df) stfdu f26,40\(r1\) ++ 29c: (7c 01 15 ee|ee 15 01 7c) stfdux f0,r1,r2 ++ 2a0: (7f be fd ae|ae fd be 7f) stfdx f29,r30,r31 ++ 2a4: (d2 e1 00 14|14 00 e1 d2) stfs f23,20\(r1\) ++ 2a8: (d7 01 00 18|18 00 01 d7) stfsu f24,24\(r1\) ++ 2ac: (7f 5b e5 6e|6e e5 5b 7f) stfsux f26,r27,r28 ++ 2b0: (7e f8 cd 2e|2e cd f8 7e) stfsx f23,r24,r25 ++ 2b4: (b2 21 00 0a|0a 00 21 b2) sth r17,10\(r1\) ++ 2b8: (7c c7 47 2c|2c 47 c7 7c) sthbrx r6,r7,r8 ++ 2bc: (b6 41 00 0c|0c 00 41 b6) sthu r18,12\(r1\) ++ 2c0: (7e b6 bb 6e|6e bb b6 7e) sthux r21,r22,r23 ++ 2c4: (7d 8d 73 2e|2e 73 8d 7d) sthx r12,r13,r14 ++ 2c8: (7f dd fa 79|79 fa dd 7f) xor. r29,r30,r31 ++ 2cc: (7f dd fa 78|78 fa dd 7f) xor r29,r30,r31 ++ 2d0: (60 00 00 00|00 00 00 60) nop ++ 2d4: (60 00 00 00|00 00 00 60) nop ++ 2d8: (68 00 00 00|00 00 00 68) xnop ++ 2dc: (68 00 00 00|00 00 00 68) xnop +diff --git a/gas/testsuite/gas/ppc/common.s b/gas/testsuite/gas/ppc/common.s +index f1b6dd7..99c90be 100644 +--- a/gas/testsuite/gas/ppc/common.s ++++ b/gas/testsuite/gas/ppc/common.s +@@ -1,4 +1,4 @@ +- .section ".text" ++ .text + start: + and. 3,4,5 + and 3,4,5 +diff --git a/gas/testsuite/gas/ppc/e500.d b/gas/testsuite/gas/ppc/e500.d +index 19b17db..f82366e 100644 +--- a/gas/testsuite/gas/ppc/e500.d ++++ b/gas/testsuite/gas/ppc/e500.d +@@ -2,55 +2,56 @@ + #objdump: -dr -Me500 + #name: e500 tests + +-.*: +file format elf(32)?(64)?-powerpc.* ++.* + + Disassembly of section \.text: + + 0+0000000 : +- 0: 7c 43 25 de isel r2,r3,r4,23 +- 4: 7c 85 33 0c dcblc 4,r5,r6 +- 8: 7c e8 49 4c dcbtls 7,r8,r9 +- c: 7d 4b 61 0c dcbtstls 10,r11,r12 +- 10: 7d ae 7b cc icbtls 13,r14,r15 +- 14: 7e 11 91 cc icblc 16,r17,r18 +- 18: 7c 89 33 9c mtpmr 201,r4 +- 1c: 7c ab 32 9c mfpmr r5,203 +- 20: 7c 00 04 0c bblels +- 24: 7c 00 04 4c bbelr +- 28: 7d 00 83 a6 mtspefscr r8 +- 2c: 7d 20 82 a6 mfspefscr r9 +- 30: 10 a0 22 cf efscfd r5,r4 +- 34: 10 a4 02 e4 efdabs r5,r4 +- 38: 10 a4 02 e5 efdnabs r5,r4 +- 3c: 10 a4 02 e6 efdneg r5,r4 +- 40: 10 a4 1a e0 efdadd r5,r4,r3 +- 44: 10 a4 1a e1 efdsub r5,r4,r3 +- 48: 10 a4 1a e8 efdmul r5,r4,r3 +- 4c: 10 a4 1a e9 efddiv r5,r4,r3 +- 50: 12 84 1a ec efdcmpgt cr5,r4,r3 +- 54: 12 84 1a ed efdcmplt cr5,r4,r3 +- 58: 12 84 1a ee efdcmpeq cr5,r4,r3 +- 5c: 12 84 1a fc efdtstgt cr5,r4,r3 +- 60: 12 84 1a fc efdtstgt cr5,r4,r3 +- 64: 12 84 1a fd efdtstlt cr5,r4,r3 +- 68: 12 84 1a fe efdtsteq cr5,r4,r3 +- 6c: 10 a0 22 f1 efdcfsi r5,r4 +- 70: 10 a0 22 e3 efdcfsid r5,r4 +- 74: 10 a0 22 f0 efdcfui r5,r4 +- 78: 10 a0 22 e2 efdcfuid r5,r4 +- 7c: 10 a0 22 f3 efdcfsf r5,r4 +- 80: 10 a0 22 f2 efdcfuf r5,r4 +- 84: 10 a0 22 f5 efdctsi r5,r4 +- 88: 10 a0 22 eb efdctsidz r5,r4 +- 8c: 10 a0 22 fa efdctsiz r5,r4 +- 90: 10 a0 22 f4 efdctui r5,r4 +- 94: 10 a0 22 ea efdctuidz r5,r4 +- 98: 10 a0 22 f8 efdctuiz r5,r4 +- 9c: 10 a0 22 f7 efdctsf r5,r4 +- a0: 10 a0 22 f6 efdctuf r5,r4 +- a4: 10 a0 22 ef efdcfs r5,r4 +- a8: 7c 20 06 ac mbar 1 +- ac: 7c 00 06 ac mbar +- b0: 7c 20 06 ac mbar 1 +- b4: 7c 00 04 ac msync +- b8: 7c 00 04 ac msync ++ 0: (7c 43 25 de|de 25 43 7c) isel r2,r3,r4,23 ++ 4: (7c 85 33 0c|0c 33 85 7c) dcblc 4,r5,r6 ++ 8: (7c e8 49 4c|4c 49 e8 7c) dcbtls 7,r8,r9 ++ c: (7d 4b 61 0c|0c 61 4b 7d) dcbtstls 10,r11,r12 ++ 10: (7d ae 7b cc|cc 7b ae 7d) icbtls 13,r14,r15 ++ 14: (7e 11 91 cc|cc 91 11 7e) icblc 16,r17,r18 ++ 18: (7c 89 33 9c|9c 33 89 7c) mtpmr 201,r4 ++ 1c: (7c ab 32 9c|9c 32 ab 7c) mfpmr r5,203 ++ 20: (7c 00 04 0c|0c 04 00 7c) bblels ++ 24: (7c 00 04 4c|4c 04 00 7c) bbelr ++ 28: (7d 00 83 a6|a6 83 00 7d) mtspefscr r8 ++ 2c: (7d 20 82 a6|a6 82 20 7d) mfspefscr r9 ++ 30: (10 a0 22 cf|cf 22 a0 10) efscfd r5,r4 ++ 34: (10 a4 02 e4|e4 02 a4 10) efdabs r5,r4 ++ 38: (10 a4 02 e5|e5 02 a4 10) efdnabs r5,r4 ++ 3c: (10 a4 02 e6|e6 02 a4 10) efdneg r5,r4 ++ 40: (10 a4 1a e0|e0 1a a4 10) efdadd r5,r4,r3 ++ 44: (10 a4 1a e1|e1 1a a4 10) efdsub r5,r4,r3 ++ 48: (10 a4 1a e8|e8 1a a4 10) efdmul r5,r4,r3 ++ 4c: (10 a4 1a e9|e9 1a a4 10) efddiv r5,r4,r3 ++ 50: (12 84 1a ec|ec 1a 84 12) efdcmpgt cr5,r4,r3 ++ 54: (12 84 1a ed|ed 1a 84 12) efdcmplt cr5,r4,r3 ++ 58: (12 84 1a ee|ee 1a 84 12) efdcmpeq cr5,r4,r3 ++ 5c: (12 84 1a fc|fc 1a 84 12) efdtstgt cr5,r4,r3 ++ 60: (12 84 1a fc|fc 1a 84 12) efdtstgt cr5,r4,r3 ++ 64: (12 84 1a fd|fd 1a 84 12) efdtstlt cr5,r4,r3 ++ 68: (12 84 1a fe|fe 1a 84 12) efdtsteq cr5,r4,r3 ++ 6c: (10 a0 22 f1|f1 22 a0 10) efdcfsi r5,r4 ++ 70: (10 a0 22 e3|e3 22 a0 10) efdcfsid r5,r4 ++ 74: (10 a0 22 f0|f0 22 a0 10) efdcfui r5,r4 ++ 78: (10 a0 22 e2|e2 22 a0 10) efdcfuid r5,r4 ++ 7c: (10 a0 22 f3|f3 22 a0 10) efdcfsf r5,r4 ++ 80: (10 a0 22 f2|f2 22 a0 10) efdcfuf r5,r4 ++ 84: (10 a0 22 f5|f5 22 a0 10) efdctsi r5,r4 ++ 88: (10 a0 22 eb|eb 22 a0 10) efdctsidz r5,r4 ++ 8c: (10 a0 22 fa|fa 22 a0 10) efdctsiz r5,r4 ++ 90: (10 a0 22 f4|f4 22 a0 10) efdctui r5,r4 ++ 94: (10 a0 22 ea|ea 22 a0 10) efdctuidz r5,r4 ++ 98: (10 a0 22 f8|f8 22 a0 10) efdctuiz r5,r4 ++ 9c: (10 a0 22 f7|f7 22 a0 10) efdctsf r5,r4 ++ a0: (10 a0 22 f6|f6 22 a0 10) efdctuf r5,r4 ++ a4: (10 a0 22 ef|ef 22 a0 10) efdcfs r5,r4 ++ a8: (7c 20 06 ac|ac 06 20 7c) mbar 1 ++ ac: (7c 00 06 ac|ac 06 00 7c) mbar ++ b0: (7c 20 06 ac|ac 06 20 7c) mbar 1 ++ b4: (7c 00 04 ac|ac 04 00 7c) msync ++ b8: (7c 00 04 ac|ac 04 00 7c) msync ++#pass +diff --git a/gas/testsuite/gas/ppc/e500.s b/gas/testsuite/gas/ppc/e500.s +index c506078..4a5ce17 100644 +--- a/gas/testsuite/gas/ppc/e500.s ++++ b/gas/testsuite/gas/ppc/e500.s +@@ -1,5 +1,5 @@ + # Motorola PowerPC e500 tests +- .section ".text" ++ .text + start: + isel 2, 3, 4, 23 + dcblc 4, 5, 6 +diff --git a/gas/testsuite/gas/ppc/e500mc.d b/gas/testsuite/gas/ppc/e500mc.d +index fedfd14..8866fa8 100644 +--- a/gas/testsuite/gas/ppc/e500mc.d ++++ b/gas/testsuite/gas/ppc/e500mc.d +@@ -2,55 +2,56 @@ + #objdump: -dr -Me500mc + #name: Power E500MC tests + +-.*: +file format elf(32)?(64)?-powerpc.* ++.* + + Disassembly of section \.text: + + 0+00 : +- 0: 4c 00 00 4e rfdi +- 4: 4c 00 00 cc rfgi +- 8: 4c 1f f9 8c dnh 0,1023 +- c: 4f e0 01 8c dnh 31,0 +- 10: 7c 09 57 be icbiep r9,r10 +- 14: 7c 00 69 dc msgclr r13 +- 18: 7c 00 71 9c msgsnd r14 +- 1c: 7c 00 00 7c wait +- 20: 7c 00 00 7c wait +- 24: 7c 20 00 7c waitrsv +- 28: 7c 20 00 7c waitrsv +- 2c: 7c 40 00 7c waitimpl +- 30: 7c 40 00 7c waitimpl +- 34: 7f 9c e3 78 mdors +- 38: 7c 00 02 1c ehpriv +- 3c: 7c 18 cb c6 dsn r24,r25 +- 40: 7c 22 18 be lbepx r1,r2,r3 +- 44: 7c 85 32 3e lhepx r4,r5,r6 +- 48: 7c e8 48 3e lwepx r7,r8,r9 +- 4c: 7d 4b 60 3a ldepx r10,r11,r12 +- 50: 7d ae 7c be lfdepx f13,r14,r15 +- 54: 7e 11 91 be stbepx r16,r17,r18 +- 58: 7e 74 ab 3e sthepx r19,r20,r21 +- 5c: 7e d7 c1 3e stwepx r22,r23,r24 +- 60: 7f 3a d9 3a stdepx r25,r26,r27 +- 64: 7f 9d f5 be stfdepx f28,r29,r30 +- 68: 7c 01 14 06 lbdx r0,r1,r2 +- 6c: 7d 8d 74 46 lhdx r12,r13,r14 +- 70: 7c 64 2c 86 lwdx r3,r4,r5 +- 74: 7f 5b e6 46 lfddx f26,r27,r28 +- 78: 7d f0 8c c6 lddx r15,r16,r17 +- 7c: 7c c7 45 06 stbdx r6,r7,r8 +- 80: 7e 53 a5 46 sthdx r18,r19,r20 +- 84: 7d 2a 5d 86 stwdx r9,r10,r11 +- 88: 7f be ff 46 stfddx f29,r30,r31 +- 8c: 7e b6 bd c6 stddx r21,r22,r23 +- 90: 7c 20 0d ec dcbal 0,r1 +- 94: 7c 26 3f ec dcbzl r6,r7 +- 98: 7c 1f 00 7e dcbstep r31,r0 +- 9c: 7c 01 10 fe dcbfep r1,r2 +- a0: 7c 64 29 fe dcbtstep r3,r4,r5 +- a4: 7c c7 42 7e dcbtep r6,r7,r8 +- a8: 7c 0b 67 fe dcbzep r11,r12 +- ac: 7c 00 00 24 tlbilxlpid +- b0: 7c 20 00 24 tlbilxpid +- b4: 7c 62 18 24 tlbilxva r2,r3 +- b8: 7c 64 28 24 tlbilxva r4,r5 ++ 0: (4c 00 00 4e|4e 00 00 4c) rfdi ++ 4: (4c 00 00 cc|cc 00 00 4c) rfgi ++ 8: (4c 1f f9 8c|8c f9 1f 4c) dnh 0,1023 ++ c: (4f e0 01 8c|8c 01 e0 4f) dnh 31,0 ++ 10: (7c 09 57 be|be 57 09 7c) icbiep r9,r10 ++ 14: (7c 00 69 dc|dc 69 00 7c) msgclr r13 ++ 18: (7c 00 71 9c|9c 71 00 7c) msgsnd r14 ++ 1c: (7c 00 00 7c|7c 00 00 7c) wait ++ 20: (7c 00 00 7c|7c 00 00 7c) wait ++ 24: (7c 20 00 7c|7c 00 20 7c) waitrsv ++ 28: (7c 20 00 7c|7c 00 20 7c) waitrsv ++ 2c: (7c 40 00 7c|7c 00 40 7c) waitimpl ++ 30: (7c 40 00 7c|7c 00 40 7c) waitimpl ++ 34: (7f 9c e3 78|78 e3 9c 7f) mdors ++ 38: (7c 00 02 1c|1c 02 00 7c) ehpriv ++ 3c: (7c 18 cb c6|c6 cb 18 7c) dsn r24,r25 ++ 40: (7c 22 18 be|be 18 22 7c) lbepx r1,r2,r3 ++ 44: (7c 85 32 3e|3e 32 85 7c) lhepx r4,r5,r6 ++ 48: (7c e8 48 3e|3e 48 e8 7c) lwepx r7,r8,r9 ++ 4c: (7d 4b 60 3a|3a 60 4b 7d) ldepx r10,r11,r12 ++ 50: (7d ae 7c be|be 7c ae 7d) lfdepx f13,r14,r15 ++ 54: (7e 11 91 be|be 91 11 7e) stbepx r16,r17,r18 ++ 58: (7e 74 ab 3e|3e ab 74 7e) sthepx r19,r20,r21 ++ 5c: (7e d7 c1 3e|3e c1 d7 7e) stwepx r22,r23,r24 ++ 60: (7f 3a d9 3a|3a d9 3a 7f) stdepx r25,r26,r27 ++ 64: (7f 9d f5 be|be f5 9d 7f) stfdepx f28,r29,r30 ++ 68: (7c 01 14 06|06 14 01 7c) lbdx r0,r1,r2 ++ 6c: (7d 8d 74 46|46 74 8d 7d) lhdx r12,r13,r14 ++ 70: (7c 64 2c 86|86 2c 64 7c) lwdx r3,r4,r5 ++ 74: (7f 5b e6 46|46 e6 5b 7f) lfddx f26,r27,r28 ++ 78: (7d f0 8c c6|c6 8c f0 7d) lddx r15,r16,r17 ++ 7c: (7c c7 45 06|06 45 c7 7c) stbdx r6,r7,r8 ++ 80: (7e 53 a5 46|46 a5 53 7e) sthdx r18,r19,r20 ++ 84: (7d 2a 5d 86|86 5d 2a 7d) stwdx r9,r10,r11 ++ 88: (7f be ff 46|46 ff be 7f) stfddx f29,r30,r31 ++ 8c: (7e b6 bd c6|c6 bd b6 7e) stddx r21,r22,r23 ++ 90: (7c 20 0d ec|ec 0d 20 7c) dcbal 0,r1 ++ 94: (7c 26 3f ec|ec 3f 26 7c) dcbzl r6,r7 ++ 98: (7c 1f 00 7e|7e 00 1f 7c) dcbstep r31,r0 ++ 9c: (7c 01 10 fe|fe 10 01 7c) dcbfep r1,r2 ++ a0: (7c 64 29 fe|fe 29 64 7c) dcbtstep r3,r4,r5 ++ a4: (7c c7 42 7e|7e 42 c7 7c) dcbtep r6,r7,r8 ++ a8: (7c 0b 67 fe|fe 67 0b 7c) dcbzep r11,r12 ++ ac: (7c 00 00 24|24 00 00 7c) tlbilxlpid ++ b0: (7c 20 00 24|24 00 20 7c) tlbilxpid ++ b4: (7c 62 18 24|24 18 62 7c) tlbilxva r2,r3 ++ b8: (7c 64 28 24|24 28 64 7c) tlbilxva r4,r5 ++#pass +diff --git a/gas/testsuite/gas/ppc/e500mc.s b/gas/testsuite/gas/ppc/e500mc.s +index 8d1cec7..84747f3 100644 +--- a/gas/testsuite/gas/ppc/e500mc.s ++++ b/gas/testsuite/gas/ppc/e500mc.s +@@ -1,5 +1,5 @@ + # Power E500MC tests +- .section ".text" ++ .text + start: + rfdi + rfgi +diff --git a/gas/testsuite/gas/ppc/e500mc64_nop.d b/gas/testsuite/gas/ppc/e500mc64_nop.d +index 9cee81f..81ee110 100644 +--- a/gas/testsuite/gas/ppc/e500mc64_nop.d ++++ b/gas/testsuite/gas/ppc/e500mc64_nop.d +@@ -2,12 +2,12 @@ + #objdump: -dr -Me500mc64 + #name: Power E500MC64 nop tests + +-.*: +file format elf(32)?(64)?-powerpc.* ++.* + + Disassembly of section \.text: + + 0+00 : +- 0: 60 00 00 00 nop +- 4: 60 00 00 00 nop +- 8: 60 00 00 00 nop +- c: 60 00 00 00 nop ++ 0: (60 00 00 00|00 00 00 60) nop ++ 4: (60 00 00 00|00 00 00 60) nop ++ 8: (60 00 00 00|00 00 00 60) nop ++ c: (60 00 00 00|00 00 00 60) nop +diff --git a/gas/testsuite/gas/ppc/e500mc64_nop.s b/gas/testsuite/gas/ppc/e500mc64_nop.s +index b63055e..dc3c2ef 100644 +--- a/gas/testsuite/gas/ppc/e500mc64_nop.s ++++ b/gas/testsuite/gas/ppc/e500mc64_nop.s +@@ -1,5 +1,5 @@ + # Power E500MC64 nop tests +- .section ".text" ++ .text + start: + nop + .p2align 4,,15 +diff --git a/gas/testsuite/gas/ppc/e5500_nop.d b/gas/testsuite/gas/ppc/e5500_nop.d +index c76bba5..2cbb949 100644 +--- a/gas/testsuite/gas/ppc/e5500_nop.d ++++ b/gas/testsuite/gas/ppc/e5500_nop.d +@@ -2,12 +2,12 @@ + #objdump: -dr -Me5500 + #name: Power E5500 nop tests + +-.*: +file format elf(32)?(64)?-powerpc.* ++.* + + Disassembly of section \.text: + + 0+00 : +- 0: 60 00 00 00 nop +- 4: 60 00 00 00 nop +- 8: 60 00 00 00 nop +- c: 60 00 00 00 nop ++ 0: (60 00 00 00|00 00 00 60) nop ++ 4: (60 00 00 00|00 00 00 60) nop ++ 8: (60 00 00 00|00 00 00 60) nop ++ c: (60 00 00 00|00 00 00 60) nop +diff --git a/gas/testsuite/gas/ppc/e5500_nop.s b/gas/testsuite/gas/ppc/e5500_nop.s +index f57b8e6..2f39d56 100644 +--- a/gas/testsuite/gas/ppc/e5500_nop.s ++++ b/gas/testsuite/gas/ppc/e5500_nop.s +@@ -1,5 +1,5 @@ + # Power E5500 nop tests +- .section ".text" ++ .text + start: + nop + .p2align 4,,15 +diff --git a/gas/testsuite/gas/ppc/e6500.d b/gas/testsuite/gas/ppc/e6500.d +index 079b35c..48b0001 100644 +--- a/gas/testsuite/gas/ppc/e6500.d ++++ b/gas/testsuite/gas/ppc/e6500.d +@@ -2,74 +2,74 @@ + #objdump: -dr -Me6500 + #name: Power E6500 tests + +-.*: +file format elf(32)?(64)?-powerpc.* ++.* + + Disassembly of section \.text: + + 0+00 : +- 0: 10 01 14 03 vabsdub v0,v1,v2 +- 4: 10 01 14 43 vabsduh v0,v1,v2 +- 8: 10 01 14 83 vabsduw v0,v1,v2 +- c: 7c 01 10 dc mvidsplt v0,r1,r2 +- 10: 7c 01 10 5c mviwsplt v0,r1,r2 +- 14: 7c 00 12 0a lvexbx v0,0,r2 +- 18: 7c 01 12 0a lvexbx v0,r1,r2 +- 1c: 7c 00 12 4a lvexhx v0,0,r2 +- 20: 7c 01 12 4a lvexhx v0,r1,r2 +- 24: 7c 00 12 8a lvexwx v0,0,r2 +- 28: 7c 01 12 8a lvexwx v0,r1,r2 +- 2c: 7c 00 13 0a stvexbx v0,0,r2 +- 30: 7c 01 13 0a stvexbx v0,r1,r2 +- 34: 7c 00 13 4a stvexhx v0,0,r2 +- 38: 7c 01 13 4a stvexhx v0,r1,r2 +- 3c: 7c 00 13 8a stvexwx v0,0,r2 +- 40: 7c 01 13 8a stvexwx v0,r1,r2 +- 44: 7c 00 12 4e lvepx v0,0,r2 +- 48: 7c 01 12 4e lvepx v0,r1,r2 +- 4c: 7c 00 12 0e lvepxl v0,0,r2 +- 50: 7c 01 12 0e lvepxl v0,r1,r2 +- 54: 7c 00 16 4e stvepx v0,0,r2 +- 58: 7c 01 16 4e stvepx v0,r1,r2 +- 5c: 7c 00 16 0e stvepxl v0,0,r2 +- 60: 7c 01 16 0e stvepxl v0,r1,r2 +- 64: 7c 00 14 8a lvtlx v0,0,r2 +- 68: 7c 01 14 8a lvtlx v0,r1,r2 +- 6c: 7c 00 16 8a lvtlxl v0,0,r2 +- 70: 7c 01 16 8a lvtlxl v0,r1,r2 +- 74: 7c 00 14 4a lvtrx v0,0,r2 +- 78: 7c 01 14 4a lvtrx v0,r1,r2 +- 7c: 7c 00 16 4a lvtrxl v0,0,r2 +- 80: 7c 01 16 4a lvtrxl v0,r1,r2 +- 84: 7c 00 15 8a stvflx v0,0,r2 +- 88: 7c 01 15 8a stvflx v0,r1,r2 +- 8c: 7c 00 17 8a stvflxl v0,0,r2 +- 90: 7c 01 17 8a stvflxl v0,r1,r2 +- 94: 7c 00 15 4a stvfrx v0,0,r2 +- 98: 7c 01 15 4a stvfrx v0,r1,r2 +- 9c: 7c 00 17 4a stvfrxl v0,0,r2 +- a0: 7c 01 17 4a stvfrxl v0,r1,r2 +- a4: 7c 00 14 ca lvswx v0,0,r2 +- a8: 7c 01 14 ca lvswx v0,r1,r2 +- ac: 7c 00 16 ca lvswxl v0,0,r2 +- b0: 7c 01 16 ca lvswxl v0,r1,r2 +- b4: 7c 00 15 ca stvswx v0,0,r2 +- b8: 7c 01 15 ca stvswx v0,r1,r2 +- bc: 7c 00 17 ca stvswxl v0,0,r2 +- c0: 7c 01 17 ca stvswxl v0,r1,r2 +- c4: 7c 00 16 0a lvsm v0,0,r2 +- c8: 7c 01 16 0a lvsm v0,r1,r2 +- cc: 7f 5a d3 78 miso +- d0: 7c 00 04 ac sync +- d4: 7c 00 04 ac sync +- d8: 7c 20 04 ac lwsync +- dc: 7c 00 04 ac sync +- e0: 7c 07 04 ac sync 0,7 +- e4: 7c 28 04 ac sync 1,8 +- e8: 7c 00 00 c3 dni 0,0 +- ec: 7f ff 00 c3 dni 31,31 +- f0: 7c 40 0b 4d dcblq. 2,0,r1 +- f4: 7c 43 0b 4d dcblq. 2,r3,r1 +- f8: 7c 40 09 8d icblq. 2,0,r1 +- fc: 7c 43 09 8d icblq. 2,r3,r1 +- 100: 7c 10 02 dc mftmr r0,16 +- 104: 7c 10 03 dc mttmr 16,r0 ++ 0: (10 01 14 03|03 14 01 10) vabsdub v0,v1,v2 ++ 4: (10 01 14 43|43 14 01 10) vabsduh v0,v1,v2 ++ 8: (10 01 14 83|83 14 01 10) vabsduw v0,v1,v2 ++ c: (7c 01 10 dc|dc 10 01 7c) mvidsplt v0,r1,r2 ++ 10: (7c 01 10 5c|5c 10 01 7c) mviwsplt v0,r1,r2 ++ 14: (7c 00 12 0a|0a 12 00 7c) lvexbx v0,0,r2 ++ 18: (7c 01 12 0a|0a 12 01 7c) lvexbx v0,r1,r2 ++ 1c: (7c 00 12 4a|4a 12 00 7c) lvexhx v0,0,r2 ++ 20: (7c 01 12 4a|4a 12 01 7c) lvexhx v0,r1,r2 ++ 24: (7c 00 12 8a|8a 12 00 7c) lvexwx v0,0,r2 ++ 28: (7c 01 12 8a|8a 12 01 7c) lvexwx v0,r1,r2 ++ 2c: (7c 00 13 0a|0a 13 00 7c) stvexbx v0,0,r2 ++ 30: (7c 01 13 0a|0a 13 01 7c) stvexbx v0,r1,r2 ++ 34: (7c 00 13 4a|4a 13 00 7c) stvexhx v0,0,r2 ++ 38: (7c 01 13 4a|4a 13 01 7c) stvexhx v0,r1,r2 ++ 3c: (7c 00 13 8a|8a 13 00 7c) stvexwx v0,0,r2 ++ 40: (7c 01 13 8a|8a 13 01 7c) stvexwx v0,r1,r2 ++ 44: (7c 00 12 4e|4e 12 00 7c) lvepx v0,0,r2 ++ 48: (7c 01 12 4e|4e 12 01 7c) lvepx v0,r1,r2 ++ 4c: (7c 00 12 0e|0e 12 00 7c) lvepxl v0,0,r2 ++ 50: (7c 01 12 0e|0e 12 01 7c) lvepxl v0,r1,r2 ++ 54: (7c 00 16 4e|4e 16 00 7c) stvepx v0,0,r2 ++ 58: (7c 01 16 4e|4e 16 01 7c) stvepx v0,r1,r2 ++ 5c: (7c 00 16 0e|0e 16 00 7c) stvepxl v0,0,r2 ++ 60: (7c 01 16 0e|0e 16 01 7c) stvepxl v0,r1,r2 ++ 64: (7c 00 14 8a|8a 14 00 7c) lvtlx v0,0,r2 ++ 68: (7c 01 14 8a|8a 14 01 7c) lvtlx v0,r1,r2 ++ 6c: (7c 00 16 8a|8a 16 00 7c) lvtlxl v0,0,r2 ++ 70: (7c 01 16 8a|8a 16 01 7c) lvtlxl v0,r1,r2 ++ 74: (7c 00 14 4a|4a 14 00 7c) lvtrx v0,0,r2 ++ 78: (7c 01 14 4a|4a 14 01 7c) lvtrx v0,r1,r2 ++ 7c: (7c 00 16 4a|4a 16 00 7c) lvtrxl v0,0,r2 ++ 80: (7c 01 16 4a|4a 16 01 7c) lvtrxl v0,r1,r2 ++ 84: (7c 00 15 8a|8a 15 00 7c) stvflx v0,0,r2 ++ 88: (7c 01 15 8a|8a 15 01 7c) stvflx v0,r1,r2 ++ 8c: (7c 00 17 8a|8a 17 00 7c) stvflxl v0,0,r2 ++ 90: (7c 01 17 8a|8a 17 01 7c) stvflxl v0,r1,r2 ++ 94: (7c 00 15 4a|4a 15 00 7c) stvfrx v0,0,r2 ++ 98: (7c 01 15 4a|4a 15 01 7c) stvfrx v0,r1,r2 ++ 9c: (7c 00 17 4a|4a 17 00 7c) stvfrxl v0,0,r2 ++ a0: (7c 01 17 4a|4a 17 01 7c) stvfrxl v0,r1,r2 ++ a4: (7c 00 14 ca|ca 14 00 7c) lvswx v0,0,r2 ++ a8: (7c 01 14 ca|ca 14 01 7c) lvswx v0,r1,r2 ++ ac: (7c 00 16 ca|ca 16 00 7c) lvswxl v0,0,r2 ++ b0: (7c 01 16 ca|ca 16 01 7c) lvswxl v0,r1,r2 ++ b4: (7c 00 15 ca|ca 15 00 7c) stvswx v0,0,r2 ++ b8: (7c 01 15 ca|ca 15 01 7c) stvswx v0,r1,r2 ++ bc: (7c 00 17 ca|ca 17 00 7c) stvswxl v0,0,r2 ++ c0: (7c 01 17 ca|ca 17 01 7c) stvswxl v0,r1,r2 ++ c4: (7c 00 16 0a|0a 16 00 7c) lvsm v0,0,r2 ++ c8: (7c 01 16 0a|0a 16 01 7c) lvsm v0,r1,r2 ++ cc: (7f 5a d3 78|78 d3 5a 7f) miso ++ d0: (7c 00 04 ac|ac 04 00 7c) sync ++ d4: (7c 00 04 ac|ac 04 00 7c) sync ++ d8: (7c 20 04 ac|ac 04 20 7c) lwsync ++ dc: (7c 00 04 ac|ac 04 00 7c) sync ++ e0: (7c 07 04 ac|ac 04 07 7c) sync 0,7 ++ e4: (7c 28 04 ac|ac 04 28 7c) sync 1,8 ++ e8: (7c 00 00 c3|c3 00 00 7c) dni 0,0 ++ ec: (7f ff 00 c3|c3 00 ff 7f) dni 31,31 ++ f0: (7c 40 0b 4d|4d 0b 40 7c) dcblq. 2,0,r1 ++ f4: (7c 43 0b 4d|4d 0b 43 7c) dcblq. 2,r3,r1 ++ f8: (7c 40 09 8d|8d 09 40 7c) icblq. 2,0,r1 ++ fc: (7c 43 09 8d|8d 09 43 7c) icblq. 2,r3,r1 ++ 100: (7c 10 02 dc|dc 02 10 7c) mftmr r0,16 ++ 104: (7c 10 03 dc|dc 03 10 7c) mttmr 16,r0 +diff --git a/gas/testsuite/gas/ppc/e6500.s b/gas/testsuite/gas/ppc/e6500.s +index d80a9a1..ceee777 100644 +--- a/gas/testsuite/gas/ppc/e6500.s ++++ b/gas/testsuite/gas/ppc/e6500.s +@@ -1,5 +1,5 @@ + # Power E6500 tests +- .section ".text" ++ .text + start: + vabsdub 0, 1, 2 + vabsduh 0, 1, 2 +diff --git a/gas/testsuite/gas/ppc/e6500_nop.d b/gas/testsuite/gas/ppc/e6500_nop.d +index 875821c..ba7c29e 100644 +--- a/gas/testsuite/gas/ppc/e6500_nop.d ++++ b/gas/testsuite/gas/ppc/e6500_nop.d +@@ -2,12 +2,12 @@ + #objdump: -dr -Me6500 + #name: Power E6500 nop tests + +-.*: +file format elf(32)?(64)?-powerpc.* ++.* + + Disassembly of section \.text: + + 0+00 : +- 0: 60 00 00 00 nop +- 4: 60 00 00 00 nop +- 8: 60 00 00 00 nop +- c: 60 00 00 00 nop ++ 0: (60 00 00 00|00 00 00 60) nop ++ 4: (60 00 00 00|00 00 00 60) nop ++ 8: (60 00 00 00|00 00 00 60) nop ++ c: (60 00 00 00|00 00 00 60) nop +diff --git a/gas/testsuite/gas/ppc/e6500_nop.s b/gas/testsuite/gas/ppc/e6500_nop.s +index 7538a09..0ff853f 100644 +--- a/gas/testsuite/gas/ppc/e6500_nop.s ++++ b/gas/testsuite/gas/ppc/e6500_nop.s +@@ -1,5 +1,5 @@ + # Power E6500 nop tests +- .section ".text" ++ .text + start: + nop + .p2align 4,,15 +diff --git a/gas/testsuite/gas/ppc/machine.d b/gas/testsuite/gas/ppc/machine.d +index 4c21759..7f9b8b4 100644 +--- a/gas/testsuite/gas/ppc/machine.d ++++ b/gas/testsuite/gas/ppc/machine.d +@@ -4,6 +4,6 @@ + .* + + Contents of section \.text: +- 0000 7c11eba6 7c100ba6 4c000066 00000200 .* +- 0010 44000002 4c0000a4 7c000224 4e800020 .* +- 0020 7c11eba6 .* ++ 0000 (7c11eba6|a6eb117c) (7c100ba6|a60b107c) (4c000066|6600004c) (00000200|00020000) .* ++ 0010 (44000002|02000044) (4c0000a4|a400004c) (7c000224|2402007c) (4e800020|2000804e) .* ++ 0020 (7c11eba6|a6eb117c) .* +diff --git a/gas/testsuite/gas/ppc/power4.d b/gas/testsuite/gas/ppc/power4.d +index f5978c8..fa495a1 100644 +--- a/gas/testsuite/gas/ppc/power4.d ++++ b/gas/testsuite/gas/ppc/power4.d +@@ -2,7 +2,7 @@ + #as: -mpower4 + #name: Power4 instructions + +-.*: +file format elf64-powerpc ++.* + .* + architecture: powerpc:common64, flags 0x0+11: + HAS_RELOC, HAS_SYMS +@@ -10,23 +10,23 @@ start address 0x0+ + + Sections: + Idx Name +Size +VMA +LMA +File off +Algn +- +0 \.text +0+dc +0+ +0+ +.* ++ +0 \.text +0+c8 +0+ +0+ +.* + +CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE +- +1 \.data +0+10 +0+ +0+ +.* ++ +1 \.data +0+20 +0+ +0+ +.* + +CONTENTS, ALLOC, LOAD, DATA + +2 \.bss +0+ +0+ +0+ +.* + +ALLOC +- +3 \.toc +0+30 +0+ +0+ +.* ++ +3 \.toc +0+20 +0+ +0+ +.* + +CONTENTS, ALLOC, LOAD, RELOC, DATA + SYMBOL TABLE: + 0+ l +d +\.text 0+ (|\.text) + 0+ l +d +\.data 0+ (|\.data) + 0+ l +d +\.bss 0+ (|\.bss) + 0+ l +\.data 0+ dsym0 +-0+8 l +\.data 0+ dsym1 ++0+10 l +\.data 0+ dsym1 + 0+ l +d +\.toc 0+ (|\.toc) +-0+8 l +\.data 0+ usym0 +-0+10 l +\.data 0+ usym1 ++0+10 l +\.data 0+ usym0 ++0+20 l +\.data 0+ usym1 + 0+ +\*UND\* 0+ esym0 + 0+ +\*UND\* 0+ esym1 + +@@ -34,77 +34,67 @@ SYMBOL TABLE: + Disassembly of section \.text: + + 0+ <\.text>: +- +0: e0 83 00 00 lq r4,0\(r3\) +- 2: R_PPC64_ADDR16_LO_DS \.data +- +4: e0 83 00 00 lq r4,0\(r3\) +- 6: R_PPC64_ADDR16_LO_DS \.data\+0x8 +- +8: e0 83 00 00 lq r4,0\(r3\) +- a: R_PPC64_ADDR16_LO_DS \.data\+0x8 +- +c: e0 83 00 10 lq r4,16\(r3\) +- e: R_PPC64_ADDR16_LO_DS \.data\+0x10 +- +10: e0 83 00 00 lq r4,0\(r3\) +- 12: R_PPC64_ADDR16_LO_DS esym0 +- +14: e0 83 00 00 lq r4,0\(r3\) +- 16: R_PPC64_ADDR16_LO_DS esym1 +- +18: e0 82 00 00 lq r4,0\(r2\) +- 1a: R_PPC64_TOC16_DS \.toc +- +1c: e0 82 00 00 lq r4,0\(r2\) +- 1e: R_PPC64_TOC16_DS \.toc\+0x8 +- +20: e0 82 00 10 lq r4,16\(r2\) +- 22: R_PPC64_TOC16_DS \.toc\+0x10 +- +24: e0 82 00 10 lq r4,16\(r2\) +- 26: R_PPC64_TOC16_DS \.toc\+0x18 +- +28: e0 82 00 20 lq r4,32\(r2\) +- 2a: R_PPC64_TOC16_DS \.toc\+0x20 +- +2c: e0 82 00 20 lq r4,32\(r2\) +- 2e: R_PPC64_TOC16_DS \.toc\+0x28 +- +30: e0 c2 00 20 lq r6,32\(r2\) +- 32: R_PPC64_TOC16_LO_DS \.toc\+0x28 +- +34: e0 80 00 00 lq r4,0\(0\) +- 36: R_PPC64_ADDR16_LO_DS \.text +- +38: e0 c3 00 00 lq r6,0\(r3\) +- 3a: R_PPC64_GOT16_DS dsym0 +- +3c: e0 c3 00 00 lq r6,0\(r3\) +- 3e: R_PPC64_GOT16_LO_DS dsym0 +- +40: e0 c3 00 00 lq r6,0\(r3\) +- 42: R_PPC64_PLT16_LO_DS \.data +- +44: e0 c3 00 00 lq r6,0\(r3\) +- 46: R_PPC64_SECTOFF_DS \.data\+0x8 +- +48: e0 c3 00 00 lq r6,0\(r3\) +- 4a: R_PPC64_SECTOFF_LO_DS \.data\+0x8 +- +4c: e0 c4 00 10 lq r6,16\(r4\) +- +50: f8 c7 00 02 stq r6,0\(r7\) +- +54: f8 c7 00 12 stq r6,16\(r7\) +- +58: f8 c7 ff f2 stq r6,-16\(r7\) +- +5c: f8 c7 80 02 stq r6,-32768\(r7\) +- +60: f8 c7 7f f2 stq r6,32752\(r7\) +- +64: 00 00 02 00 attn +- +68: 7c 6f f1 20 mtcr r3 +- +6c: 7c 6f f1 20 mtcr r3 +- +70: 7c 68 11 20 mtcrf 129,r3 +- +74: 7c 70 11 20 mtocrf 1,r3 +- +78: 7c 70 21 20 mtocrf 2,r3 +- +7c: 7c 70 41 20 mtocrf 4,r3 +- +80: 7c 70 81 20 mtocrf 8,r3 +- +84: 7c 71 01 20 mtocrf 16,r3 +- +88: 7c 72 01 20 mtocrf 32,r3 +- +8c: 7c 74 01 20 mtocrf 64,r3 +- +90: 7c 78 01 20 mtocrf 128,r3 +- +94: 7c 60 00 26 mfcr r3 +- +98: 7c 70 10 26 mfocrf r3,1 +- +9c: 7c 70 20 26 mfocrf r3,2 +- +a0: 7c 70 40 26 mfocrf r3,4 +- +a4: 7c 70 80 26 mfocrf r3,8 +- +a8: 7c 71 00 26 mfocrf r3,16 +- +ac: 7c 72 00 26 mfocrf r3,32 +- +b0: 7c 74 00 26 mfocrf r3,64 +- +b4: 7c 78 00 26 mfocrf r3,128 +- +b8: 7c 01 17 ec dcbz r1,r2 +- +bc: 7c 23 27 ec dcbzl r3,r4 +- +c0: 7c 05 37 ec dcbz r5,r6 +- +c4: e0 40 00 10 lq r2,16\(0\) +- +c8: e0 05 00 10 lq r0,16\(r5\) +- +cc: e0 45 00 10 lq r2,16\(r5\) +- +d0: f8 40 00 12 stq r2,16\(0\) +- +d4: f8 05 00 12 stq r0,16\(r5\) +- +d8: f8 45 00 12 stq r2,16\(r5\) ++.*: (e0 83 00 00|00 00 83 e0) lq r4,0\(r3\) ++.*: R_PPC64_ADDR16_LO_DS \.data ++.*: (e0 83 00 .0|.0 00 83 e0) lq r4,.*\(r3\) ++.*: R_PPC64_ADDR16_LO_DS \.data\+0x10 ++.*: (e0 83 00 .0|.0 00 83 e0) lq r4,.*\(r3\) ++.*: R_PPC64_ADDR16_LO_DS \.data\+0x10 ++.*: (e0 83 00 .0|.0 00 83 e0) lq r4,.*\(r3\) ++.*: R_PPC64_ADDR16_LO_DS \.data\+0x20 ++.*: (e0 83 00 00|00 00 83 e0) lq r4,0\(r3\) ++.*: R_PPC64_ADDR16_LO_DS esym0 ++.*: (e0 83 00 00|00 00 83 e0) lq r4,0\(r3\) ++.*: R_PPC64_ADDR16_LO_DS esym1 ++.*: (e0 82 00 00|00 00 82 e0) lq r4,0\(r2\) ++.*: R_PPC64_TOC16_DS \.toc ++.*: (e0 82 00 .0|.0 00 82 e0) lq r4,.*\(r2\) ++.*: R_PPC64_TOC16_DS \.toc\+0x10 ++.*: (e0 80 00 00|00 00 80 e0) lq r4,0\(0\) ++.*: R_PPC64_ADDR16_LO_DS \.text ++.*: (e0 c3 00 00|00 00 c3 e0) lq r6,0\(r3\) ++.*: R_PPC64_GOT16_DS dsym0 ++.*: (e0 c3 00 00|00 00 c3 e0) lq r6,0\(r3\) ++.*: R_PPC64_GOT16_LO_DS dsym0 ++.*: (e0 c3 00 00|00 00 c3 e0) lq r6,0\(r3\) ++.*: R_PPC64_PLT16_LO_DS \.data ++.*: (e0 c3 00 .0|.0 00 c3 e0) lq r6,.*\(r3\) ++.*: R_PPC64_SECTOFF_DS \.data\+0x10 ++.*: (e0 c3 00 .0|.0 00 c3 e0) lq r6,.*\(r3\) ++.*: R_PPC64_SECTOFF_LO_DS \.data\+0x10 ++.*: (e0 c4 00 20|20 00 c4 e0) lq r6,32\(r4\) ++.*: (f8 c7 00 02|02 00 c7 f8) stq r6,0\(r7\) ++.*: (f8 c7 00 12|12 00 c7 f8) stq r6,16\(r7\) ++.*: (f8 c7 ff f2|f2 ff c7 f8) stq r6,-16\(r7\) ++.*: (f8 c7 80 02|02 80 c7 f8) stq r6,-32768\(r7\) ++.*: (f8 c7 7f f2|f2 7f c7 f8) stq r6,32752\(r7\) ++.*: (00 00 02 00|00 02 00 00) attn ++.*: (7c 6f f1 20|20 f1 6f 7c) mtcr r3 ++.*: (7c 6f f1 20|20 f1 6f 7c) mtcr r3 ++.*: (7c 68 11 20|20 11 68 7c) mtcrf 129,r3 ++.*: (7c 70 11 20|20 11 70 7c) mtocrf 1,r3 ++.*: (7c 70 21 20|20 21 70 7c) mtocrf 2,r3 ++.*: (7c 70 41 20|20 41 70 7c) mtocrf 4,r3 ++.*: (7c 70 81 20|20 81 70 7c) mtocrf 8,r3 ++.*: (7c 71 01 20|20 01 71 7c) mtocrf 16,r3 ++.*: (7c 72 01 20|20 01 72 7c) mtocrf 32,r3 ++.*: (7c 74 01 20|20 01 74 7c) mtocrf 64,r3 ++.*: (7c 78 01 20|20 01 78 7c) mtocrf 128,r3 ++.*: (7c 60 00 26|26 00 60 7c) mfcr r3 ++.*: (7c 70 10 26|26 10 70 7c) mfocrf r3,1 ++.*: (7c 70 20 26|26 20 70 7c) mfocrf r3,2 ++.*: (7c 70 40 26|26 40 70 7c) mfocrf r3,4 ++.*: (7c 70 80 26|26 80 70 7c) mfocrf r3,8 ++.*: (7c 71 00 26|26 00 71 7c) mfocrf r3,16 ++.*: (7c 72 00 26|26 00 72 7c) mfocrf r3,32 ++.*: (7c 74 00 26|26 00 74 7c) mfocrf r3,64 ++.*: (7c 78 00 26|26 00 78 7c) mfocrf r3,128 ++.*: (7c 01 17 ec|ec 17 01 7c) dcbz r1,r2 ++.*: (7c 23 27 ec|ec 27 23 7c) dcbzl r3,r4 ++.*: (7c 05 37 ec|ec 37 05 7c) dcbz r5,r6 ++.*: (e0 40 00 10|10 00 40 e0) lq r2,16\(0\) ++.*: (e0 05 00 10|10 00 05 e0) lq r0,16\(r5\) ++.*: (e0 45 00 10|10 00 45 e0) lq r2,16\(r5\) ++.*: (f8 40 00 12|12 00 40 f8) stq r2,16\(0\) ++.*: (f8 05 00 12|12 00 05 f8) stq r0,16\(r5\) ++.*: (f8 45 00 12|12 00 45 f8) stq r2,16\(r5\) +diff --git a/gas/testsuite/gas/ppc/power4.s b/gas/testsuite/gas/ppc/power4.s +index 7e9042d..7a60f04 100644 +--- a/gas/testsuite/gas/ppc/power4.s ++++ b/gas/testsuite/gas/ppc/power4.s +@@ -1,22 +1,20 @@ +- .section ".data" ++ .data ++ .p2align 4 + dsym0: .llong 0xdeadbeef ++ .llong 0xc0ffee + dsym1: + + .section ".toc" ++ .p2align 4 + .L_tsym0: + .tc ignored0[TC],dsym0 +-.L_tsym1: + .tc ignored1[TC],dsym1 +-.L_tsym2: ++.L_tsym1: + .tc ignored2[TC],usym0 +-.L_tsym3: + .tc ignored3[TC],usym1 +-.L_tsym4: +- .tc ignored4[TC],esym0 +-.L_tsym5: +- .tc ignored5[TC],esym1 + +- .section ".text" ++ .text ++ .p2align 4 + lq 4,dsym0@l(3) + lq 4,dsym1@l(3) + lq 4,usym0@l(3) +@@ -25,11 +23,6 @@ dsym1: + lq 4,esym1@l(3) + lq 4,.L_tsym0@toc(2) + lq 4,.L_tsym1@toc(2) +- lq 4,.L_tsym2@toc(2) +- lq 4,.L_tsym3@toc(2) +- lq 4,.L_tsym4@toc(2) +- lq 4,.L_tsym5@toc(2) +- lq 6,.L_tsym5@toc@l(2) + lq 4,.text@l(0) + lq 6,dsym0@got(3) + lq 6,dsym0@got@l(3) +@@ -81,5 +74,6 @@ dsym1: + + .section ".data" + usym0: .llong 0xcafebabe ++ .llong 0xc0ffee + usym1: + +diff --git a/gas/testsuite/gas/ppc/power4_32.d b/gas/testsuite/gas/ppc/power4_32.d +index 1f2db94..39c80dd 100644 +--- a/gas/testsuite/gas/ppc/power4_32.d ++++ b/gas/testsuite/gas/ppc/power4_32.d +@@ -2,45 +2,46 @@ + #as: -a32 -mpower4 + #name: Power4 instructions + +-.*: +file format elf32-powerpc.* ++.* + + Disassembly of section \.text: + + 0+00 : +- 0: 80 c7 00 00 lwz r6,0\(r7\) +- 4: 80 c7 00 10 lwz r6,16\(r7\) +- 8: 80 c7 ff f0 lwz r6,-16\(r7\) +- c: 80 c7 80 00 lwz r6,-32768\(r7\) +- 10: 80 c7 7f f0 lwz r6,32752\(r7\) +- 14: 90 c7 00 00 stw r6,0\(r7\) +- 18: 90 c7 00 10 stw r6,16\(r7\) +- 1c: 90 c7 ff f0 stw r6,-16\(r7\) +- 20: 90 c7 80 00 stw r6,-32768\(r7\) +- 24: 90 c7 7f f0 stw r6,32752\(r7\) +- 28: 00 00 02 00 attn +- 2c: 7c 6f f1 20 mtcr r3 +- 30: 7c 6f f1 20 mtcr r3 +- 34: 7c 68 11 20 mtcrf 129,r3 +- 38: 7c 70 11 20 mtocrf 1,r3 +- 3c: 7c 70 21 20 mtocrf 2,r3 +- 40: 7c 70 41 20 mtocrf 4,r3 +- 44: 7c 70 81 20 mtocrf 8,r3 +- 48: 7c 71 01 20 mtocrf 16,r3 +- 4c: 7c 72 01 20 mtocrf 32,r3 +- 50: 7c 74 01 20 mtocrf 64,r3 +- 54: 7c 78 01 20 mtocrf 128,r3 +- 58: 7c 60 00 26 mfcr r3 +- 5c: 7c 70 10 26 mfocrf r3,1 +- 60: 7c 70 20 26 mfocrf r3,2 +- 64: 7c 70 40 26 mfocrf r3,4 +- 68: 7c 70 80 26 mfocrf r3,8 +- 6c: 7c 71 00 26 mfocrf r3,16 +- 70: 7c 72 00 26 mfocrf r3,32 +- 74: 7c 74 00 26 mfocrf r3,64 +- 78: 7c 78 00 26 mfocrf r3,128 +- 7c: 7c 01 17 ec dcbz r1,r2 +- 80: 7c 23 27 ec dcbzl r3,r4 +- 84: 7c 05 37 ec dcbz r5,r6 +- 88: 7c 05 32 2c dcbt r5,r6 +- 8c: 7c 05 32 2c dcbt r5,r6 +- 90: 7d 05 32 2c dcbt r5,r6,8 ++ 0: (80 c7 00 00|00 00 c7 80) lwz r6,0\(r7\) ++ 4: (80 c7 00 10|10 00 c7 80) lwz r6,16\(r7\) ++ 8: (80 c7 ff f0|f0 ff c7 80) lwz r6,-16\(r7\) ++ c: (80 c7 80 00|00 80 c7 80) lwz r6,-32768\(r7\) ++ 10: (80 c7 7f f0|f0 7f c7 80) lwz r6,32752\(r7\) ++ 14: (90 c7 00 00|00 00 c7 90) stw r6,0\(r7\) ++ 18: (90 c7 00 10|10 00 c7 90) stw r6,16\(r7\) ++ 1c: (90 c7 ff f0|f0 ff c7 90) stw r6,-16\(r7\) ++ 20: (90 c7 80 00|00 80 c7 90) stw r6,-32768\(r7\) ++ 24: (90 c7 7f f0|f0 7f c7 90) stw r6,32752\(r7\) ++ 28: (00 00 02 00|00 02 00 00) attn ++ 2c: (7c 6f f1 20|20 f1 6f 7c) mtcr r3 ++ 30: (7c 6f f1 20|20 f1 6f 7c) mtcr r3 ++ 34: (7c 68 11 20|20 11 68 7c) mtcrf 129,r3 ++ 38: (7c 70 11 20|20 11 70 7c) mtocrf 1,r3 ++ 3c: (7c 70 21 20|20 21 70 7c) mtocrf 2,r3 ++ 40: (7c 70 41 20|20 41 70 7c) mtocrf 4,r3 ++ 44: (7c 70 81 20|20 81 70 7c) mtocrf 8,r3 ++ 48: (7c 71 01 20|20 01 71 7c) mtocrf 16,r3 ++ 4c: (7c 72 01 20|20 01 72 7c) mtocrf 32,r3 ++ 50: (7c 74 01 20|20 01 74 7c) mtocrf 64,r3 ++ 54: (7c 78 01 20|20 01 78 7c) mtocrf 128,r3 ++ 58: (7c 60 00 26|26 00 60 7c) mfcr r3 ++ 5c: (7c 70 10 26|26 10 70 7c) mfocrf r3,1 ++ 60: (7c 70 20 26|26 20 70 7c) mfocrf r3,2 ++ 64: (7c 70 40 26|26 40 70 7c) mfocrf r3,4 ++ 68: (7c 70 80 26|26 80 70 7c) mfocrf r3,8 ++ 6c: (7c 71 00 26|26 00 71 7c) mfocrf r3,16 ++ 70: (7c 72 00 26|26 00 72 7c) mfocrf r3,32 ++ 74: (7c 74 00 26|26 00 74 7c) mfocrf r3,64 ++ 78: (7c 78 00 26|26 00 78 7c) mfocrf r3,128 ++ 7c: (7c 01 17 ec|ec 17 01 7c) dcbz r1,r2 ++ 80: (7c 23 27 ec|ec 27 23 7c) dcbzl r3,r4 ++ 84: (7c 05 37 ec|ec 37 05 7c) dcbz r5,r6 ++ 88: (7c 05 32 2c|2c 32 05 7c) dcbt r5,r6 ++ 8c: (7c 05 32 2c|2c 32 05 7c) dcbt r5,r6 ++ 90: (7d 05 32 2c|2c 32 05 7d) dcbt r5,r6,8 ++#pass +diff --git a/gas/testsuite/gas/ppc/power4_32.s b/gas/testsuite/gas/ppc/power4_32.s +index a2fd6a6..f5c1893 100644 +--- a/gas/testsuite/gas/ppc/power4_32.s ++++ b/gas/testsuite/gas/ppc/power4_32.s +@@ -1,4 +1,4 @@ +- .section ".text" ++ .text + start: + lwz 6,0(7) + lwz 6,16(7) +diff --git a/gas/testsuite/gas/ppc/power6.d b/gas/testsuite/gas/ppc/power6.d +index 76ed7c7..e214501 100644 +--- a/gas/testsuite/gas/ppc/power6.d ++++ b/gas/testsuite/gas/ppc/power6.d +@@ -2,72 +2,73 @@ + #objdump: -dr -Mpower6 + #name: POWER6 tests (includes DFP and Altivec) + +-.*: +file format elf32-powerpc.* ++.* + + Disassembly of section \.text: + + 0+00 : +- 0: 4c 00 03 24 doze +- 4: 4c 00 03 64 nap +- 8: 4c 00 03 a4 sleep +- c: 4c 00 03 e4 rvwinkle +- 10: 7c 83 01 34 prtyw r3,r4 +- 14: 7d cd 01 74 prtyd r13,r14 +- 18: 7d 5c 02 a6 mfcfar r10 +- 1c: 7d 7c 03 a6 mtcfar r11 +- 20: 7c 83 2b f8 cmpb r3,r4,r5 +- 24: 7c c0 3c be mffgpr f6,r7 +- 28: 7d 00 4d be mftgpr r8,f9 +- 2c: 7d 4b 66 2a lwzcix r10,r11,r12 +- 30: 7d 8e 7e 2e lfdpx f12,r14,r15 +- 34: ee 11 90 04 dadd f16,f17,f18 +- 38: fe 96 c0 04 daddq f20,f22,f24 +- 3c: 7c 60 06 6c dss 3 +- 40: 7e 00 06 6c dssall +- 44: 7c 25 22 ac dst r5,r4,1 +- 48: 7e 08 3a ac dstt r8,r7,0 +- 4c: 7c 65 32 ec dstst r5,r6,3 +- 50: 7e 44 2a ec dststt r4,r5,2 +- 54: 00 00 02 00 attn +- 58: 7c 6f f1 20 mtcr r3 +- 5c: 7c 6f f1 20 mtcr r3 +- 60: 7c 68 11 20 mtcrf 129,r3 +- 64: 7c 70 11 20 mtocrf 1,r3 +- 68: 7c 70 21 20 mtocrf 2,r3 +- 6c: 7c 70 41 20 mtocrf 4,r3 +- 70: 7c 70 81 20 mtocrf 8,r3 +- 74: 7c 71 01 20 mtocrf 16,r3 +- 78: 7c 72 01 20 mtocrf 32,r3 +- 7c: 7c 74 01 20 mtocrf 64,r3 +- 80: 7c 78 01 20 mtocrf 128,r3 +- 84: 7c 60 00 26 mfcr r3 +- 88: 7c 70 10 26 mfocrf r3,1 +- 8c: 7c 70 20 26 mfocrf r3,2 +- 90: 7c 70 40 26 mfocrf r3,4 +- 94: 7c 70 80 26 mfocrf r3,8 +- 98: 7c 71 00 26 mfocrf r3,16 +- 9c: 7c 72 00 26 mfocrf r3,32 +- a0: 7c 74 00 26 mfocrf r3,64 +- a4: 7c 78 00 26 mfocrf r3,128 +- a8: 7c 01 17 ec dcbz r1,r2 +- ac: 7c 23 27 ec dcbzl r3,r4 +- b0: 7c 05 37 ec dcbz r5,r6 +- b4: fc 0c 55 8e mtfsf 6,f10 +- b8: fc 0c 5d 8f mtfsf. 6,f11 +- bc: fc 0c 55 8e mtfsf 6,f10 +- c0: fc 0c 5d 8f mtfsf. 6,f11 +- c4: fc 0d 55 8e mtfsf 6,f10,0,1 +- c8: fc 0d 5d 8f mtfsf. 6,f11,0,1 +- cc: fe 0c 55 8e mtfsf 6,f10,1,0 +- d0: fe 0c 5d 8f mtfsf. 6,f11,1,0 +- d4: ff 00 01 0c mtfsfi 6,0 +- d8: ff 00 f1 0d mtfsfi. 6,15 +- dc: ff 00 01 0c mtfsfi 6,0 +- e0: ff 00 f1 0d mtfsfi. 6,15 +- e4: ff 01 01 0c mtfsfi 6,0,1 +- e8: ff 01 f1 0d mtfsfi. 6,15,1 +- ec: 7d 6a 02 74 cbcdtd r10,r11 +- f0: 7d 6a 02 34 cdtbcd r10,r11 +- f4: 7d 4b 60 94 addg6s r10,r11,r12 +- f8: 60 21 00 00 ori r1,r1,0 +- fc: 60 21 00 00 ori r1,r1,0 ++ 0: (4c 00 03 24|24 03 00 4c) doze ++ 4: (4c 00 03 64|64 03 00 4c) nap ++ 8: (4c 00 03 a4|a4 03 00 4c) sleep ++ c: (4c 00 03 e4|e4 03 00 4c) rvwinkle ++ 10: (7c 83 01 34|34 01 83 7c) prtyw r3,r4 ++ 14: (7d cd 01 74|74 01 cd 7d) prtyd r13,r14 ++ 18: (7d 5c 02 a6|a6 02 5c 7d) mfcfar r10 ++ 1c: (7d 7c 03 a6|a6 03 7c 7d) mtcfar r11 ++ 20: (7c 83 2b f8|f8 2b 83 7c) cmpb r3,r4,r5 ++ 24: (7c c0 3c be|be 3c c0 7c) mffgpr f6,r7 ++ 28: (7d 00 4d be|be 4d 00 7d) mftgpr r8,f9 ++ 2c: (7d 4b 66 2a|2a 66 4b 7d) lwzcix r10,r11,r12 ++ 30: (7d 8e 7e 2e|2e 7e 8e 7d) lfdpx f12,r14,r15 ++ 34: (ee 11 90 04|04 90 11 ee) dadd f16,f17,f18 ++ 38: (fe 96 c0 04|04 c0 96 fe) daddq f20,f22,f24 ++ 3c: (7c 60 06 6c|6c 06 60 7c) dss 3 ++ 40: (7e 00 06 6c|6c 06 00 7e) dssall ++ 44: (7c 25 22 ac|ac 22 25 7c) dst r5,r4,1 ++ 48: (7e 08 3a ac|ac 3a 08 7e) dstt r8,r7,0 ++ 4c: (7c 65 32 ec|ec 32 65 7c) dstst r5,r6,3 ++ 50: (7e 44 2a ec|ec 2a 44 7e) dststt r4,r5,2 ++ 54: (00 00 02 00|00 02 00 00) attn ++ 58: (7c 6f f1 20|20 f1 6f 7c) mtcr r3 ++ 5c: (7c 6f f1 20|20 f1 6f 7c) mtcr r3 ++ 60: (7c 68 11 20|20 11 68 7c) mtcrf 129,r3 ++ 64: (7c 70 11 20|20 11 70 7c) mtocrf 1,r3 ++ 68: (7c 70 21 20|20 21 70 7c) mtocrf 2,r3 ++ 6c: (7c 70 41 20|20 41 70 7c) mtocrf 4,r3 ++ 70: (7c 70 81 20|20 81 70 7c) mtocrf 8,r3 ++ 74: (7c 71 01 20|20 01 71 7c) mtocrf 16,r3 ++ 78: (7c 72 01 20|20 01 72 7c) mtocrf 32,r3 ++ 7c: (7c 74 01 20|20 01 74 7c) mtocrf 64,r3 ++ 80: (7c 78 01 20|20 01 78 7c) mtocrf 128,r3 ++ 84: (7c 60 00 26|26 00 60 7c) mfcr r3 ++ 88: (7c 70 10 26|26 10 70 7c) mfocrf r3,1 ++ 8c: (7c 70 20 26|26 20 70 7c) mfocrf r3,2 ++ 90: (7c 70 40 26|26 40 70 7c) mfocrf r3,4 ++ 94: (7c 70 80 26|26 80 70 7c) mfocrf r3,8 ++ 98: (7c 71 00 26|26 00 71 7c) mfocrf r3,16 ++ 9c: (7c 72 00 26|26 00 72 7c) mfocrf r3,32 ++ a0: (7c 74 00 26|26 00 74 7c) mfocrf r3,64 ++ a4: (7c 78 00 26|26 00 78 7c) mfocrf r3,128 ++ a8: (7c 01 17 ec|ec 17 01 7c) dcbz r1,r2 ++ ac: (7c 23 27 ec|ec 27 23 7c) dcbzl r3,r4 ++ b0: (7c 05 37 ec|ec 37 05 7c) dcbz r5,r6 ++ b4: (fc 0c 55 8e|8e 55 0c fc) mtfsf 6,f10 ++ b8: (fc 0c 5d 8f|8f 5d 0c fc) mtfsf. 6,f11 ++ bc: (fc 0c 55 8e|8e 55 0c fc) mtfsf 6,f10 ++ c0: (fc 0c 5d 8f|8f 5d 0c fc) mtfsf. 6,f11 ++ c4: (fc 0d 55 8e|8e 55 0d fc) mtfsf 6,f10,0,1 ++ c8: (fc 0d 5d 8f|8f 5d 0d fc) mtfsf. 6,f11,0,1 ++ cc: (fe 0c 55 8e|8e 55 0c fe) mtfsf 6,f10,1,0 ++ d0: (fe 0c 5d 8f|8f 5d 0c fe) mtfsf. 6,f11,1,0 ++ d4: (ff 00 01 0c|0c 01 00 ff) mtfsfi 6,0 ++ d8: (ff 00 f1 0d|0d f1 00 ff) mtfsfi. 6,15 ++ dc: (ff 00 01 0c|0c 01 00 ff) mtfsfi 6,0 ++ e0: (ff 00 f1 0d|0d f1 00 ff) mtfsfi. 6,15 ++ e4: (ff 01 01 0c|0c 01 01 ff) mtfsfi 6,0,1 ++ e8: (ff 01 f1 0d|0d f1 01 ff) mtfsfi. 6,15,1 ++ ec: (7d 6a 02 74|74 02 6a 7d) cbcdtd r10,r11 ++ f0: (7d 6a 02 34|34 02 6a 7d) cdtbcd r10,r11 ++ f4: (7d 4b 60 94|94 60 4b 7d) addg6s r10,r11,r12 ++ f8: (60 21 00 00|00 00 21 60) ori r1,r1,0 ++ fc: (60 21 00 00|00 00 21 60) ori r1,r1,0 ++#pass +diff --git a/gas/testsuite/gas/ppc/power6.s b/gas/testsuite/gas/ppc/power6.s +index b84987d..21bd66e 100644 +--- a/gas/testsuite/gas/ppc/power6.s ++++ b/gas/testsuite/gas/ppc/power6.s +@@ -1,6 +1,6 @@ + # PowerPC POWER6 AltiVec tests + #as: -mpower6 +- .section ".text" ++ .text + start: + doze + nap +diff --git a/gas/testsuite/gas/ppc/power7.d b/gas/testsuite/gas/ppc/power7.d +index 748da55..602da4b 100644 +--- a/gas/testsuite/gas/ppc/power7.d ++++ b/gas/testsuite/gas/ppc/power7.d +@@ -2,118 +2,123 @@ + #objdump: -dr -Mpower7 + #name: POWER7 tests (includes DFP, Altivec and VSX) + +-.*: +file format elf(32)?(64)?-powerpc.* ++.* + + Disassembly of section \.text: + + 0+00 : +- 0: 7c 64 2e 98 lxvd2x vs3,r4,r5 +- 4: 7d 64 2e 99 lxvd2x vs43,r4,r5 +- 8: 7c 64 2f 98 stxvd2x vs3,r4,r5 +- c: 7d 64 2f 99 stxvd2x vs43,r4,r5 +- 10: f0 64 28 50 xxmrghd vs3,vs4,vs5 +- 14: f1 6c 68 57 xxmrghd vs43,vs44,vs45 +- 18: f0 64 2b 50 xxmrgld vs3,vs4,vs5 +- 1c: f1 6c 6b 57 xxmrgld vs43,vs44,vs45 +- 20: f0 64 28 50 xxmrghd vs3,vs4,vs5 +- 24: f1 6c 68 57 xxmrghd vs43,vs44,vs45 +- 28: f0 64 2b 50 xxmrgld vs3,vs4,vs5 +- 2c: f1 6c 6b 57 xxmrgld vs43,vs44,vs45 +- 30: f0 64 29 50 xxpermdi vs3,vs4,vs5,1 +- 34: f1 6c 69 57 xxpermdi vs43,vs44,vs45,1 +- 38: f0 64 2a 50 xxpermdi vs3,vs4,vs5,2 +- 3c: f1 6c 6a 57 xxpermdi vs43,vs44,vs45,2 +- 40: f0 64 27 80 xvmovdp vs3,vs4 +- 44: f1 6c 67 87 xvmovdp vs43,vs44 +- 48: f0 64 27 80 xvmovdp vs3,vs4 +- 4c: f1 6c 67 87 xvmovdp vs43,vs44 +- 50: f0 64 2f 80 xvcpsgndp vs3,vs4,vs5 +- 54: f1 6c 6f 87 xvcpsgndp vs43,vs44,vs45 +- 58: 7c 00 00 7c wait +- 5c: 7c 00 00 7c wait +- 60: 7c 20 00 7c waitrsv +- 64: 7c 20 00 7c waitrsv +- 68: 7c 40 00 7c waitimpl +- 6c: 7c 40 00 7c waitimpl +- 70: 4c 00 03 24 doze +- 74: 4c 00 03 64 nap +- 78: 4c 00 03 a4 sleep +- 7c: 4c 00 03 e4 rvwinkle +- 80: 7c 83 01 34 prtyw r3,r4 +- 84: 7d cd 01 74 prtyd r13,r14 +- 88: 7d 5c 02 a6 mfcfar r10 +- 8c: 7d 7c 03 a6 mtcfar r11 +- 90: 7c 83 2b f8 cmpb r3,r4,r5 +- 94: 7d 4b 66 2a lwzcix r10,r11,r12 +- 98: ee 11 90 04 dadd f16,f17,f18 +- 9c: fe 96 c0 04 daddq f20,f22,f24 +- a0: 7c 60 06 6c dss 3 +- a4: 7e 00 06 6c dssall +- a8: 7c 25 22 ac dst r5,r4,1 +- ac: 7e 08 3a ac dstt r8,r7,0 +- b0: 7c 65 32 ec dstst r5,r6,3 +- b4: 7e 44 2a ec dststt r4,r5,2 +- b8: 7d 4b 63 56 divwe r10,r11,r12 +- bc: 7d 6c 6b 57 divwe\. r11,r12,r13 +- c0: 7d 8d 77 56 divweo r12,r13,r14 +- c4: 7d ae 7f 57 divweo\. r13,r14,r15 +- c8: 7d 4b 63 16 divweu r10,r11,r12 +- cc: 7d 6c 6b 17 divweu\. r11,r12,r13 +- d0: 7d 8d 77 16 divweuo r12,r13,r14 +- d4: 7d ae 7f 17 divweuo\. r13,r14,r15 +- d8: 7e 27 d9 f8 bpermd r7,r17,r27 +- dc: 7e 8a 02 f4 popcntw r10,r20 +- e0: 7e 8a 03 f4 popcntd r10,r20 +- e4: 7e 95 b4 28 ldbrx r20,r21,r22 +- e8: 7e 95 b5 28 stdbrx r20,r21,r22 +- ec: 7d 40 56 ee lfiwzx f10,0,r10 +- f0: 7d 49 56 ee lfiwzx f10,r9,r10 +- f4: ec 80 2e 9c fcfids f4,f5 +- f8: ec 80 2e 9d fcfids\. f4,f5 +- fc: ec 80 2f 9c fcfidus f4,f5 +- 100: ec 80 2f 9d fcfidus\. f4,f5 +- 104: fc 80 29 1c fctiwu f4,f5 +- 108: fc 80 29 1d fctiwu\. f4,f5 +- 10c: fc 80 29 1e fctiwuz f4,f5 +- 110: fc 80 29 1f fctiwuz\. f4,f5 +- 114: fc 80 2f 5c fctidu f4,f5 +- 118: fc 80 2f 5d fctidu\. f4,f5 +- 11c: fc 80 2f 5e fctiduz f4,f5 +- 120: fc 80 2f 5f fctiduz\. f4,f5 +- 124: fc 80 2f 9c fcfidu f4,f5 +- 128: fc 80 2f 9d fcfidu\. f4,f5 +- 12c: fc 0a 59 00 ftdiv cr0,f10,f11 +- 130: ff 8a 59 00 ftdiv cr7,f10,f11 +- 134: fc 00 51 40 ftsqrt cr0,f10 +- 138: ff 80 51 40 ftsqrt cr7,f10 +- 13c: 7e 08 4a 2c dcbtt r8,r9 +- 140: 7e 08 49 ec dcbtstt r8,r9 +- 144: ed 40 66 44 dcffix f10,f12 +- 148: ee 80 b6 45 dcffix\. f20,f22 +- 14c: 7d 4b 60 68 lbarx r10,r11,r12 +- 150: 7d 4b 60 68 lbarx r10,r11,r12 +- 154: 7d 4b 60 69 lbarx r10,r11,r12,1 +- 158: 7e 95 b0 e8 lharx r20,r21,r22 +- 15c: 7e 95 b0 e8 lharx r20,r21,r22 +- 160: 7e 95 b0 e9 lharx r20,r21,r22,1 +- 164: 7d 4b 65 6d stbcx\. r10,r11,r12 +- 168: 7d 4b 65 ad sthcx\. r10,r11,r12 +- 16c: fd c0 78 30 fre f14,f15 +- 170: fd c0 78 31 fre\. f14,f15 +- 174: ed c0 78 30 fres f14,f15 +- 178: ed c0 78 31 fres\. f14,f15 +- 17c: fd c0 78 34 frsqrte f14,f15 +- 180: fd c0 78 35 frsqrte\. f14,f15 +- 184: ed c0 78 34 frsqrtes f14,f15 +- 188: ed c0 78 35 frsqrtes\. f14,f15 +- 18c: 7c 43 27 1e isel r2,r3,r4,28 +- 190: 60 42 00 00 ori r2,r2,0 +- 194: 60 00 00 00 nop +- 198: 60 00 00 00 nop +- 19c: 60 42 00 00 ori r2,r2,0 +- 1a0: 7f 7b db 78 yield +- 1a4: 7f 7b db 78 yield +- 1a8: 7f bd eb 78 mdoio +- 1ac: 7f bd eb 78 mdoio +- 1b0: 7f de f3 78 mdoom +- 1b4: 7f de f3 78 mdoom ++ 0: (7c 64 2e 98|98 2e 64 7c) lxvd2x vs3,r4,r5 ++ 4: (7d 64 2e 99|99 2e 64 7d) lxvd2x vs43,r4,r5 ++ 8: (7c 64 2f 98|98 2f 64 7c) stxvd2x vs3,r4,r5 ++ c: (7d 64 2f 99|99 2f 64 7d) stxvd2x vs43,r4,r5 ++ 10: (f0 64 28 50|50 28 64 f0) xxmrghd vs3,vs4,vs5 ++ 14: (f1 6c 68 57|57 68 6c f1) xxmrghd vs43,vs44,vs45 ++ 18: (f0 64 2b 50|50 2b 64 f0) xxmrgld vs3,vs4,vs5 ++ 1c: (f1 6c 6b 57|57 6b 6c f1) xxmrgld vs43,vs44,vs45 ++ 20: (f0 64 28 50|50 28 64 f0) xxmrghd vs3,vs4,vs5 ++ 24: (f1 6c 68 57|57 68 6c f1) xxmrghd vs43,vs44,vs45 ++ 28: (f0 64 2b 50|50 2b 64 f0) xxmrgld vs3,vs4,vs5 ++ 2c: (f1 6c 6b 57|57 6b 6c f1) xxmrgld vs43,vs44,vs45 ++ 30: (f0 64 29 50|50 29 64 f0) xxpermdi vs3,vs4,vs5,1 ++ 34: (f1 6c 69 57|57 69 6c f1) xxpermdi vs43,vs44,vs45,1 ++ 38: (f0 64 2a 50|50 2a 64 f0) xxpermdi vs3,vs4,vs5,2 ++ 3c: (f1 6c 6a 57|57 6a 6c f1) xxpermdi vs43,vs44,vs45,2 ++ 40: (f0 64 27 80|80 27 64 f0) xvmovdp vs3,vs4 ++ 44: (f1 6c 67 87|87 67 6c f1) xvmovdp vs43,vs44 ++ 48: (f0 64 27 80|80 27 64 f0) xvmovdp vs3,vs4 ++ 4c: (f1 6c 67 87|87 67 6c f1) xvmovdp vs43,vs44 ++ 50: (f0 64 2f 80|80 2f 64 f0) xvcpsgndp vs3,vs4,vs5 ++ 54: (f1 6c 6f 87|87 6f 6c f1) xvcpsgndp vs43,vs44,vs45 ++ 58: (7c 00 00 7c|7c 00 00 7c) wait ++ 5c: (7c 00 00 7c|7c 00 00 7c) wait ++ 60: (7c 20 00 7c|7c 00 20 7c) waitrsv ++ 64: (7c 20 00 7c|7c 00 20 7c) waitrsv ++ 68: (7c 40 00 7c|7c 00 40 7c) waitimpl ++ 6c: (7c 40 00 7c|7c 00 40 7c) waitimpl ++ 70: (4c 00 03 24|24 03 00 4c) doze ++ 74: (4c 00 03 64|64 03 00 4c) nap ++ 78: (4c 00 03 a4|a4 03 00 4c) sleep ++ 7c: (4c 00 03 e4|e4 03 00 4c) rvwinkle ++ 80: (7c 83 01 34|34 01 83 7c) prtyw r3,r4 ++ 84: (7d cd 01 74|74 01 cd 7d) prtyd r13,r14 ++ 88: (7d 5c 02 a6|a6 02 5c 7d) mfcfar r10 ++ 8c: (7d 7c 03 a6|a6 03 7c 7d) mtcfar r11 ++ 90: (7c 83 2b f8|f8 2b 83 7c) cmpb r3,r4,r5 ++ 94: (7d 4b 66 2a|2a 66 4b 7d) lwzcix r10,r11,r12 ++ 98: (ee 11 90 04|04 90 11 ee) dadd f16,f17,f18 ++ 9c: (fe 96 c0 04|04 c0 96 fe) daddq f20,f22,f24 ++ a0: (7c 60 06 6c|6c 06 60 7c) dss 3 ++ a4: (7e 00 06 6c|6c 06 00 7e) dssall ++ a8: (7c 25 22 ac|ac 22 25 7c) dst r5,r4,1 ++ ac: (7e 08 3a ac|ac 3a 08 7e) dstt r8,r7,0 ++ b0: (7c 65 32 ec|ec 32 65 7c) dstst r5,r6,3 ++ b4: (7e 44 2a ec|ec 2a 44 7e) dststt r4,r5,2 ++ b8: (7d 4b 63 56|56 63 4b 7d) divwe r10,r11,r12 ++ bc: (7d 6c 6b 57|57 6b 6c 7d) divwe\. r11,r12,r13 ++ c0: (7d 8d 77 56|56 77 8d 7d) divweo r12,r13,r14 ++ c4: (7d ae 7f 57|57 7f ae 7d) divweo\. r13,r14,r15 ++ c8: (7d 4b 63 16|16 63 4b 7d) divweu r10,r11,r12 ++ cc: (7d 6c 6b 17|17 6b 6c 7d) divweu\. r11,r12,r13 ++ d0: (7d 8d 77 16|16 77 8d 7d) divweuo r12,r13,r14 ++ d4: (7d ae 7f 17|17 7f ae 7d) divweuo\. r13,r14,r15 ++ d8: (7e 27 d9 f8|f8 d9 27 7e) bpermd r7,r17,r27 ++ dc: (7e 8a 02 f4|f4 02 8a 7e) popcntw r10,r20 ++ e0: (7e 8a 03 f4|f4 03 8a 7e) popcntd r10,r20 ++ e4: (7e 95 b4 28|28 b4 95 7e) ldbrx r20,r21,r22 ++ e8: (7e 95 b5 28|28 b5 95 7e) stdbrx r20,r21,r22 ++ ec: (7d 40 56 ee|ee 56 40 7d) lfiwzx f10,0,r10 ++ f0: (7d 49 56 ee|ee 56 49 7d) lfiwzx f10,r9,r10 ++ f4: (ec 80 2e 9c|9c 2e 80 ec) fcfids f4,f5 ++ f8: (ec 80 2e 9d|9d 2e 80 ec) fcfids\. f4,f5 ++ fc: (ec 80 2f 9c|9c 2f 80 ec) fcfidus f4,f5 ++ 100: (ec 80 2f 9d|9d 2f 80 ec) fcfidus\. f4,f5 ++ 104: (fc 80 29 1c|1c 29 80 fc) fctiwu f4,f5 ++ 108: (fc 80 29 1d|1d 29 80 fc) fctiwu\. f4,f5 ++ 10c: (fc 80 29 1e|1e 29 80 fc) fctiwuz f4,f5 ++ 110: (fc 80 29 1f|1f 29 80 fc) fctiwuz\. f4,f5 ++ 114: (fc 80 2f 5c|5c 2f 80 fc) fctidu f4,f5 ++ 118: (fc 80 2f 5d|5d 2f 80 fc) fctidu\. f4,f5 ++ 11c: (fc 80 2f 5e|5e 2f 80 fc) fctiduz f4,f5 ++ 120: (fc 80 2f 5f|5f 2f 80 fc) fctiduz\. f4,f5 ++ 124: (fc 80 2f 9c|9c 2f 80 fc) fcfidu f4,f5 ++ 128: (fc 80 2f 9d|9d 2f 80 fc) fcfidu\. f4,f5 ++ 12c: (fc 0a 59 00|00 59 0a fc) ftdiv cr0,f10,f11 ++ 130: (ff 8a 59 00|00 59 8a ff) ftdiv cr7,f10,f11 ++ 134: (fc 00 51 40|40 51 00 fc) ftsqrt cr0,f10 ++ 138: (ff 80 51 40|40 51 80 ff) ftsqrt cr7,f10 ++ 13c: (7e 08 4a 2c|2c 4a 08 7e) dcbtt r8,r9 ++ 140: (7e 08 49 ec|ec 49 08 7e) dcbtstt r8,r9 ++ 144: (ed 40 66 44|44 66 40 ed) dcffix f10,f12 ++ 148: (ee 80 b6 45|45 b6 80 ee) dcffix\. f20,f22 ++ 14c: (7d 4b 60 68|68 60 4b 7d) lbarx r10,r11,r12 ++ 150: (7d 4b 60 68|68 60 4b 7d) lbarx r10,r11,r12 ++ 154: (7d 4b 60 69|69 60 4b 7d) lbarx r10,r11,r12,1 ++ 158: (7e 95 b0 e8|e8 b0 95 7e) lharx r20,r21,r22 ++ 15c: (7e 95 b0 e8|e8 b0 95 7e) lharx r20,r21,r22 ++ 160: (7e 95 b0 e9|e9 b0 95 7e) lharx r20,r21,r22,1 ++ 164: (7d 4b 65 6d|6d 65 4b 7d) stbcx\. r10,r11,r12 ++ 168: (7d 4b 65 ad|ad 65 4b 7d) sthcx\. r10,r11,r12 ++ 16c: (fd c0 78 30|30 78 c0 fd) fre f14,f15 ++ 170: (fd c0 78 31|31 78 c0 fd) fre\. f14,f15 ++ 174: (ed c0 78 30|30 78 c0 ed) fres f14,f15 ++ 178: (ed c0 78 31|31 78 c0 ed) fres\. f14,f15 ++ 17c: (fd c0 78 34|34 78 c0 fd) frsqrte f14,f15 ++ 180: (fd c0 78 35|35 78 c0 fd) frsqrte\. f14,f15 ++ 184: (ed c0 78 34|34 78 c0 ed) frsqrtes f14,f15 ++ 188: (ed c0 78 35|35 78 c0 ed) frsqrtes\. f14,f15 ++ 18c: (7c 43 27 1e|1e 27 43 7c) isel r2,r3,r4,28 ++ 190: (60 42 00 00|00 00 42 60) ori r2,r2,0 ++ 194: (60 00 00 00|00 00 00 60) nop ++ 198: (60 00 00 00|00 00 00 60) nop ++ 19c: (60 42 00 00|00 00 42 60) ori r2,r2,0 ++ 1a0: (7f 7b db 78|78 db 7b 7f) yield ++ 1a4: (7f 7b db 78|78 db 7b 7f) yield ++ 1a8: (7f bd eb 78|78 eb bd 7f) mdoio ++ 1ac: (7f bd eb 78|78 eb bd 7f) mdoio ++ 1b0: (7f de f3 78|78 f3 de 7f) mdoom ++ 1b4: (7f de f3 78|78 f3 de 7f) mdoom ++ 1b8: (7d 40 e2 a6|a6 e2 40 7d) mfppr r10 ++ 1bc: (7d 62 e2 a6|a6 e2 62 7d) mfppr32 r11 ++ 1c0: (7d 80 e3 a6|a6 e3 80 7d) mtppr r12 ++ 1c4: (7d a2 e3 a6|a6 e3 a2 7d) mtppr32 r13 ++#pass +diff --git a/gas/testsuite/gas/ppc/power7.s b/gas/testsuite/gas/ppc/power7.s +index 37c3e7f..46518d4 100644 +--- a/gas/testsuite/gas/ppc/power7.s ++++ b/gas/testsuite/gas/ppc/power7.s +@@ -1,4 +1,4 @@ +- .section ".text" ++ .text + power7: + lxvd2x 3,4,5 + lxvd2x 43,4,5 +@@ -108,3 +108,7 @@ power7: + or 29,29,29 + mdoom + or 30,30,30 ++ mfppr 10 ++ mfppr32 11 ++ mtppr 12 ++ mtppr32 13 +diff --git a/gas/testsuite/gas/ppc/ppc.exp b/gas/testsuite/gas/ppc/ppc.exp +index aac92b6..a2af592 100644 +--- a/gas/testsuite/gas/ppc/ppc.exp ++++ b/gas/testsuite/gas/ppc/ppc.exp +@@ -28,14 +28,30 @@ if { [istarget powerpc64*-*-*] || [istarget *-*-elf64*]} then { + + if { [istarget powerpc*-*-*] } then { + run_dump_test "simpshft" +- run_dump_test "machine" + run_dump_test "regnames" ++ if { [is_elf_format] } then { ++ run_dump_test "machine" ++ run_dump_test "common" ++ run_dump_test "476" ++ run_dump_test "a2" ++ if { ![istarget powerpc*le-*-*] } then { ++ run_dump_test "vle" ++ run_dump_test "vle-reloc" ++ run_dump_test "vle-simple-1" ++ run_dump_test "vle-simple-2" ++ run_dump_test "vle-simple-3" ++ run_dump_test "vle-simple-4" ++ run_dump_test "vle-simple-5" ++ run_dump_test "vle-simple-6" ++ } ++ } + + if { [istarget powerpc-*-*aix*] } then { + run_dump_test "altivec_xcoff" + run_dump_test "altivec_xcoff64" + } else { + run_dump_test "altivec" ++ run_dump_test "altivec2" + run_dump_test "altivec_and_spe" + run_dump_test "booke" + run_dump_test "e500" +@@ -46,22 +62,11 @@ if { [istarget powerpc*-*-*] } then { + run_dump_test "e500mc64_nop" + run_dump_test "e5500_nop" + run_dump_test "e6500_nop" +- run_dump_test "a2" + run_dump_test "cell" +- run_dump_test "common" + run_dump_test "power4_32" + run_dump_test "power6" + run_dump_test "power7" + run_dump_test "vsx" +- run_dump_test "476" + run_dump_test "titan" +- run_dump_test "vle" +- run_dump_test "vle-reloc" +- run_dump_test "vle-simple-1" +- run_dump_test "vle-simple-2" +- run_dump_test "vle-simple-3" +- run_dump_test "vle-simple-4" +- run_dump_test "vle-simple-5" +- run_dump_test "vle-simple-6" + } + } +diff --git a/gas/testsuite/gas/ppc/ppc750ps.d b/gas/testsuite/gas/ppc/ppc750ps.d +index b58147f..72be787 100644 +--- a/gas/testsuite/gas/ppc/ppc750ps.d ++++ b/gas/testsuite/gas/ppc/ppc750ps.d +@@ -2,71 +2,72 @@ + #objdump: -dr -Mppcps + #name: PPC750CL paired single tests + +-.*: +file format elf(32)?(64)?-powerpc.* ++.* + + Disassembly of section \.text: + + 0+0000000 : +- 0: e0 03 d0 04 psq_l f0,4\(r3\),1,5 +- 4: e4 22 30 08 psq_lu f1,8\(r2\),0,3 +- 8: 10 45 25 4c psq_lux f2,r5,r4,1,2 +- c: 10 62 22 8c psq_lx f3,r2,r4,0,5 +- 10: f0 62 30 08 psq_st f3,8\(r2\),0,3 +- 14: f4 62 70 08 psq_stu f3,8\(r2\),0,7 +- 18: 10 43 22 ce psq_stux f2,r3,r4,0,5 +- 1c: 10 c7 46 0e psq_stx f6,r7,r8,1,4 +- 20: 10 a0 3a 10 ps_abs f5,f7 +- 24: 10 a0 3a 11 ps_abs. f5,f7 +- 28: 10 22 18 2a ps_add f1,f2,f3 +- 2c: 10 22 18 2b ps_add. f1,f2,f3 +- 30: 11 82 20 40 ps_cmpo0 cr3,f2,f4 +- 34: 11 82 20 c0 ps_cmpo1 cr3,f2,f4 +- 38: 11 82 20 00 ps_cmpu0 cr3,f2,f4 +- 3c: 11 82 20 80 ps_cmpu1 cr3,f2,f4 +- 40: 10 44 30 24 ps_div f2,f4,f6 +- 44: 10 44 30 25 ps_div. f2,f4,f6 +- 48: 10 01 18 ba ps_madd f0,f1,f2,f3 +- 4c: 10 01 18 bb ps_madd. f0,f1,f2,f3 +- 50: 10 22 20 dc ps_madds0 f1,f2,f3,f4 +- 54: 10 22 20 dd ps_madds0. f1,f2,f3,f4 +- 58: 10 22 20 de ps_madds1 f1,f2,f3,f4 +- 5c: 10 22 20 df ps_madds1. f1,f2,f3,f4 +- 60: 10 44 34 20 ps_merge00 f2,f4,f6 +- 64: 10 44 34 21 ps_merge00. f2,f4,f6 +- 68: 10 44 34 60 ps_merge01 f2,f4,f6 +- 6c: 10 44 34 61 ps_merge01. f2,f4,f6 +- 70: 10 44 34 a0 ps_merge10 f2,f4,f6 +- 74: 10 44 34 a1 ps_merge10. f2,f4,f6 +- 78: 10 44 34 e0 ps_merge11 f2,f4,f6 +- 7c: 10 44 34 e1 ps_merge11. f2,f4,f6 +- 80: 10 60 28 90 ps_mr f3,f5 +- 84: 10 60 28 91 ps_mr. f3,f5 +- 88: 10 44 41 b8 ps_msub f2,f4,f6,f8 +- 8c: 10 44 41 b9 ps_msub. f2,f4,f6,f8 +- 90: 10 43 01 72 ps_mul f2,f3,f5 +- 94: 10 43 01 73 ps_mul. f2,f3,f5 +- 98: 10 64 01 d8 ps_muls0 f3,f4,f7 +- 9c: 10 64 01 d9 ps_muls0. f3,f4,f7 +- a0: 10 64 01 da ps_muls1 f3,f4,f7 +- a4: 10 64 01 db ps_muls1. f3,f4,f7 +- a8: 10 20 29 10 ps_nabs f1,f5 +- ac: 10 20 29 11 ps_nabs. f1,f5 +- b0: 10 20 28 50 ps_neg f1,f5 +- b4: 10 20 28 51 ps_neg. f1,f5 +- b8: 10 23 39 7e ps_nmadd f1,f3,f5,f7 +- bc: 10 23 39 7f ps_nmadd. f1,f3,f5,f7 +- c0: 10 23 39 7c ps_nmsub f1,f3,f5,f7 +- c4: 10 23 39 7d ps_nmsub. f1,f3,f5,f7 +- c8: 11 20 18 30 ps_res f9,f3 +- cc: 11 20 18 31 ps_res. f9,f3 +- d0: 11 20 18 34 ps_rsqrte f9,f3 +- d4: 11 20 18 35 ps_rsqrte. f9,f3 +- d8: 10 22 20 ee ps_sel f1,f2,f3,f4 +- dc: 10 22 20 ef ps_sel. f1,f2,f3,f4 +- e0: 10 ab 10 28 ps_sub f5,f11,f2 +- e4: 10 ab 10 29 ps_sub. f5,f11,f2 +- e8: 10 45 52 54 ps_sum0 f2,f5,f9,f10 +- ec: 10 45 52 55 ps_sum0. f2,f5,f9,f10 +- f0: 10 45 52 56 ps_sum1 f2,f5,f9,f10 +- f4: 10 45 52 57 ps_sum1. f2,f5,f9,f10 +- f8: 10 03 2f ec dcbz_l r3,r5 ++ 0: (e0 03 d0 04|04 d0 03 e0) psq_l f0,4\(r3\),1,5 ++ 4: (e4 22 30 08|08 30 22 e4) psq_lu f1,8\(r2\),0,3 ++ 8: (10 45 25 4c|4c 25 45 10) psq_lux f2,r5,r4,1,2 ++ c: (10 62 22 8c|8c 22 62 10) psq_lx f3,r2,r4,0,5 ++ 10: (f0 62 30 08|08 30 62 f0) psq_st f3,8\(r2\),0,3 ++ 14: (f4 62 70 08|08 70 62 f4) psq_stu f3,8\(r2\),0,7 ++ 18: (10 43 22 ce|ce 22 43 10) psq_stux f2,r3,r4,0,5 ++ 1c: (10 c7 46 0e|0e 46 c7 10) psq_stx f6,r7,r8,1,4 ++ 20: (10 a0 3a 10|10 3a a0 10) ps_abs f5,f7 ++ 24: (10 a0 3a 11|11 3a a0 10) ps_abs. f5,f7 ++ 28: (10 22 18 2a|2a 18 22 10) ps_add f1,f2,f3 ++ 2c: (10 22 18 2b|2b 18 22 10) ps_add. f1,f2,f3 ++ 30: (11 82 20 40|40 20 82 11) ps_cmpo0 cr3,f2,f4 ++ 34: (11 82 20 c0|c0 20 82 11) ps_cmpo1 cr3,f2,f4 ++ 38: (11 82 20 00|00 20 82 11) ps_cmpu0 cr3,f2,f4 ++ 3c: (11 82 20 80|80 20 82 11) ps_cmpu1 cr3,f2,f4 ++ 40: (10 44 30 24|24 30 44 10) ps_div f2,f4,f6 ++ 44: (10 44 30 25|25 30 44 10) ps_div. f2,f4,f6 ++ 48: (10 01 18 ba|ba 18 01 10) ps_madd f0,f1,f2,f3 ++ 4c: (10 01 18 bb|bb 18 01 10) ps_madd. f0,f1,f2,f3 ++ 50: (10 22 20 dc|dc 20 22 10) ps_madds0 f1,f2,f3,f4 ++ 54: (10 22 20 dd|dd 20 22 10) ps_madds0. f1,f2,f3,f4 ++ 58: (10 22 20 de|de 20 22 10) ps_madds1 f1,f2,f3,f4 ++ 5c: (10 22 20 df|df 20 22 10) ps_madds1. f1,f2,f3,f4 ++ 60: (10 44 34 20|20 34 44 10) ps_merge00 f2,f4,f6 ++ 64: (10 44 34 21|21 34 44 10) ps_merge00. f2,f4,f6 ++ 68: (10 44 34 60|60 34 44 10) ps_merge01 f2,f4,f6 ++ 6c: (10 44 34 61|61 34 44 10) ps_merge01. f2,f4,f6 ++ 70: (10 44 34 a0|a0 34 44 10) ps_merge10 f2,f4,f6 ++ 74: (10 44 34 a1|a1 34 44 10) ps_merge10. f2,f4,f6 ++ 78: (10 44 34 e0|e0 34 44 10) ps_merge11 f2,f4,f6 ++ 7c: (10 44 34 e1|e1 34 44 10) ps_merge11. f2,f4,f6 ++ 80: (10 60 28 90|90 28 60 10) ps_mr f3,f5 ++ 84: (10 60 28 91|91 28 60 10) ps_mr. f3,f5 ++ 88: (10 44 41 b8|b8 41 44 10) ps_msub f2,f4,f6,f8 ++ 8c: (10 44 41 b9|b9 41 44 10) ps_msub. f2,f4,f6,f8 ++ 90: (10 43 01 72|72 01 43 10) ps_mul f2,f3,f5 ++ 94: (10 43 01 73|73 01 43 10) ps_mul. f2,f3,f5 ++ 98: (10 64 01 d8|d8 01 64 10) ps_muls0 f3,f4,f7 ++ 9c: (10 64 01 d9|d9 01 64 10) ps_muls0. f3,f4,f7 ++ a0: (10 64 01 da|da 01 64 10) ps_muls1 f3,f4,f7 ++ a4: (10 64 01 db|db 01 64 10) ps_muls1. f3,f4,f7 ++ a8: (10 20 29 10|10 29 20 10) ps_nabs f1,f5 ++ ac: (10 20 29 11|11 29 20 10) ps_nabs. f1,f5 ++ b0: (10 20 28 50|50 28 20 10) ps_neg f1,f5 ++ b4: (10 20 28 51|51 28 20 10) ps_neg. f1,f5 ++ b8: (10 23 39 7e|7e 39 23 10) ps_nmadd f1,f3,f5,f7 ++ bc: (10 23 39 7f|7f 39 23 10) ps_nmadd. f1,f3,f5,f7 ++ c0: (10 23 39 7c|7c 39 23 10) ps_nmsub f1,f3,f5,f7 ++ c4: (10 23 39 7d|7d 39 23 10) ps_nmsub. f1,f3,f5,f7 ++ c8: (11 20 18 30|30 18 20 11) ps_res f9,f3 ++ cc: (11 20 18 31|31 18 20 11) ps_res. f9,f3 ++ d0: (11 20 18 34|34 18 20 11) ps_rsqrte f9,f3 ++ d4: (11 20 18 35|35 18 20 11) ps_rsqrte. f9,f3 ++ d8: (10 22 20 ee|ee 20 22 10) ps_sel f1,f2,f3,f4 ++ dc: (10 22 20 ef|ef 20 22 10) ps_sel. f1,f2,f3,f4 ++ e0: (10 ab 10 28|28 10 ab 10) ps_sub f5,f11,f2 ++ e4: (10 ab 10 29|29 10 ab 10) ps_sub. f5,f11,f2 ++ e8: (10 45 52 54|54 52 45 10) ps_sum0 f2,f5,f9,f10 ++ ec: (10 45 52 55|55 52 45 10) ps_sum0. f2,f5,f9,f10 ++ f0: (10 45 52 56|56 52 45 10) ps_sum1 f2,f5,f9,f10 ++ f4: (10 45 52 57|57 52 45 10) ps_sum1. f2,f5,f9,f10 ++ f8: (10 03 2f ec|ec 2f 03 10) dcbz_l r3,r5 ++#pass +diff --git a/gas/testsuite/gas/ppc/ppc750ps.s b/gas/testsuite/gas/ppc/ppc750ps.s +index 60b674d..6d383e4 100644 +--- a/gas/testsuite/gas/ppc/ppc750ps.s ++++ b/gas/testsuite/gas/ppc/ppc750ps.s +@@ -1,5 +1,5 @@ + # PowerPC 750 paired single precision tests +- .section ".text" ++ .text + start: + psq_l 0, 4(3), 1, 5 + psq_lu 1, 8(2), 0, 3 +diff --git a/gas/testsuite/gas/ppc/regnames.d b/gas/testsuite/gas/ppc/regnames.d +index ebc6b42..5041ced 100644 +--- a/gas/testsuite/gas/ppc/regnames.d ++++ b/gas/testsuite/gas/ppc/regnames.d +@@ -5,4 +5,4 @@ + .* + + Contents of section \.text: +- 0000 4fbdcb82 88850004 .* ++ 0000 (4fbdcb82|82cbbd4f) (88850004|04008588) .* +diff --git a/gas/testsuite/gas/ppc/simpshft.d b/gas/testsuite/gas/ppc/simpshft.d +index 06893d5..b4cccd5 100644 +--- a/gas/testsuite/gas/ppc/simpshft.d ++++ b/gas/testsuite/gas/ppc/simpshft.d +@@ -1,27 +1,87 @@ +-#objdump: -s -j .text ++#objdump: -d -Mppc64 + #as: -mppc64 + #name: PowerPC test 3, simplified shifts + + .* + +-Contents of section \.text: +- 0000 78640fe0 7883f80e 78a545e4 78640020 xd..x...x.E.xd. +- 0010 54640ffe 5083f800 54a5402e 5464043e Td..P...T.@.Td.> +- 0020 78640004 786407e4 7864f806 7864ffe6 xd..xd..xd..xd.. +- 0030 7864f842 7864ffe2 7864000c 7864080c xd.Bxd..xd..xd.. +- 0040 78640fac 786407ec 78640000 78640800 xd..xd..xd..xd.. +- 0050 7864f802 78640000 7864f802 78640800 xd..xd..xd..xd.. +- 0060 78652010 786407e4 7864f806 78640000 xe .xd..xd..xd.. +- 0070 7864f842 78640fe0 78640000 78640040 xd.Bxd..xd..xd.@ +- 0080 786407e0 786407e4 786407a4 78640004 xd..xd..xd..xd.. +- 0090 78640008 78640048 786407e8 78640fa8 xd..xd.Hxd..xd.. +- 00a0 7864f80a 54640000 5464003e 5464f800 xd..Td..Td.>Td.. +- 00b0 5464f83e 5464f87e 5464fffe 50640000 Td.>Td.~Td..Pd.. +- 00c0 5064003e 50640ffe 5064f800 5064003e Pd.>Pd..Pd..Pd.> +- 00d0 506407fe 5464003e 5464083e 5464f83e Pd..Td.>Td.>Td.> +- 00e0 5464003e 5464f83e 5464083e 5c65203e Td.>Td.>Td.>\\e > +- 00f0 5464003e 5464083c 5464f800 5464003e Td.>Td. +- 0100 5464f87e 54640ffe 5464003e 5464007e Td.~Td..Td.>Td.~ +- 0110 546407fe 5464003e 5464003c 54640000 Td..Td.>Td.Td.~Td..Td.. +- 0130 5464f800 00000000 Td...... ++Disassembly of section .text: ++ ++0+ <.text>: ++ 0: (e0 0f 64 78|78 64 0f e0) rldicl r4,r3,1,63 ++ 4: (0e f8 83 78|78 83 f8 0e) rldimi r3,r4,63,0 ++ 8: (e4 45 a5 78|78 a5 45 e4) rldicr r5,r5,8,55 ++ c: (20 00 64 78|78 64 00 20) clrldi r4,r3,32 ++ 10: (fe 0f 64 54|54 64 0f fe) rlwinm r4,r3,1,31,31 ++ 14: (00 f8 83 50|50 83 f8 00) rlwimi r3,r4,31,0,0 ++ 18: (2e 40 a5 54|54 a5 40 2e) rlwinm r5,r5,8,0,23 ++ 1c: (3e 04 64 54|54 64 04 3e) clrlwi r4,r3,16 ++ 20: (04 00 64 78|78 64 00 04) rldicr r4,r3,0,0 ++ 24: (e4 07 64 78|78 64 07 e4) rldicr r4,r3,0,63 ++ 28: (06 f8 64 78|78 64 f8 06) rldicr r4,r3,63,0 ++ 2c: (e6 ff 64 78|78 64 ff e6) rldicr r4,r3,63,63 ++ 30: (42 f8 64 78|78 64 f8 42) rldicl r4,r3,63,1 ++ 34: (e2 ff 64 78|78 64 ff e2) rldicl r4,r3,63,63 ++ 38: (0c 00 64 78|78 64 00 0c) rldimi r4,r3,0,0 ++ 3c: (0c 08 64 78|78 64 08 0c) rldimi r4,r3,1,0 ++ 40: (ac 0f 64 78|78 64 0f ac) rldimi r4,r3,1,62 ++ 44: (ec 07 64 78|78 64 07 ec) rldimi r4,r3,0,63 ++ 48: (00 00 64 78|78 64 00 00) rotldi r4,r3,0 ++ 4c: (00 08 64 78|78 64 08 00) rotldi r4,r3,1 ++ 50: (02 f8 64 78|78 64 f8 02) rotldi r4,r3,63 ++ 54: (00 00 64 78|78 64 00 00) rotldi r4,r3,0 ++ 58: (02 f8 64 78|78 64 f8 02) rotldi r4,r3,63 ++ 5c: (00 08 64 78|78 64 08 00) rotldi r4,r3,1 ++ 60: (10 20 65 78|78 65 20 10) rotld r5,r3,r4 ++ 64: (e4 07 64 78|78 64 07 e4) rldicr r4,r3,0,63 ++ 68: (06 f8 64 78|78 64 f8 06) rldicr r4,r3,63,0 ++ 6c: (00 00 64 78|78 64 00 00) rotldi r4,r3,0 ++ 70: (42 f8 64 78|78 64 f8 42) rldicl r4,r3,63,1 ++ 74: (e0 0f 64 78|78 64 0f e0) rldicl r4,r3,1,63 ++ 78: (00 00 64 78|78 64 00 00) rotldi r4,r3,0 ++ 7c: (40 00 64 78|78 64 00 40) clrldi r4,r3,1 ++ 80: (e0 07 64 78|78 64 07 e0) clrldi r4,r3,63 ++ 84: (e4 07 64 78|78 64 07 e4) rldicr r4,r3,0,63 ++ 88: (a4 07 64 78|78 64 07 a4) rldicr r4,r3,0,62 ++ 8c: (04 00 64 78|78 64 00 04) rldicr r4,r3,0,0 ++ 90: (08 00 64 78|78 64 00 08) rldic r4,r3,0,0 ++ 94: (48 00 64 78|78 64 00 48) rldic r4,r3,0,1 ++ 98: (e8 07 64 78|78 64 07 e8) rldic r4,r3,0,63 ++ 9c: (a8 0f 64 78|78 64 0f a8) rldic r4,r3,1,62 ++ a0: (0a f8 64 78|78 64 f8 0a) rldic r4,r3,63,0 ++ a4: (00 00 64 54|54 64 00 00) rlwinm r4,r3,0,0,0 ++ a8: (3e 00 64 54|54 64 00 3e) rotlwi r4,r3,0 ++ ac: (00 f8 64 54|54 64 f8 00) rlwinm r4,r3,31,0,0 ++ b0: (3e f8 64 54|54 64 f8 3e) rotlwi r4,r3,31 ++ b4: (7e f8 64 54|54 64 f8 7e) rlwinm r4,r3,31,1,31 ++ b8: (fe ff 64 54|54 64 ff fe) rlwinm r4,r3,31,31,31 ++ bc: (00 00 64 50|50 64 00 00) rlwimi r4,r3,0,0,0 ++ c0: (3e 00 64 50|50 64 00 3e) rlwimi r4,r3,0,0,31 ++ c4: (fe 0f 64 50|50 64 0f fe) rlwimi r4,r3,1,31,31 ++ c8: (00 f8 64 50|50 64 f8 00) rlwimi r4,r3,31,0,0 ++ cc: (3e 00 64 50|50 64 00 3e) rlwimi r4,r3,0,0,31 ++ d0: (fe 07 64 50|50 64 07 fe) rlwimi r4,r3,0,31,31 ++ d4: (3e 00 64 54|54 64 00 3e) rotlwi r4,r3,0 ++ d8: (3e 08 64 54|54 64 08 3e) rotlwi r4,r3,1 ++ dc: (3e f8 64 54|54 64 f8 3e) rotlwi r4,r3,31 ++ e0: (3e 00 64 54|54 64 00 3e) rotlwi r4,r3,0 ++ e4: (3e f8 64 54|54 64 f8 3e) rotlwi r4,r3,31 ++ e8: (3e 08 64 54|54 64 08 3e) rotlwi r4,r3,1 ++ ec: (3e 20 65 5c|5c 65 20 3e) rotlw r5,r3,r4 ++ f0: (3e 00 64 54|54 64 00 3e) rotlwi r4,r3,0 ++ f4: (3c 08 64 54|54 64 08 3c) rlwinm r4,r3,1,0,30 ++ f8: (00 f8 64 54|54 64 f8 00) rlwinm r4,r3,31,0,0 ++ fc: (3e 00 64 54|54 64 00 3e) rotlwi r4,r3,0 ++ 100: (7e f8 64 54|54 64 f8 7e) rlwinm r4,r3,31,1,31 ++ 104: (fe 0f 64 54|54 64 0f fe) rlwinm r4,r3,1,31,31 ++ 108: (3e 00 64 54|54 64 00 3e) rotlwi r4,r3,0 ++ 10c: (7e 00 64 54|54 64 00 7e) clrlwi r4,r3,1 ++ 110: (fe 07 64 54|54 64 07 fe) clrlwi r4,r3,31 ++ 114: (3e 00 64 54|54 64 00 3e) rotlwi r4,r3,0 ++ 118: (3c 00 64 54|54 64 00 3c) rlwinm r4,r3,0,0,30 ++ 11c: (00 00 64 54|54 64 00 00) rlwinm r4,r3,0,0,0 ++ 120: (3e 00 64 54|54 64 00 3e) rotlwi r4,r3,0 ++ 124: (7e 00 64 54|54 64 00 7e) clrlwi r4,r3,1 ++ 128: (fe 07 64 54|54 64 07 fe) clrlwi r4,r3,31 ++ 12c: (bc 0f 64 54|54 64 0f bc) rlwinm r4,r3,1,30,30 ++ 130: (00 f8 64 54|54 64 f8 00) rlwinm r4,r3,31,0,0 ++#pass +diff --git a/gas/testsuite/gas/ppc/test1elf32.d b/gas/testsuite/gas/ppc/test1elf32.d +index 80cc667..d8d6835 100644 +--- a/gas/testsuite/gas/ppc/test1elf32.d ++++ b/gas/testsuite/gas/ppc/test1elf32.d +@@ -1,7 +1,7 @@ + #objdump: -Drx + #name: PowerPC Test 1, 32 bit elf + +-.*: +file format elf32-powerpc ++.* + .* + architecture: powerpc:common, flags 0x00000011: + HAS_RELOC, HAS_SYMS +@@ -35,50 +35,50 @@ SYMBOL TABLE: + Disassembly of section \.text: + + 0+0000 <\.text>: +- 0: 80 63 00 00 lwz r3,0\(r3\) +- 2: R_PPC_ADDR16_LO \.data +- 4: 80 63 00 04 lwz r3,4\(r3\) +- 6: R_PPC_ADDR16_LO \.data\+0x4 +- 8: 80 63 00 04 lwz r3,4\(r3\) +- a: R_PPC_ADDR16_LO \.data\+0x4 +- c: 80 63 00 08 lwz r3,8\(r3\) +- e: R_PPC_ADDR16_LO \.data\+0x8 +- 10: 80 63 00 00 lwz r3,0\(r3\) +- 12: R_PPC_ADDR16_LO esym0 +- 14: 80 63 00 00 lwz r3,0\(r3\) +- 16: R_PPC_ADDR16_LO esym1 +- 18: 38 60 00 04 li r3,4 +- 1c: 38 60 ff fc li r3,-4 +- 20: 38 60 00 04 li r3,4 +- 24: 38 60 ff fc li r3,-4 +- 28: 38 60 ff fc li r3,-4 +- 2c: 38 60 00 04 li r3,4 +- 30: 38 60 00 00 li r3,0 +- 32: R_PPC_ADDR16_LO \.data +- 34: 38 60 00 00 li r3,0 +- 36: R_PPC_ADDR16_HI \.data +- 38: 38 60 00 00 li r3,0 +- 3a: R_PPC_ADDR16_HA \.data +- 3c: 38 60 ff fc li r3,-4 +- 40: 38 60 ff ff li r3,-1 +- 44: 38 60 00 00 li r3,0 +- 48: 80 64 00 04 lwz r3,4\(r4\) +- 4c: 80 60 00 00 lwz r3,0\(0\) +- 4e: R_PPC_ADDR16_LO \.text ++ 0: (80 63 00 00|00 00 63 80) lwz r3,0\(r3\) ++ (2|0): R_PPC_ADDR16_LO \.data ++ 4: (80 63 00 0.|0. 00 63 80) lwz r3,.\(r3\) ++ (6|4): R_PPC_ADDR16_LO \.data\+0x4 ++ 8: (80 63 00 0.|0. 00 63 80) lwz r3,.\(r3\) ++ (a|8): R_PPC_ADDR16_LO \.data\+0x4 ++ c: (80 63 00 0.|0. 00 63 80) lwz r3,.\(r3\) ++ (e|c): R_PPC_ADDR16_LO \.data\+0x8 ++ 10: (80 63 00 00|00 00 63 80) lwz r3,0\(r3\) ++ (12|10): R_PPC_ADDR16_LO esym0 ++ 14: (80 63 00 00|00 00 63 80) lwz r3,0\(r3\) ++ (16|14): R_PPC_ADDR16_LO esym1 ++ 18: (38 60 00 04|04 00 60 38) li r3,4 ++ 1c: (38 60 ff fc|fc ff 60 38) li r3,-4 ++ 20: (38 60 00 04|04 00 60 38) li r3,4 ++ 24: (38 60 ff fc|fc ff 60 38) li r3,-4 ++ 28: (38 60 ff fc|fc ff 60 38) li r3,-4 ++ 2c: (38 60 00 04|04 00 60 38) li r3,4 ++ 30: (38 60 00 00|00 00 60 38) li r3,0 ++ (32|30): R_PPC_ADDR16_LO \.data ++ 34: (38 60 00 00|00 00 60 38) li r3,0 ++ (36|34): R_PPC_ADDR16_HI \.data ++ 38: (38 60 00 00|00 00 60 38) li r3,0 ++ (3a|38): R_PPC_ADDR16_HA \.data ++ 3c: (38 60 ff fc|fc ff 60 38) li r3,-4 ++ 40: (38 60 ff ff|ff ff 60 38) li r3,-1 ++ 44: (38 60 00 00|00 00 60 38) li r3,0 ++ 48: (80 64 00 04|04 00 64 80) lwz r3,4\(r4\) ++ 4c: (80 60 00 00|00 00 60 80) lwz r3,0\(0\) ++ (4e|4c): R_PPC_ADDR16_LO \.text + Disassembly of section \.data: + + 0+0000 : +- 0: de ad be ef stfdu f21,-16657\(r13\) ++ 0: (de ad be ef|ef be ad de) stfdu f21,-16657\(r13\) + + 0+0004 : +- 4: ca fe ba be lfd f23,-17730\(r30\) ++ 4: (ca fe ba be|be ba fe ca) lfd f23,-17730\(r30\) + + 0+0008 : +- 8: 00 98 96 80 \.long 0x989680 ++ 8: 00 00 00 00 \.long 0x0 + 8: R_PPC_REL32 jk\+0x989680 + + 0+000c : +- c: ff ff ff fc fnmsub f31,f31,f31,f31 ++ c: 00 00 00 00 \.long 0x0 + c: R_PPC_REL32 jk-0x4 + + 0+0010 : +@@ -86,5 +86,5 @@ Disassembly of section \.data: + 10: R_PPC_REL32 jk + + 0+0014 : +- 14: 00 00 00 04 \.long 0x4 ++ 14: 00 00 00 00 \.long 0x0 + 14: R_PPC_REL32 jk\+0x4 +diff --git a/gas/testsuite/gas/ppc/test1elf64.d b/gas/testsuite/gas/ppc/test1elf64.d +index 33fb6db..d6383e1 100644 +--- a/gas/testsuite/gas/ppc/test1elf64.d ++++ b/gas/testsuite/gas/ppc/test1elf64.d +@@ -1,7 +1,7 @@ + #objdump: -Drx + #name: PowerPC Test 1, 64 bit elf + +-.*: +file format elf64-powerpc ++.* + .* + architecture: powerpc:common64, flags 0x00000011: + HAS_RELOC, HAS_SYMS +@@ -40,112 +40,108 @@ SYMBOL TABLE: + Disassembly of section \.text: + + 0000000000000000 <\.text>: +- 0: e8 63 00 00 ld r3,0\(r3\) +- 2: R_PPC64_ADDR16_LO_DS \.data +- 4: e8 63 00 08 ld r3,8\(r3\) +- 6: R_PPC64_ADDR16_LO_DS \.data\+0x8 +- 8: e8 63 00 08 ld r3,8\(r3\) +- a: R_PPC64_ADDR16_LO_DS \.data\+0x8 +- c: e8 63 00 10 ld r3,16\(r3\) +- e: R_PPC64_ADDR16_LO_DS \.data\+0x10 +- 10: e8 63 00 00 ld r3,0\(r3\) +- 12: R_PPC64_ADDR16_LO_DS esym0 +- 14: e8 63 00 00 ld r3,0\(r3\) +- 16: R_PPC64_ADDR16_LO_DS esym1 +- 18: e8 62 00 00 ld r3,0\(r2\) +- 1a: R_PPC64_TOC16_DS \.toc +- 1c: e8 62 00 08 ld r3,8\(r2\) +- 1e: R_PPC64_TOC16_DS \.toc\+0x8 +- 20: e8 62 00 10 ld r3,16\(r2\) +- 22: R_PPC64_TOC16_DS \.toc\+0x10 +- 24: e8 62 00 18 ld r3,24\(r2\) +- 26: R_PPC64_TOC16_DS \.toc\+0x18 +- 28: e8 62 00 20 ld r3,32\(r2\) +- 2a: R_PPC64_TOC16_DS \.toc\+0x20 +- 2c: e8 62 00 28 ld r3,40\(r2\) +- 2e: R_PPC64_TOC16_DS \.toc\+0x28 +- 30: 3c 80 00 28 lis r4,40 +- 32: R_PPC64_TOC16_HA \.toc\+0x28 +- 34: e8 62 00 28 ld r3,40\(r2\) +- 36: R_PPC64_TOC16_LO_DS \.toc\+0x28 +- 38: 38 60 00 08 li r3,8 +- 3c: 38 60 ff f8 li r3,-8 +- 40: 38 60 00 08 li r3,8 +- 44: 38 60 ff f8 li r3,-8 +- 48: 38 60 ff f8 li r3,-8 +- 4c: 38 60 00 08 li r3,8 +- 50: 38 60 00 00 li r3,0 +- 52: R_PPC64_ADDR16_LO \.data +- 54: 38 60 00 00 li r3,0 +- 56: R_PPC64_ADDR16_HI \.data +- 58: 38 60 00 00 li r3,0 +- 5a: R_PPC64_ADDR16_HA \.data +- 5c: 38 60 00 00 li r3,0 +- 5e: R_PPC64_ADDR16_HIGHER \.data +- 60: 38 60 00 00 li r3,0 +- 62: R_PPC64_ADDR16_HIGHERA \.data +- 64: 38 60 00 00 li r3,0 +- 66: R_PPC64_ADDR16_HIGHEST \.data +- 68: 38 60 00 00 li r3,0 +- 6a: R_PPC64_ADDR16_HIGHESTA \.data +- 6c: 38 60 ff f8 li r3,-8 +- 70: 38 60 ff ff li r3,-1 +- 74: 38 60 00 00 li r3,0 +- 78: 38 60 ff ff li r3,-1 +- 7c: 38 60 00 00 li r3,0 +- 80: 38 60 ff ff li r3,-1 +- 84: 38 60 00 00 li r3,0 +- 88: e8 64 00 08 ld r3,8\(r4\) +- 8c: e8 60 00 00 ld r3,0\(0\) +- 8e: R_PPC64_ADDR16_LO_DS \.text ++ 0: (e8 63 00 00|00 00 63 e8) ld r3,0\(r3\) ++ (2|0): R_PPC64_ADDR16_LO_DS \.data ++ 4: (e8 63 00 0.|0. 00 63 e8) ld r3,.\(r3\) ++ (6|4): R_PPC64_ADDR16_LO_DS \.data\+0x8 ++ 8: (e8 63 00 0.|0. 00 63 e8) ld r3,.\(r3\) ++ (a|8): R_PPC64_ADDR16_LO_DS \.data\+0x8 ++ c: (e8 63 00 .0|.0 00 63 e8) ld r3,.*\(r3\) ++ (e|c): R_PPC64_ADDR16_LO_DS \.data\+0x10 ++ 10: (e8 63 00 00|00 00 63 e8) ld r3,0\(r3\) ++ 1(0|2): R_PPC64_ADDR16_LO_DS esym0 ++ 14: (e8 63 00 00|00 00 63 e8) ld r3,0\(r3\) ++ 1(6|4): R_PPC64_ADDR16_LO_DS esym1 ++ 18: (e8 62 00 00|00 00 62 e8) ld r3,0\(r2\) ++ 1(a|8): R_PPC64_TOC16_DS \.toc ++ 1c: (e8 62 00 0.|0. 00 62 e8) ld r3,.\(r2\) ++ 1(e|c): R_PPC64_TOC16_DS \.toc\+0x8 ++ 20: (e8 62 00 .0|.0 00 62 e8) ld r3,.*\(r2\) ++ 2(2|0): R_PPC64_TOC16_DS \.toc\+0x10 ++ 24: (e8 62 00 ..|.. 00 62 e8) ld r3,.*\(r2\) ++ 2(6|4): R_PPC64_TOC16_DS \.toc\+0x18 ++ 28: (e8 62 00 .0|.0 00 62 e8) ld r3,.*\(r2\) ++ 2(a|8): R_PPC64_TOC16_DS \.toc\+0x20 ++ 2c: (e8 62 00 ..|.. 00 62 e8) ld r3,.*\(r2\) ++ 2(e|c): R_PPC64_TOC16_DS \.toc\+0x28 ++ 30: (3c 80 00 ..|.. 00 80 3c) lis r4,.* ++ 3(2|0): R_PPC64_TOC16_HA \.toc\+0x28 ++ 34: (e8 62 00 ..|.. 00 62 e8) ld r3,.*\(r2\) ++ 3(6|4): R_PPC64_TOC16_LO_DS \.toc\+0x28 ++ 38: (38 60 00 08|08 00 60 38) li r3,8 ++ 3c: (38 60 ff f8|f8 ff 60 38) li r3,-8 ++ 40: (38 60 00 08|08 00 60 38) li r3,8 ++ 44: (38 60 ff f8|f8 ff 60 38) li r3,-8 ++ 48: (38 60 ff f8|f8 ff 60 38) li r3,-8 ++ 4c: (38 60 00 08|08 00 60 38) li r3,8 ++ 50: (38 60 00 00|00 00 60 38) li r3,0 ++ 5(2|0): R_PPC64_ADDR16_LO \.data ++ 54: (38 60 00 00|00 00 60 38) li r3,0 ++ 5(6|4): R_PPC64_ADDR16_HI \.data ++ 58: (38 60 00 00|00 00 60 38) li r3,0 ++ 5(a|8): R_PPC64_ADDR16_HA \.data ++ 5c: (38 60 00 00|00 00 60 38) li r3,0 ++ 5(e|c): R_PPC64_ADDR16_HIGHER \.data ++ 60: (38 60 00 00|00 00 60 38) li r3,0 ++ 6(2|0): R_PPC64_ADDR16_HIGHERA \.data ++ 64: (38 60 00 00|00 00 60 38) li r3,0 ++ 6(6|4): R_PPC64_ADDR16_HIGHEST \.data ++ 68: (38 60 00 00|00 00 60 38) li r3,0 ++ 6(a|8): R_PPC64_ADDR16_HIGHESTA \.data ++ 6c: (38 60 ff f8|f8 ff 60 38) li r3,-8 ++ 70: (38 60 ff ff|ff ff 60 38) li r3,-1 ++ 74: (38 60 00 00|00 00 60 38) li r3,0 ++ 78: (38 60 ff ff|ff ff 60 38) li r3,-1 ++ 7c: (38 60 00 00|00 00 60 38) li r3,0 ++ 80: (38 60 ff ff|ff ff 60 38) li r3,-1 ++ 84: (38 60 00 00|00 00 60 38) li r3,0 ++ 88: (e8 64 00 08|08 00 64 e8) ld r3,8\(r4\) ++ 8c: (e8 60 00 00|00 00 60 e8) ld r3,0\(0\) ++ 8(e|c): R_PPC64_ADDR16_LO_DS \.text + Disassembly of section \.data: + + 0000000000000000 : +- 0: 00 00 00 00 \.long 0x0 +- 4: de ad be ef stfdu f21,-16657\(r13\) ++ 0: (00 00 00 00|ef be ad de) .* ++ 4: (de ad be ef|00 00 00 00) .* + + 0000000000000008 : +- 8: 00 00 00 00 \.long 0x0 +- c: ca fe ba be lfd f23,-17730\(r30\) ++ 8: (00 00 00 00|be ba fe ca) .* ++ c: (ca fe ba be|00 00 00 00) .* + + 0000000000000010 : +- 10: 00 98 96 80 \.long 0x989680 ++ 10: 00 00 00 00 .* + 10: R_PPC64_REL32 jk\+0x989680 + + 0000000000000014 : +- 14: ff ff ff fc fnmsub f31,f31,f31,f31 ++ 14: 00 00 00 00 .* + 14: R_PPC64_REL32 jk-0x4 + + 0000000000000018 : +- 18: 00 00 00 00 \.long 0x0 ++ 18: 00 00 00 00 .* + 18: R_PPC64_REL32 jk + + 000000000000001c : +- 1c: 00 00 00 04 \.long 0x4 ++ 1c: 00 00 00 00 .* + 1c: R_PPC64_REL32 jk\+0x4 + + 0000000000000020 : +- 20: 00 00 00 00 \.long 0x0 ++ \.\.\. + 20: R_PPC64_REL64 jk\+0x8 +- 24: 00 00 00 08 \.long 0x8 + + 0000000000000028 : +- 28: 00 00 00 00 \.long 0x0 ++ \.\.\. + 28: R_PPC64_REL64 jk\+0x10 +- 2c: 00 00 00 10 \.long 0x10 + Disassembly of section \.toc: + + 0000000000000000 <\.toc>: +- \.\.\. ++#... + 0: R_PPC64_ADDR64 \.data ++#... + 8: R_PPC64_ADDR64 \.data\+0x8 +- c: 00 00 00 08 \.long 0x8 +- 10: 00 00 00 00 \.long 0x0 ++#... + 10: R_PPC64_ADDR64 \.data\+0x8 +- 14: 00 00 00 08 \.long 0x8 +- 18: 00 00 00 00 \.long 0x0 ++#... + 18: R_PPC64_ADDR64 \.data\+0x10 +- 1c: 00 00 00 10 \.long 0x10 +- \.\.\. ++#... + 20: R_PPC64_ADDR64 esym0 + 28: R_PPC64_ADDR64 esym1 +diff --git a/gas/testsuite/gas/ppc/titan.d b/gas/testsuite/gas/ppc/titan.d +index 2b59928..45c41bb 100644 +--- a/gas/testsuite/gas/ppc/titan.d ++++ b/gas/testsuite/gas/ppc/titan.d +@@ -2,266 +2,266 @@ + #objdump: -dr -Mtitan + #name: AppliedMicro Titan tests + +-.*: +file format elf(32)?(64)?-powerpc.* ++.* + + Disassembly of section \.text: + + 0+0000000 : +- 0: 4e 80 00 20 blr +- 4: 0c 81 00 00 tweqi r1,0 +- 8: 10 41 01 58 macchw r2,r1,r0 +- c: 10 41 01 59 macchw\. r2,r1,r0 +- 10: 10 41 05 58 macchwo r2,r1,r0 +- 14: 10 41 05 59 macchwo\. r2,r1,r0 +- 18: 10 41 01 d8 macchws r2,r1,r0 +- 1c: 10 41 01 d9 macchws\. r2,r1,r0 +- 20: 10 41 05 d8 macchwso r2,r1,r0 +- 24: 10 41 05 d9 macchwso\. r2,r1,r0 +- 28: 10 41 01 98 macchwsu r2,r1,r0 +- 2c: 10 41 01 99 macchwsu\. r2,r1,r0 +- 30: 10 41 05 98 macchwsuo r2,r1,r0 +- 34: 10 41 05 99 macchwsuo\. r2,r1,r0 +- 38: 10 41 01 18 macchwu r2,r1,r0 +- 3c: 10 41 01 19 macchwu\. r2,r1,r0 +- 40: 10 41 05 18 macchwuo r2,r1,r0 +- 44: 10 41 05 19 macchwuo\. r2,r1,r0 +- 48: 10 41 00 58 machhw r2,r1,r0 +- 4c: 10 41 00 59 machhw\. r2,r1,r0 +- 50: 10 41 04 58 machhwo r2,r1,r0 +- 54: 10 41 04 59 machhwo\. r2,r1,r0 +- 58: 10 41 00 d8 machhws r2,r1,r0 +- 5c: 10 41 00 d9 machhws\. r2,r1,r0 +- 60: 10 41 04 d8 machhwso r2,r1,r0 +- 64: 10 41 04 d9 machhwso\. r2,r1,r0 +- 68: 10 41 00 98 machhwsu r2,r1,r0 +- 6c: 10 41 00 99 machhwsu\. r2,r1,r0 +- 70: 10 41 04 98 machhwsuo r2,r1,r0 +- 74: 10 41 04 99 machhwsuo\. r2,r1,r0 +- 78: 10 41 00 18 machhwu r2,r1,r0 +- 7c: 10 41 00 19 machhwu\. r2,r1,r0 +- 80: 10 41 04 18 machhwuo r2,r1,r0 +- 84: 10 41 04 19 machhwuo\. r2,r1,r0 +- 88: 10 41 03 58 maclhw r2,r1,r0 +- 8c: 10 41 03 59 maclhw\. r2,r1,r0 +- 90: 10 41 07 58 maclhwo r2,r1,r0 +- 94: 10 41 07 59 maclhwo\. r2,r1,r0 +- 98: 10 41 03 d8 maclhws r2,r1,r0 +- 9c: 10 41 03 d9 maclhws\. r2,r1,r0 +- a0: 10 41 07 d8 maclhwso r2,r1,r0 +- a4: 10 41 07 d9 maclhwso\. r2,r1,r0 +- a8: 10 41 03 98 maclhwsu r2,r1,r0 +- ac: 10 41 03 99 maclhwsu\. r2,r1,r0 +- b0: 10 41 07 98 maclhwsuo r2,r1,r0 +- b4: 10 41 07 99 maclhwsuo\. r2,r1,r0 +- b8: 10 41 03 18 maclhwu r2,r1,r0 +- bc: 10 41 03 19 maclhwu\. r2,r1,r0 +- c0: 10 41 07 18 maclhwuo r2,r1,r0 +- c4: 10 41 07 19 maclhwuo\. r2,r1,r0 +- c8: 10 41 01 5c nmacchw r2,r1,r0 +- cc: 10 41 01 5d nmacchw\. r2,r1,r0 +- d0: 10 41 05 5c nmacchwo r2,r1,r0 +- d4: 10 41 05 5d nmacchwo\. r2,r1,r0 +- d8: 10 41 01 dc nmacchws r2,r1,r0 +- dc: 10 41 01 dd nmacchws\. r2,r1,r0 +- e0: 10 41 05 dc nmacchwso r2,r1,r0 +- e4: 10 41 05 dd nmacchwso\. r2,r1,r0 +- e8: 10 41 00 5c nmachhw r2,r1,r0 +- ec: 10 41 00 5d nmachhw\. r2,r1,r0 +- f0: 10 41 04 5c nmachhwo r2,r1,r0 +- f4: 10 41 04 5d nmachhwo\. r2,r1,r0 +- f8: 10 41 00 dc nmachhws r2,r1,r0 +- fc: 10 41 00 dd nmachhws\. r2,r1,r0 +- 100: 10 41 04 dc nmachhwso r2,r1,r0 +- 104: 10 41 04 dd nmachhwso\. r2,r1,r0 +- 108: 10 41 03 5c nmaclhw r2,r1,r0 +- 10c: 10 41 03 5d nmaclhw\. r2,r1,r0 +- 110: 10 41 07 5c nmaclhwo r2,r1,r0 +- 114: 10 41 07 5d nmaclhwo\. r2,r1,r0 +- 118: 10 41 03 dc nmaclhws r2,r1,r0 +- 11c: 10 41 03 dd nmaclhws\. r2,r1,r0 +- 120: 10 41 07 dc nmaclhwso r2,r1,r0 +- 124: 10 41 07 dd nmaclhwso\. r2,r1,r0 +- 128: 10 41 01 50 mulchw r2,r1,r0 +- 12c: 10 41 01 51 mulchw\. r2,r1,r0 +- 130: 10 41 01 10 mulchwu r2,r1,r0 +- 134: 10 41 01 11 mulchwu\. r2,r1,r0 +- 138: 10 41 00 50 mulhhw r2,r1,r0 +- 13c: 10 41 00 51 mulhhw\. r2,r1,r0 +- 140: 10 41 00 10 mulhhwu r2,r1,r0 +- 144: 10 41 00 11 mulhhwu\. r2,r1,r0 +- 148: 10 41 03 50 mullhw r2,r1,r0 +- 14c: 10 41 03 51 mullhw\. r2,r1,r0 +- 150: 10 41 03 10 mullhwu r2,r1,r0 +- 154: 10 41 03 11 mullhwu\. r2,r1,r0 +- 158: 7c 22 00 9c dlmzb r2,r1,r0 +- 15c: 7c 22 00 9d dlmzb\. r2,r1,r0 +- 160: 7c 02 0b 8c dccci r2,r1 +- 164: 7c 02 0f 8c iccci r2,r1 +- 168: 7c 02 0b 0c dcblc r2,r1 +- 16c: 7c 02 0b 0c dcblc r2,r1 +- 170: 7c 22 0b 0c dcblc 1,r2,r1 +- 174: 7c 02 09 4c dcbtls r2,r1 +- 178: 7c 02 09 4c dcbtls r2,r1 +- 17c: 7c 22 09 4c dcbtls 1,r2,r1 +- 180: 7c 02 09 0c dcbtstls r2,r1 +- 184: 7c 02 09 0c dcbtstls r2,r1 +- 188: 7c 22 09 0c dcbtstls 1,r2,r1 +- 18c: 7c 02 09 cc icblc r2,r1 +- 190: 7c 02 09 cc icblc r2,r1 +- 194: 7c 22 09 cc icblc 1,r2,r1 +- 198: 7c 02 0b cc icbtls r2,r1 +- 19c: 7c 02 0b cc icbtls r2,r1 +- 1a0: 7c 22 0b cc icbtls 1,r2,r1 +- 1a4: 7c 41 02 8c dcread r2,r1,r0 +- 1a8: 7c 02 0f cc icread r2,r1 +- 1ac: 7c 41 02 9c mfpmr r2,1 +- 1b0: 7c 22 02 9c mfpmr r1,2 +- 1b4: 7c 81 02 a6 mfxer r4 +- 1b8: 7c 81 02 a6 mfxer r4 +- 1bc: 7c 88 02 a6 mflr r4 +- 1c0: 7c 88 02 a6 mflr r4 +- 1c4: 7c 89 02 a6 mfctr r4 +- 1c8: 7c 89 02 a6 mfctr r4 +- 1cc: 7c 96 02 a6 mfdec r4 +- 1d0: 7c 96 02 a6 mfdec r4 +- 1d4: 7c 9a 02 a6 mfsrr0 r4 +- 1d8: 7c 9a 02 a6 mfsrr0 r4 +- 1dc: 7c 9b 02 a6 mfsrr1 r4 +- 1e0: 7c 9b 02 a6 mfsrr1 r4 +- 1e4: 7c 90 0a a6 mfpid r4 +- 1e8: 7c 90 0a a6 mfpid r4 +- 1ec: 7c 9a 0a a6 mfcsrr0 r4 +- 1f0: 7c 9a 0a a6 mfcsrr0 r4 +- 1f4: 7c 9b 0a a6 mfcsrr1 r4 +- 1f8: 7c 9b 0a a6 mfcsrr1 r4 +- 1fc: 7c 9d 0a a6 mfdear r4 +- 200: 7c 9d 0a a6 mfdear r4 +- 204: 7c 9e 0a a6 mfesr r4 +- 208: 7c 9e 0a a6 mfesr r4 +- 20c: 7c 9f 0a a6 mfivpr r4 +- 210: 7c 9f 0a a6 mfivpr r4 +- 214: 7c 80 42 a6 mfusprg0 r4 +- 218: 7c 80 42 a6 mfusprg0 r4 +- 21c: 7c 84 42 a6 mfsprg r4,4 +- 220: 7c 84 42 a6 mfsprg r4,4 +- 224: 7c 85 42 a6 mfsprg r4,5 +- 228: 7c 85 42 a6 mfsprg r4,5 +- 22c: 7c 86 42 a6 mfsprg r4,6 +- 230: 7c 86 42 a6 mfsprg r4,6 +- 234: 7c 87 42 a6 mfsprg r4,7 +- 238: 7c 87 42 a6 mfsprg r4,7 +- 23c: 7c 8c 42 a6 mftb r4 +- 240: 7c 8c 42 a6 mftb r4 +- 244: 7c 8c 42 a6 mftb r4 +- 248: 7c 8d 42 a6 mftbu r4 +- 24c: 7c 8d 42 a6 mftbu r4 +- 250: 7c 90 42 a6 mfsprg r4,0 +- 254: 7c 90 42 a6 mfsprg r4,0 +- 258: 7c 91 42 a6 mfsprg r4,1 +- 25c: 7c 91 42 a6 mfsprg r4,1 +- 260: 7c 92 42 a6 mfsprg r4,2 +- 264: 7c 92 42 a6 mfsprg r4,2 +- 268: 7c 93 42 a6 mfsprg r4,3 +- 26c: 7c 93 42 a6 mfsprg r4,3 +- 270: 7c 9e 42 a6 mfpir r4 +- 274: 7c 9e 42 a6 mfpir r4 +- 278: 7c 9f 42 a6 mfpvr r4 +- 27c: 7c 9f 42 a6 mfpvr r4 +- 280: 7c 90 4a a6 mfdbsr r4 +- 284: 7c 90 4a a6 mfdbsr r4 +- 288: 7c 94 4a a6 mfdbcr0 r4 +- 28c: 7c 94 4a a6 mfdbcr0 r4 +- 290: 7c 95 4a a6 mfdbcr1 r4 +- 294: 7c 95 4a a6 mfdbcr1 r4 +- 298: 7c 96 4a a6 mfdbcr2 r4 +- 29c: 7c 96 4a a6 mfdbcr2 r4 +- 2a0: 7c 98 4a a6 mfiac1 r4 +- 2a4: 7c 98 4a a6 mfiac1 r4 +- 2a8: 7c 99 4a a6 mfiac2 r4 +- 2ac: 7c 99 4a a6 mfiac2 r4 +- 2b0: 7c 9a 4a a6 mfiac3 r4 +- 2b4: 7c 9a 4a a6 mfiac3 r4 +- 2b8: 7c 9b 4a a6 mfiac4 r4 +- 2bc: 7c 9b 4a a6 mfiac4 r4 +- 2c0: 7c 9c 4a a6 mfdac1 r4 +- 2c4: 7c 9c 4a a6 mfdac1 r4 +- 2c8: 7c 9d 4a a6 mfdac2 r4 +- 2cc: 7c 9d 4a a6 mfdac2 r4 +- 2d0: 7c 9e 4a a6 mfdvc1 r4 +- 2d4: 7c 9e 4a a6 mfdvc1 r4 +- 2d8: 7c 9f 4a a6 mfdvc2 r4 +- 2dc: 7c 9f 4a a6 mfdvc2 r4 +- 2e0: 7c 90 52 a6 mftsr r4 +- 2e4: 7c 90 52 a6 mftsr r4 +- 2e8: 7c 94 52 a6 mftcr r4 +- 2ec: 7c 94 52 a6 mftcr r4 +- 2f0: 7c 90 62 a6 mfivor0 r4 +- 2f4: 7c 90 62 a6 mfivor0 r4 +- 2f8: 7c 91 62 a6 mfivor1 r4 +- 2fc: 7c 91 62 a6 mfivor1 r4 +- 300: 7c 92 62 a6 mfivor2 r4 +- 304: 7c 92 62 a6 mfivor2 r4 +- 308: 7c 93 62 a6 mfivor3 r4 +- 30c: 7c 93 62 a6 mfivor3 r4 +- 310: 7c 94 62 a6 mfivor4 r4 +- 314: 7c 94 62 a6 mfivor4 r4 +- 318: 7c 95 62 a6 mfivor5 r4 +- 31c: 7c 95 62 a6 mfivor5 r4 +- 320: 7c 96 62 a6 mfivor6 r4 +- 324: 7c 96 62 a6 mfivor6 r4 +- 328: 7c 97 62 a6 mfivor7 r4 +- 32c: 7c 97 62 a6 mfivor7 r4 +- 330: 7c 98 62 a6 mfivor8 r4 +- 334: 7c 98 62 a6 mfivor8 r4 +- 338: 7c 99 62 a6 mfivor9 r4 +- 33c: 7c 99 62 a6 mfivor9 r4 +- 340: 7c 9a 62 a6 mfivor10 r4 +- 344: 7c 9a 62 a6 mfivor10 r4 +- 348: 7c 9b 62 a6 mfivor11 r4 +- 34c: 7c 9b 62 a6 mfivor11 r4 +- 350: 7c 9c 62 a6 mfivor12 r4 +- 354: 7c 9c 62 a6 mfivor12 r4 +- 358: 7c 9d 62 a6 mfivor13 r4 +- 35c: 7c 9d 62 a6 mfivor13 r4 +- 360: 7c 9e 62 a6 mfivor14 r4 +- 364: 7c 9e 62 a6 mfivor14 r4 +- 368: 7c 9f 62 a6 mfivor15 r4 +- 36c: 7c 9f 62 a6 mfivor15 r4 +- 370: 7c 93 82 a6 mfivor35 r4 +- 374: 7c 93 82 a6 mfivor35 r4 +- 378: 7c 9a 8a a6 mfdc_dat r4 +- 37c: 7c 9a 8a a6 mfdc_dat r4 +- 380: 7c 9b 8a a6 mfmcsrr1 r4 +- 384: 7c 9b 8a a6 mfmcsrr1 r4 +- 388: 7c 9c 8a a6 mfmcsr r4 +- 38c: 7c 9c 8a a6 mfmcsr r4 +- 390: 7c 90 da a6 mfivndx r4 +- 394: 7c 90 da a6 mfivndx r4 +- 398: 7c 91 da a6 mfdvndx r4 +- 39c: 7c 91 da a6 mfdvndx r4 +- 3a0: 7c 92 da a6 mfivlim r4 +- 3a4: 7c 92 da a6 mfivlim r4 +- 3a8: 7c 93 da a6 mfdvlim r4 +- 3ac: 7c 93 da a6 mfdvlim r4 +- 3b0: 7c 94 da a6 mfclcsr r4 +- 3b4: 7c 94 da a6 mfclcsr r4 +- 3b8: 7c 98 da a6 mfccr1 r4 +- 3bc: 7c 98 da a6 mfccr1 r4 +- 3c0: 7c 9b e2 a6 mfrstcfg r4 +- 3c4: 7c 9b e2 a6 mfrstcfg r4 +- 3c8: 7c 9c e2 a6 mfdcdbtrl r4 +- 3cc: 7c 9c e2 a6 mfdcdbtrl r4 +- 3d0: 7c 9d e2 a6 mfdcdbtrh r4 +- 3d4: 7c 9d e2 a6 mfdcdbtrh r4 +- 3d8: 7c 9f e2 a6 mficdbtr r4 +- 3dc: 7c 9f e2 a6 mficdbtr r4 +- 3e0: 7c 92 ea a6 mfmmucr r4 +- 3e4: 7c 92 ea a6 mfmmucr r4 +- 3e8: 7c 93 ea a6 mfccr0 r4 +- 3ec: 7c 93 ea a6 mfccr0 r4 +- 3f0: 7c 93 f2 a6 mficdbdr r4 +- 3f4: 7c 93 f2 a6 mficdbdr r4 +- 3f8: 7c 93 fa a6 mfdbdr r4 +- 3fc: 7c 93 fa a6 mfdbdr r4 +- 400: 7c 96 0b a6 mtdecar r4 +- 404: 7c 96 0b a6 mtdecar r4 ++ 0: (4e 80 00 20|20 00 80 4e) blr ++ 4: (0c 81 00 00|00 00 81 0c) tweqi r1,0 ++ 8: (10 41 01 58|58 01 41 10) macchw r2,r1,r0 ++ c: (10 41 01 59|59 01 41 10) macchw\. r2,r1,r0 ++ 10: (10 41 05 58|58 05 41 10) macchwo r2,r1,r0 ++ 14: (10 41 05 59|59 05 41 10) macchwo\. r2,r1,r0 ++ 18: (10 41 01 d8|d8 01 41 10) macchws r2,r1,r0 ++ 1c: (10 41 01 d9|d9 01 41 10) macchws\. r2,r1,r0 ++ 20: (10 41 05 d8|d8 05 41 10) macchwso r2,r1,r0 ++ 24: (10 41 05 d9|d9 05 41 10) macchwso\. r2,r1,r0 ++ 28: (10 41 01 98|98 01 41 10) macchwsu r2,r1,r0 ++ 2c: (10 41 01 99|99 01 41 10) macchwsu\. r2,r1,r0 ++ 30: (10 41 05 98|98 05 41 10) macchwsuo r2,r1,r0 ++ 34: (10 41 05 99|99 05 41 10) macchwsuo\. r2,r1,r0 ++ 38: (10 41 01 18|18 01 41 10) macchwu r2,r1,r0 ++ 3c: (10 41 01 19|19 01 41 10) macchwu\. r2,r1,r0 ++ 40: (10 41 05 18|18 05 41 10) macchwuo r2,r1,r0 ++ 44: (10 41 05 19|19 05 41 10) macchwuo\. r2,r1,r0 ++ 48: (10 41 00 58|58 00 41 10) machhw r2,r1,r0 ++ 4c: (10 41 00 59|59 00 41 10) machhw\. r2,r1,r0 ++ 50: (10 41 04 58|58 04 41 10) machhwo r2,r1,r0 ++ 54: (10 41 04 59|59 04 41 10) machhwo\. r2,r1,r0 ++ 58: (10 41 00 d8|d8 00 41 10) machhws r2,r1,r0 ++ 5c: (10 41 00 d9|d9 00 41 10) machhws\. r2,r1,r0 ++ 60: (10 41 04 d8|d8 04 41 10) machhwso r2,r1,r0 ++ 64: (10 41 04 d9|d9 04 41 10) machhwso\. r2,r1,r0 ++ 68: (10 41 00 98|98 00 41 10) machhwsu r2,r1,r0 ++ 6c: (10 41 00 99|99 00 41 10) machhwsu\. r2,r1,r0 ++ 70: (10 41 04 98|98 04 41 10) machhwsuo r2,r1,r0 ++ 74: (10 41 04 99|99 04 41 10) machhwsuo\. r2,r1,r0 ++ 78: (10 41 00 18|18 00 41 10) machhwu r2,r1,r0 ++ 7c: (10 41 00 19|19 00 41 10) machhwu\. r2,r1,r0 ++ 80: (10 41 04 18|18 04 41 10) machhwuo r2,r1,r0 ++ 84: (10 41 04 19|19 04 41 10) machhwuo\. r2,r1,r0 ++ 88: (10 41 03 58|58 03 41 10) maclhw r2,r1,r0 ++ 8c: (10 41 03 59|59 03 41 10) maclhw\. r2,r1,r0 ++ 90: (10 41 07 58|58 07 41 10) maclhwo r2,r1,r0 ++ 94: (10 41 07 59|59 07 41 10) maclhwo\. r2,r1,r0 ++ 98: (10 41 03 d8|d8 03 41 10) maclhws r2,r1,r0 ++ 9c: (10 41 03 d9|d9 03 41 10) maclhws\. r2,r1,r0 ++ a0: (10 41 07 d8|d8 07 41 10) maclhwso r2,r1,r0 ++ a4: (10 41 07 d9|d9 07 41 10) maclhwso\. r2,r1,r0 ++ a8: (10 41 03 98|98 03 41 10) maclhwsu r2,r1,r0 ++ ac: (10 41 03 99|99 03 41 10) maclhwsu\. r2,r1,r0 ++ b0: (10 41 07 98|98 07 41 10) maclhwsuo r2,r1,r0 ++ b4: (10 41 07 99|99 07 41 10) maclhwsuo\. r2,r1,r0 ++ b8: (10 41 03 18|18 03 41 10) maclhwu r2,r1,r0 ++ bc: (10 41 03 19|19 03 41 10) maclhwu\. r2,r1,r0 ++ c0: (10 41 07 18|18 07 41 10) maclhwuo r2,r1,r0 ++ c4: (10 41 07 19|19 07 41 10) maclhwuo\. r2,r1,r0 ++ c8: (10 41 01 5c|5c 01 41 10) nmacchw r2,r1,r0 ++ cc: (10 41 01 5d|5d 01 41 10) nmacchw\. r2,r1,r0 ++ d0: (10 41 05 5c|5c 05 41 10) nmacchwo r2,r1,r0 ++ d4: (10 41 05 5d|5d 05 41 10) nmacchwo\. r2,r1,r0 ++ d8: (10 41 01 dc|dc 01 41 10) nmacchws r2,r1,r0 ++ dc: (10 41 01 dd|dd 01 41 10) nmacchws\. r2,r1,r0 ++ e0: (10 41 05 dc|dc 05 41 10) nmacchwso r2,r1,r0 ++ e4: (10 41 05 dd|dd 05 41 10) nmacchwso\. r2,r1,r0 ++ e8: (10 41 00 5c|5c 00 41 10) nmachhw r2,r1,r0 ++ ec: (10 41 00 5d|5d 00 41 10) nmachhw\. r2,r1,r0 ++ f0: (10 41 04 5c|5c 04 41 10) nmachhwo r2,r1,r0 ++ f4: (10 41 04 5d|5d 04 41 10) nmachhwo\. r2,r1,r0 ++ f8: (10 41 00 dc|dc 00 41 10) nmachhws r2,r1,r0 ++ fc: (10 41 00 dd|dd 00 41 10) nmachhws\. r2,r1,r0 ++ 100: (10 41 04 dc|dc 04 41 10) nmachhwso r2,r1,r0 ++ 104: (10 41 04 dd|dd 04 41 10) nmachhwso\. r2,r1,r0 ++ 108: (10 41 03 5c|5c 03 41 10) nmaclhw r2,r1,r0 ++ 10c: (10 41 03 5d|5d 03 41 10) nmaclhw\. r2,r1,r0 ++ 110: (10 41 07 5c|5c 07 41 10) nmaclhwo r2,r1,r0 ++ 114: (10 41 07 5d|5d 07 41 10) nmaclhwo\. r2,r1,r0 ++ 118: (10 41 03 dc|dc 03 41 10) nmaclhws r2,r1,r0 ++ 11c: (10 41 03 dd|dd 03 41 10) nmaclhws\. r2,r1,r0 ++ 120: (10 41 07 dc|dc 07 41 10) nmaclhwso r2,r1,r0 ++ 124: (10 41 07 dd|dd 07 41 10) nmaclhwso\. r2,r1,r0 ++ 128: (10 41 01 50|50 01 41 10) mulchw r2,r1,r0 ++ 12c: (10 41 01 51|51 01 41 10) mulchw\. r2,r1,r0 ++ 130: (10 41 01 10|10 01 41 10) mulchwu r2,r1,r0 ++ 134: (10 41 01 11|11 01 41 10) mulchwu\. r2,r1,r0 ++ 138: (10 41 00 50|50 00 41 10) mulhhw r2,r1,r0 ++ 13c: (10 41 00 51|51 00 41 10) mulhhw\. r2,r1,r0 ++ 140: (10 41 00 10|10 00 41 10) mulhhwu r2,r1,r0 ++ 144: (10 41 00 11|11 00 41 10) mulhhwu\. r2,r1,r0 ++ 148: (10 41 03 50|50 03 41 10) mullhw r2,r1,r0 ++ 14c: (10 41 03 51|51 03 41 10) mullhw\. r2,r1,r0 ++ 150: (10 41 03 10|10 03 41 10) mullhwu r2,r1,r0 ++ 154: (10 41 03 11|11 03 41 10) mullhwu\. r2,r1,r0 ++ 158: (7c 22 00 9c|9c 00 22 7c) dlmzb r2,r1,r0 ++ 15c: (7c 22 00 9d|9d 00 22 7c) dlmzb\. r2,r1,r0 ++ 160: (7c 02 0b 8c|8c 0b 02 7c) dccci r2,r1 ++ 164: (7c 02 0f 8c|8c 0f 02 7c) iccci r2,r1 ++ 168: (7c 02 0b 0c|0c 0b 02 7c) dcblc r2,r1 ++ 16c: (7c 02 0b 0c|0c 0b 02 7c) dcblc r2,r1 ++ 170: (7c 22 0b 0c|0c 0b 22 7c) dcblc 1,r2,r1 ++ 174: (7c 02 09 4c|4c 09 02 7c) dcbtls r2,r1 ++ 178: (7c 02 09 4c|4c 09 02 7c) dcbtls r2,r1 ++ 17c: (7c 22 09 4c|4c 09 22 7c) dcbtls 1,r2,r1 ++ 180: (7c 02 09 0c|0c 09 02 7c) dcbtstls r2,r1 ++ 184: (7c 02 09 0c|0c 09 02 7c) dcbtstls r2,r1 ++ 188: (7c 22 09 0c|0c 09 22 7c) dcbtstls 1,r2,r1 ++ 18c: (7c 02 09 cc|cc 09 02 7c) icblc r2,r1 ++ 190: (7c 02 09 cc|cc 09 02 7c) icblc r2,r1 ++ 194: (7c 22 09 cc|cc 09 22 7c) icblc 1,r2,r1 ++ 198: (7c 02 0b cc|cc 0b 02 7c) icbtls r2,r1 ++ 19c: (7c 02 0b cc|cc 0b 02 7c) icbtls r2,r1 ++ 1a0: (7c 22 0b cc|cc 0b 22 7c) icbtls 1,r2,r1 ++ 1a4: (7c 41 02 8c|8c 02 41 7c) dcread r2,r1,r0 ++ 1a8: (7c 02 0f cc|cc 0f 02 7c) icread r2,r1 ++ 1ac: (7c 41 02 9c|9c 02 41 7c) mfpmr r2,1 ++ 1b0: (7c 22 02 9c|9c 02 22 7c) mfpmr r1,2 ++ 1b4: (7c 81 02 a6|a6 02 81 7c) mfxer r4 ++ 1b8: (7c 81 02 a6|a6 02 81 7c) mfxer r4 ++ 1bc: (7c 88 02 a6|a6 02 88 7c) mflr r4 ++ 1c0: (7c 88 02 a6|a6 02 88 7c) mflr r4 ++ 1c4: (7c 89 02 a6|a6 02 89 7c) mfctr r4 ++ 1c8: (7c 89 02 a6|a6 02 89 7c) mfctr r4 ++ 1cc: (7c 96 02 a6|a6 02 96 7c) mfdec r4 ++ 1d0: (7c 96 02 a6|a6 02 96 7c) mfdec r4 ++ 1d4: (7c 9a 02 a6|a6 02 9a 7c) mfsrr0 r4 ++ 1d8: (7c 9a 02 a6|a6 02 9a 7c) mfsrr0 r4 ++ 1dc: (7c 9b 02 a6|a6 02 9b 7c) mfsrr1 r4 ++ 1e0: (7c 9b 02 a6|a6 02 9b 7c) mfsrr1 r4 ++ 1e4: (7c 90 0a a6|a6 0a 90 7c) mfpid r4 ++ 1e8: (7c 90 0a a6|a6 0a 90 7c) mfpid r4 ++ 1ec: (7c 9a 0a a6|a6 0a 9a 7c) mfcsrr0 r4 ++ 1f0: (7c 9a 0a a6|a6 0a 9a 7c) mfcsrr0 r4 ++ 1f4: (7c 9b 0a a6|a6 0a 9b 7c) mfcsrr1 r4 ++ 1f8: (7c 9b 0a a6|a6 0a 9b 7c) mfcsrr1 r4 ++ 1fc: (7c 9d 0a a6|a6 0a 9d 7c) mfdear r4 ++ 200: (7c 9d 0a a6|a6 0a 9d 7c) mfdear r4 ++ 204: (7c 9e 0a a6|a6 0a 9e 7c) mfesr r4 ++ 208: (7c 9e 0a a6|a6 0a 9e 7c) mfesr r4 ++ 20c: (7c 9f 0a a6|a6 0a 9f 7c) mfivpr r4 ++ 210: (7c 9f 0a a6|a6 0a 9f 7c) mfivpr r4 ++ 214: (7c 80 42 a6|a6 42 80 7c) mfusprg0 r4 ++ 218: (7c 80 42 a6|a6 42 80 7c) mfusprg0 r4 ++ 21c: (7c 84 42 a6|a6 42 84 7c) mfsprg r4,4 ++ 220: (7c 84 42 a6|a6 42 84 7c) mfsprg r4,4 ++ 224: (7c 85 42 a6|a6 42 85 7c) mfsprg r4,5 ++ 228: (7c 85 42 a6|a6 42 85 7c) mfsprg r4,5 ++ 22c: (7c 86 42 a6|a6 42 86 7c) mfsprg r4,6 ++ 230: (7c 86 42 a6|a6 42 86 7c) mfsprg r4,6 ++ 234: (7c 87 42 a6|a6 42 87 7c) mfsprg r4,7 ++ 238: (7c 87 42 a6|a6 42 87 7c) mfsprg r4,7 ++ 23c: (7c 8c 42 a6|a6 42 8c 7c) mftb r4 ++ 240: (7c 8c 42 a6|a6 42 8c 7c) mftb r4 ++ 244: (7c 8c 42 a6|a6 42 8c 7c) mftb r4 ++ 248: (7c 8d 42 a6|a6 42 8d 7c) mftbu r4 ++ 24c: (7c 8d 42 a6|a6 42 8d 7c) mftbu r4 ++ 250: (7c 90 42 a6|a6 42 90 7c) mfsprg r4,0 ++ 254: (7c 90 42 a6|a6 42 90 7c) mfsprg r4,0 ++ 258: (7c 91 42 a6|a6 42 91 7c) mfsprg r4,1 ++ 25c: (7c 91 42 a6|a6 42 91 7c) mfsprg r4,1 ++ 260: (7c 92 42 a6|a6 42 92 7c) mfsprg r4,2 ++ 264: (7c 92 42 a6|a6 42 92 7c) mfsprg r4,2 ++ 268: (7c 93 42 a6|a6 42 93 7c) mfsprg r4,3 ++ 26c: (7c 93 42 a6|a6 42 93 7c) mfsprg r4,3 ++ 270: (7c 9e 42 a6|a6 42 9e 7c) mfpir r4 ++ 274: (7c 9e 42 a6|a6 42 9e 7c) mfpir r4 ++ 278: (7c 9f 42 a6|a6 42 9f 7c) mfpvr r4 ++ 27c: (7c 9f 42 a6|a6 42 9f 7c) mfpvr r4 ++ 280: (7c 90 4a a6|a6 4a 90 7c) mfdbsr r4 ++ 284: (7c 90 4a a6|a6 4a 90 7c) mfdbsr r4 ++ 288: (7c 94 4a a6|a6 4a 94 7c) mfdbcr0 r4 ++ 28c: (7c 94 4a a6|a6 4a 94 7c) mfdbcr0 r4 ++ 290: (7c 95 4a a6|a6 4a 95 7c) mfdbcr1 r4 ++ 294: (7c 95 4a a6|a6 4a 95 7c) mfdbcr1 r4 ++ 298: (7c 96 4a a6|a6 4a 96 7c) mfdbcr2 r4 ++ 29c: (7c 96 4a a6|a6 4a 96 7c) mfdbcr2 r4 ++ 2a0: (7c 98 4a a6|a6 4a 98 7c) mfiac1 r4 ++ 2a4: (7c 98 4a a6|a6 4a 98 7c) mfiac1 r4 ++ 2a8: (7c 99 4a a6|a6 4a 99 7c) mfiac2 r4 ++ 2ac: (7c 99 4a a6|a6 4a 99 7c) mfiac2 r4 ++ 2b0: (7c 9a 4a a6|a6 4a 9a 7c) mfiac3 r4 ++ 2b4: (7c 9a 4a a6|a6 4a 9a 7c) mfiac3 r4 ++ 2b8: (7c 9b 4a a6|a6 4a 9b 7c) mfiac4 r4 ++ 2bc: (7c 9b 4a a6|a6 4a 9b 7c) mfiac4 r4 ++ 2c0: (7c 9c 4a a6|a6 4a 9c 7c) mfdac1 r4 ++ 2c4: (7c 9c 4a a6|a6 4a 9c 7c) mfdac1 r4 ++ 2c8: (7c 9d 4a a6|a6 4a 9d 7c) mfdac2 r4 ++ 2cc: (7c 9d 4a a6|a6 4a 9d 7c) mfdac2 r4 ++ 2d0: (7c 9e 4a a6|a6 4a 9e 7c) mfdvc1 r4 ++ 2d4: (7c 9e 4a a6|a6 4a 9e 7c) mfdvc1 r4 ++ 2d8: (7c 9f 4a a6|a6 4a 9f 7c) mfdvc2 r4 ++ 2dc: (7c 9f 4a a6|a6 4a 9f 7c) mfdvc2 r4 ++ 2e0: (7c 90 52 a6|a6 52 90 7c) mftsr r4 ++ 2e4: (7c 90 52 a6|a6 52 90 7c) mftsr r4 ++ 2e8: (7c 94 52 a6|a6 52 94 7c) mftcr r4 ++ 2ec: (7c 94 52 a6|a6 52 94 7c) mftcr r4 ++ 2f0: (7c 90 62 a6|a6 62 90 7c) mfivor0 r4 ++ 2f4: (7c 90 62 a6|a6 62 90 7c) mfivor0 r4 ++ 2f8: (7c 91 62 a6|a6 62 91 7c) mfivor1 r4 ++ 2fc: (7c 91 62 a6|a6 62 91 7c) mfivor1 r4 ++ 300: (7c 92 62 a6|a6 62 92 7c) mfivor2 r4 ++ 304: (7c 92 62 a6|a6 62 92 7c) mfivor2 r4 ++ 308: (7c 93 62 a6|a6 62 93 7c) mfivor3 r4 ++ 30c: (7c 93 62 a6|a6 62 93 7c) mfivor3 r4 ++ 310: (7c 94 62 a6|a6 62 94 7c) mfivor4 r4 ++ 314: (7c 94 62 a6|a6 62 94 7c) mfivor4 r4 ++ 318: (7c 95 62 a6|a6 62 95 7c) mfivor5 r4 ++ 31c: (7c 95 62 a6|a6 62 95 7c) mfivor5 r4 ++ 320: (7c 96 62 a6|a6 62 96 7c) mfivor6 r4 ++ 324: (7c 96 62 a6|a6 62 96 7c) mfivor6 r4 ++ 328: (7c 97 62 a6|a6 62 97 7c) mfivor7 r4 ++ 32c: (7c 97 62 a6|a6 62 97 7c) mfivor7 r4 ++ 330: (7c 98 62 a6|a6 62 98 7c) mfivor8 r4 ++ 334: (7c 98 62 a6|a6 62 98 7c) mfivor8 r4 ++ 338: (7c 99 62 a6|a6 62 99 7c) mfivor9 r4 ++ 33c: (7c 99 62 a6|a6 62 99 7c) mfivor9 r4 ++ 340: (7c 9a 62 a6|a6 62 9a 7c) mfivor10 r4 ++ 344: (7c 9a 62 a6|a6 62 9a 7c) mfivor10 r4 ++ 348: (7c 9b 62 a6|a6 62 9b 7c) mfivor11 r4 ++ 34c: (7c 9b 62 a6|a6 62 9b 7c) mfivor11 r4 ++ 350: (7c 9c 62 a6|a6 62 9c 7c) mfivor12 r4 ++ 354: (7c 9c 62 a6|a6 62 9c 7c) mfivor12 r4 ++ 358: (7c 9d 62 a6|a6 62 9d 7c) mfivor13 r4 ++ 35c: (7c 9d 62 a6|a6 62 9d 7c) mfivor13 r4 ++ 360: (7c 9e 62 a6|a6 62 9e 7c) mfivor14 r4 ++ 364: (7c 9e 62 a6|a6 62 9e 7c) mfivor14 r4 ++ 368: (7c 9f 62 a6|a6 62 9f 7c) mfivor15 r4 ++ 36c: (7c 9f 62 a6|a6 62 9f 7c) mfivor15 r4 ++ 370: (7c 93 82 a6|a6 82 93 7c) mfivor35 r4 ++ 374: (7c 93 82 a6|a6 82 93 7c) mfivor35 r4 ++ 378: (7c 9a 8a a6|a6 8a 9a 7c) mfdc_dat r4 ++ 37c: (7c 9a 8a a6|a6 8a 9a 7c) mfdc_dat r4 ++ 380: (7c 9b 8a a6|a6 8a 9b 7c) mfmcsrr1 r4 ++ 384: (7c 9b 8a a6|a6 8a 9b 7c) mfmcsrr1 r4 ++ 388: (7c 9c 8a a6|a6 8a 9c 7c) mfmcsr r4 ++ 38c: (7c 9c 8a a6|a6 8a 9c 7c) mfmcsr r4 ++ 390: (7c 90 da a6|a6 da 90 7c) mfivndx r4 ++ 394: (7c 90 da a6|a6 da 90 7c) mfivndx r4 ++ 398: (7c 91 da a6|a6 da 91 7c) mfdvndx r4 ++ 39c: (7c 91 da a6|a6 da 91 7c) mfdvndx r4 ++ 3a0: (7c 92 da a6|a6 da 92 7c) mfivlim r4 ++ 3a4: (7c 92 da a6|a6 da 92 7c) mfivlim r4 ++ 3a8: (7c 93 da a6|a6 da 93 7c) mfdvlim r4 ++ 3ac: (7c 93 da a6|a6 da 93 7c) mfdvlim r4 ++ 3b0: (7c 94 da a6|a6 da 94 7c) mfclcsr r4 ++ 3b4: (7c 94 da a6|a6 da 94 7c) mfclcsr r4 ++ 3b8: (7c 98 da a6|a6 da 98 7c) mfccr1 r4 ++ 3bc: (7c 98 da a6|a6 da 98 7c) mfccr1 r4 ++ 3c0: (7c 9b e2 a6|a6 e2 9b 7c) mfrstcfg r4 ++ 3c4: (7c 9b e2 a6|a6 e2 9b 7c) mfrstcfg r4 ++ 3c8: (7c 9c e2 a6|a6 e2 9c 7c) mfdcdbtrl r4 ++ 3cc: (7c 9c e2 a6|a6 e2 9c 7c) mfdcdbtrl r4 ++ 3d0: (7c 9d e2 a6|a6 e2 9d 7c) mfdcdbtrh r4 ++ 3d4: (7c 9d e2 a6|a6 e2 9d 7c) mfdcdbtrh r4 ++ 3d8: (7c 9f e2 a6|a6 e2 9f 7c) mficdbtr r4 ++ 3dc: (7c 9f e2 a6|a6 e2 9f 7c) mficdbtr r4 ++ 3e0: (7c 92 ea a6|a6 ea 92 7c) mfmmucr r4 ++ 3e4: (7c 92 ea a6|a6 ea 92 7c) mfmmucr r4 ++ 3e8: (7c 93 ea a6|a6 ea 93 7c) mfccr0 r4 ++ 3ec: (7c 93 ea a6|a6 ea 93 7c) mfccr0 r4 ++ 3f0: (7c 93 f2 a6|a6 f2 93 7c) mficdbdr r4 ++ 3f4: (7c 93 f2 a6|a6 f2 93 7c) mficdbdr r4 ++ 3f8: (7c 93 fa a6|a6 fa 93 7c) mfdbdr r4 ++ 3fc: (7c 93 fa a6|a6 fa 93 7c) mfdbdr r4 ++ 400: (7c 96 0b a6|a6 0b 96 7c) mtdecar r4 ++ 404: (7c 96 0b a6|a6 0b 96 7c) mtdecar r4 +diff --git a/gas/testsuite/gas/ppc/titan.s b/gas/testsuite/gas/ppc/titan.s +index 7155a5a..7bde43c 100644 +--- a/gas/testsuite/gas/ppc/titan.s ++++ b/gas/testsuite/gas/ppc/titan.s +@@ -1,5 +1,5 @@ + # AppliedMicro Titan tests +- .section ".text" ++ .text + start: + blr + tweqi 1, 0 +diff --git a/gas/testsuite/gas/ppc/vle-reloc.s b/gas/testsuite/gas/ppc/vle-reloc.s +index fb2a01a..fcddf9b 100644 +--- a/gas/testsuite/gas/ppc/vle-reloc.s ++++ b/gas/testsuite/gas/ppc/vle-reloc.s +@@ -1,4 +1,4 @@ +- .section .text ++ .text + se_b sub1 + se_bl sub1 + se_bc 0,1,sub2 +diff --git a/gas/testsuite/gas/ppc/vle-simple-1.s b/gas/testsuite/gas/ppc/vle-simple-1.s +index bbd7c7b..074cc0f 100644 +--- a/gas/testsuite/gas/ppc/vle-simple-1.s ++++ b/gas/testsuite/gas/ppc/vle-simple-1.s +@@ -1,4 +1,4 @@ +- .section .text ++ .text + + target0: + se_beq target3 +diff --git a/gas/testsuite/gas/ppc/vle-simple-2.s b/gas/testsuite/gas/ppc/vle-simple-2.s +index 73b3277..8f95dc2 100644 +--- a/gas/testsuite/gas/ppc/vle-simple-2.s ++++ b/gas/testsuite/gas/ppc/vle-simple-2.s +@@ -1,4 +1,4 @@ +- .section .text ++ .text + + target0: + e_bdnz target1 +diff --git a/gas/testsuite/gas/ppc/vle-simple-3.s b/gas/testsuite/gas/ppc/vle-simple-3.s +index a0d7d80..a973dfe 100644 +--- a/gas/testsuite/gas/ppc/vle-simple-3.s ++++ b/gas/testsuite/gas/ppc/vle-simple-3.s +@@ -1,4 +1,4 @@ +- .section .text ++ .text + trap: + trap + twlt 1, 2 +diff --git a/gas/testsuite/gas/ppc/vle-simple-4.s b/gas/testsuite/gas/ppc/vle-simple-4.s +index 5a7befd..8f9c9d1 100755 +--- a/gas/testsuite/gas/ppc/vle-simple-4.s ++++ b/gas/testsuite/gas/ppc/vle-simple-4.s +@@ -1,4 +1,4 @@ +- .section .text ++ .text + + subtract: + sub 1, 2, 3 +diff --git a/gas/testsuite/gas/ppc/vle-simple-5.s b/gas/testsuite/gas/ppc/vle-simple-5.s +index e7a2d9b..c903515 100644 +--- a/gas/testsuite/gas/ppc/vle-simple-5.s ++++ b/gas/testsuite/gas/ppc/vle-simple-5.s +@@ -1,4 +1,4 @@ +- .section .text ++ .text + + e_extlwi 2, 2, 1, 0 + e_extrwi 2, 3, 10, 5 +diff --git a/gas/testsuite/gas/ppc/vle-simple-6.s b/gas/testsuite/gas/ppc/vle-simple-6.s +index 4d10dd7..ae10f58 100644 +--- a/gas/testsuite/gas/ppc/vle-simple-6.s ++++ b/gas/testsuite/gas/ppc/vle-simple-6.s +@@ -1,4 +1,4 @@ +- .section .text ++ .text + + mtmas1 5 + +diff --git a/gas/testsuite/gas/ppc/vle.s b/gas/testsuite/gas/ppc/vle.s +index 698d618..cab6120 100755 +--- a/gas/testsuite/gas/ppc/vle.s ++++ b/gas/testsuite/gas/ppc/vle.s +@@ -1,6 +1,6 @@ + # Freescale PowerPC VLE instruction tests + #as: -mvle +- .section .text ++ .text + .extern extern_subr + .equ UI8,0x37 + .equ SCI0,UI8<<0 +diff --git a/gas/testsuite/gas/ppc/vsx.d b/gas/testsuite/gas/ppc/vsx.d +index 68e35f3..7ce57da 100644 +--- a/gas/testsuite/gas/ppc/vsx.d ++++ b/gas/testsuite/gas/ppc/vsx.d +@@ -2,167 +2,167 @@ + #objdump: -d -Mvsx + #name: VSX tests + +-.*: +file format elf(32)?(64)?-powerpc.* ++.* + + + Disassembly of section \.text: + + 0+00 : +- 0: 7d 0a a4 99 lxsdx vs40,r10,r20 +- 4: 7d 0a a6 99 lxvd2x vs40,r10,r20 +- 8: 7d 0a a2 99 lxvdsx vs40,r10,r20 +- c: 7d 0a a6 19 lxvw4x vs40,r10,r20 +- 10: 7d 0a a5 99 stxsdx vs40,r10,r20 +- 14: 7d 0a a7 99 stxvd2x vs40,r10,r20 +- 18: 7d 0a a7 19 stxvw4x vs40,r10,r20 +- 1c: f1 00 e5 67 xsabsdp vs40,vs60 +- 20: f1 12 e1 07 xsadddp vs40,vs50,vs60 +- 24: f0 92 e1 5e xscmpodp cr1,vs50,vs60 +- 28: f0 92 e1 1e xscmpudp cr1,vs50,vs60 +- 2c: f1 12 e5 87 xscpsgndp vs40,vs50,vs60 +- 30: f1 00 e4 27 xscvdpsp vs40,vs60 +- 34: f1 00 e5 63 xscvdpsxds vs40,vs60 +- 38: f1 00 e1 63 xscvdpsxws vs40,vs60 +- 3c: f1 00 e5 23 xscvdpuxds vs40,vs60 +- 40: f1 00 e1 23 xscvdpuxws vs40,vs60 +- 44: f1 00 e5 27 xscvspdp vs40,vs60 +- 48: f1 00 e5 e3 xscvsxddp vs40,vs60 +- 4c: f1 00 e5 a3 xscvuxddp vs40,vs60 +- 50: f1 12 e1 c7 xsdivdp vs40,vs50,vs60 +- 54: f1 12 e1 0f xsmaddadp vs40,vs50,vs60 +- 58: f1 12 e1 4f xsmaddmdp vs40,vs50,vs60 +- 5c: f1 12 e5 07 xsmaxdp vs40,vs50,vs60 +- 60: f1 12 e5 47 xsmindp vs40,vs50,vs60 +- 64: f1 12 e1 8f xsmsubadp vs40,vs50,vs60 +- 68: f1 12 e1 cf xsmsubmdp vs40,vs50,vs60 +- 6c: f1 12 e1 87 xsmuldp vs40,vs50,vs60 +- 70: f1 00 e5 a7 xsnabsdp vs40,vs60 +- 74: f1 00 e5 e7 xsnegdp vs40,vs60 +- 78: f1 12 e5 0f xsnmaddadp vs40,vs50,vs60 +- 7c: f1 12 e5 4f xsnmaddmdp vs40,vs50,vs60 +- 80: f1 12 e5 8f xsnmsubadp vs40,vs50,vs60 +- 84: f1 12 e5 cf xsnmsubmdp vs40,vs50,vs60 +- 88: f1 00 e1 27 xsrdpi vs40,vs60 +- 8c: f1 00 e1 af xsrdpic vs40,vs60 +- 90: f1 00 e1 e7 xsrdpim vs40,vs60 +- 94: f1 00 e1 a7 xsrdpip vs40,vs60 +- 98: f1 00 e1 67 xsrdpiz vs40,vs60 +- 9c: f1 00 e1 6b xsredp vs40,vs60 +- a0: f1 00 e1 2b xsrsqrtedp vs40,vs60 +- a4: f1 00 e1 2f xssqrtdp vs40,vs60 +- a8: f1 12 e1 47 xssubdp vs40,vs50,vs60 +- ac: f0 92 e1 ee xstdivdp cr1,vs50,vs60 +- b0: f0 80 e1 aa xstsqrtdp cr1,vs60 +- b4: f1 00 e7 67 xvabsdp vs40,vs60 +- b8: f1 00 e6 67 xvabssp vs40,vs60 +- bc: f1 12 e3 07 xvadddp vs40,vs50,vs60 +- c0: f1 12 e2 07 xvaddsp vs40,vs50,vs60 +- c4: f1 12 e3 1f xvcmpeqdp vs40,vs50,vs60 +- c8: f1 12 e7 1f xvcmpeqdp\. vs40,vs50,vs60 +- cc: f1 12 e2 1f xvcmpeqsp vs40,vs50,vs60 +- d0: f1 12 e6 1f xvcmpeqsp\. vs40,vs50,vs60 +- d4: f1 12 e3 9f xvcmpgedp vs40,vs50,vs60 +- d8: f1 12 e7 9f xvcmpgedp\. vs40,vs50,vs60 +- dc: f1 12 e2 9f xvcmpgesp vs40,vs50,vs60 +- e0: f1 12 e6 9f xvcmpgesp\. vs40,vs50,vs60 +- e4: f1 12 e3 5f xvcmpgtdp vs40,vs50,vs60 +- e8: f1 12 e7 5f xvcmpgtdp\. vs40,vs50,vs60 +- ec: f1 12 e2 5f xvcmpgtsp vs40,vs50,vs60 +- f0: f1 12 e6 5f xvcmpgtsp\. vs40,vs50,vs60 +- f4: f1 12 e7 87 xvcpsgndp vs40,vs50,vs60 +- f8: f1 1c e7 87 xvmovdp vs40,vs60 +- fc: f1 1c e7 87 xvmovdp vs40,vs60 +- 100: f1 12 e6 87 xvcpsgnsp vs40,vs50,vs60 +- 104: f1 1c e6 87 xvmovsp vs40,vs60 +- 108: f1 1c e6 87 xvmovsp vs40,vs60 +- 10c: f1 00 e6 27 xvcvdpsp vs40,vs60 +- 110: f1 00 e7 63 xvcvdpsxds vs40,vs60 +- 114: f1 00 e3 63 xvcvdpsxws vs40,vs60 +- 118: f1 00 e7 23 xvcvdpuxds vs40,vs60 +- 11c: f1 00 e3 23 xvcvdpuxws vs40,vs60 +- 120: f1 00 e7 27 xvcvspdp vs40,vs60 +- 124: f1 00 e6 63 xvcvspsxds vs40,vs60 +- 128: f1 00 e2 63 xvcvspsxws vs40,vs60 +- 12c: f1 00 e6 23 xvcvspuxds vs40,vs60 +- 130: f1 00 e2 23 xvcvspuxws vs40,vs60 +- 134: f1 00 e7 e3 xvcvsxddp vs40,vs60 +- 138: f1 00 e6 e3 xvcvsxdsp vs40,vs60 +- 13c: f1 00 e3 e3 xvcvsxwdp vs40,vs60 +- 140: f1 00 e2 e3 xvcvsxwsp vs40,vs60 +- 144: f1 00 e7 a3 xvcvuxddp vs40,vs60 +- 148: f1 00 e6 a3 xvcvuxdsp vs40,vs60 +- 14c: f1 00 e3 a3 xvcvuxwdp vs40,vs60 +- 150: f1 00 e2 a3 xvcvuxwsp vs40,vs60 +- 154: f1 12 e3 c7 xvdivdp vs40,vs50,vs60 +- 158: f1 12 e2 c7 xvdivsp vs40,vs50,vs60 +- 15c: f1 12 e3 0f xvmaddadp vs40,vs50,vs60 +- 160: f1 12 e3 4f xvmaddmdp vs40,vs50,vs60 +- 164: f1 12 e2 0f xvmaddasp vs40,vs50,vs60 +- 168: f1 12 e2 4f xvmaddmsp vs40,vs50,vs60 +- 16c: f1 12 e7 07 xvmaxdp vs40,vs50,vs60 +- 170: f1 12 e6 07 xvmaxsp vs40,vs50,vs60 +- 174: f1 12 e7 47 xvmindp vs40,vs50,vs60 +- 178: f1 12 e6 47 xvminsp vs40,vs50,vs60 +- 17c: f1 12 e3 8f xvmsubadp vs40,vs50,vs60 +- 180: f1 12 e3 cf xvmsubmdp vs40,vs50,vs60 +- 184: f1 12 e2 8f xvmsubasp vs40,vs50,vs60 +- 188: f1 12 e2 cf xvmsubmsp vs40,vs50,vs60 +- 18c: f1 12 e3 87 xvmuldp vs40,vs50,vs60 +- 190: f1 12 e2 87 xvmulsp vs40,vs50,vs60 +- 194: f1 00 e7 a7 xvnabsdp vs40,vs60 +- 198: f1 00 e6 a7 xvnabssp vs40,vs60 +- 19c: f1 00 e7 e7 xvnegdp vs40,vs60 +- 1a0: f1 00 e6 e7 xvnegsp vs40,vs60 +- 1a4: f1 12 e7 0f xvnmaddadp vs40,vs50,vs60 +- 1a8: f1 12 e7 4f xvnmaddmdp vs40,vs50,vs60 +- 1ac: f1 12 e6 0f xvnmaddasp vs40,vs50,vs60 +- 1b0: f1 12 e6 4f xvnmaddmsp vs40,vs50,vs60 +- 1b4: f1 12 e7 8f xvnmsubadp vs40,vs50,vs60 +- 1b8: f1 12 e7 cf xvnmsubmdp vs40,vs50,vs60 +- 1bc: f1 12 e6 8f xvnmsubasp vs40,vs50,vs60 +- 1c0: f1 12 e6 cf xvnmsubmsp vs40,vs50,vs60 +- 1c4: f1 00 e3 27 xvrdpi vs40,vs60 +- 1c8: f1 00 e3 af xvrdpic vs40,vs60 +- 1cc: f1 00 e3 e7 xvrdpim vs40,vs60 +- 1d0: f1 00 e3 a7 xvrdpip vs40,vs60 +- 1d4: f1 00 e3 67 xvrdpiz vs40,vs60 +- 1d8: f1 00 e3 6b xvredp vs40,vs60 +- 1dc: f1 00 e2 6b xvresp vs40,vs60 +- 1e0: f1 00 e2 27 xvrspi vs40,vs60 +- 1e4: f1 00 e2 af xvrspic vs40,vs60 +- 1e8: f1 00 e2 e7 xvrspim vs40,vs60 +- 1ec: f1 00 e2 a7 xvrspip vs40,vs60 +- 1f0: f1 00 e2 67 xvrspiz vs40,vs60 +- 1f4: f1 00 e3 2b xvrsqrtedp vs40,vs60 +- 1f8: f1 00 e2 2b xvrsqrtesp vs40,vs60 +- 1fc: f1 00 e3 2f xvsqrtdp vs40,vs60 +- 200: f1 00 e2 2f xvsqrtsp vs40,vs60 +- 204: f1 12 e3 47 xvsubdp vs40,vs50,vs60 +- 208: f1 12 e2 47 xvsubsp vs40,vs50,vs60 +- 20c: f0 92 e3 ee xvtdivdp cr1,vs50,vs60 +- 210: f0 92 e2 ee xvtdivsp cr1,vs50,vs60 +- 214: f0 80 e3 aa xvtsqrtdp cr1,vs60 +- 218: f0 80 e2 aa xvtsqrtsp cr1,vs60 +- 21c: f1 12 e4 17 xxland vs40,vs50,vs60 +- 220: f1 12 e4 57 xxlandc vs40,vs50,vs60 +- 224: f1 12 e5 17 xxlnor vs40,vs50,vs60 +- 228: f1 12 e4 97 xxlor vs40,vs50,vs60 +- 22c: f1 12 e4 d7 xxlxor vs40,vs50,vs60 +- 230: f1 12 e0 97 xxmrghw vs40,vs50,vs60 +- 234: f1 12 e1 97 xxmrglw vs40,vs50,vs60 +- 238: f1 12 e0 57 xxmrghd vs40,vs50,vs60 +- 23c: f1 12 e1 57 xxpermdi vs40,vs50,vs60,1 +- 240: f1 12 e2 57 xxpermdi vs40,vs50,vs60,2 +- 244: f1 12 e3 57 xxmrgld vs40,vs50,vs60 +- 248: f1 12 90 57 xxspltd vs40,vs50,0 +- 24c: f1 12 90 57 xxspltd vs40,vs50,0 +- 250: f1 12 93 57 xxspltd vs40,vs50,1 +- 254: f1 12 93 57 xxspltd vs40,vs50,1 +- 258: f1 12 e0 57 xxmrghd vs40,vs50,vs60 +- 25c: f1 12 e0 57 xxmrghd vs40,vs50,vs60 +- 260: f1 12 e3 57 xxmrgld vs40,vs50,vs60 +- 264: f1 12 92 57 xxswapd vs40,vs50 +- 268: f1 12 92 57 xxswapd vs40,vs50 +- 26c: f1 12 e7 bf xxsel vs40,vs50,vs60,vs62 +- 270: f1 12 e2 17 xxsldwi vs40,vs50,vs60,2 +- 274: f1 02 e2 93 xxspltw vs40,vs60,2 ++ 0: (7d 0a a4 99|99 a4 0a 7d) lxsdx vs40,r10,r20 ++ 4: (7d 0a a6 99|99 a6 0a 7d) lxvd2x vs40,r10,r20 ++ 8: (7d 0a a2 99|99 a2 0a 7d) lxvdsx vs40,r10,r20 ++ c: (7d 0a a6 19|19 a6 0a 7d) lxvw4x vs40,r10,r20 ++ 10: (7d 0a a5 99|99 a5 0a 7d) stxsdx vs40,r10,r20 ++ 14: (7d 0a a7 99|99 a7 0a 7d) stxvd2x vs40,r10,r20 ++ 18: (7d 0a a7 19|19 a7 0a 7d) stxvw4x vs40,r10,r20 ++ 1c: (f1 00 e5 67|67 e5 00 f1) xsabsdp vs40,vs60 ++ 20: (f1 12 e1 07|07 e1 12 f1) xsadddp vs40,vs50,vs60 ++ 24: (f0 92 e1 5e|5e e1 92 f0) xscmpodp cr1,vs50,vs60 ++ 28: (f0 92 e1 1e|1e e1 92 f0) xscmpudp cr1,vs50,vs60 ++ 2c: (f1 12 e5 87|87 e5 12 f1) xscpsgndp vs40,vs50,vs60 ++ 30: (f1 00 e4 27|27 e4 00 f1) xscvdpsp vs40,vs60 ++ 34: (f1 00 e5 63|63 e5 00 f1) xscvdpsxds vs40,vs60 ++ 38: (f1 00 e1 63|63 e1 00 f1) xscvdpsxws vs40,vs60 ++ 3c: (f1 00 e5 23|23 e5 00 f1) xscvdpuxds vs40,vs60 ++ 40: (f1 00 e1 23|23 e1 00 f1) xscvdpuxws vs40,vs60 ++ 44: (f1 00 e5 27|27 e5 00 f1) xscvspdp vs40,vs60 ++ 48: (f1 00 e5 e3|e3 e5 00 f1) xscvsxddp vs40,vs60 ++ 4c: (f1 00 e5 a3|a3 e5 00 f1) xscvuxddp vs40,vs60 ++ 50: (f1 12 e1 c7|c7 e1 12 f1) xsdivdp vs40,vs50,vs60 ++ 54: (f1 12 e1 0f|0f e1 12 f1) xsmaddadp vs40,vs50,vs60 ++ 58: (f1 12 e1 4f|4f e1 12 f1) xsmaddmdp vs40,vs50,vs60 ++ 5c: (f1 12 e5 07|07 e5 12 f1) xsmaxdp vs40,vs50,vs60 ++ 60: (f1 12 e5 47|47 e5 12 f1) xsmindp vs40,vs50,vs60 ++ 64: (f1 12 e1 8f|8f e1 12 f1) xsmsubadp vs40,vs50,vs60 ++ 68: (f1 12 e1 cf|cf e1 12 f1) xsmsubmdp vs40,vs50,vs60 ++ 6c: (f1 12 e1 87|87 e1 12 f1) xsmuldp vs40,vs50,vs60 ++ 70: (f1 00 e5 a7|a7 e5 00 f1) xsnabsdp vs40,vs60 ++ 74: (f1 00 e5 e7|e7 e5 00 f1) xsnegdp vs40,vs60 ++ 78: (f1 12 e5 0f|0f e5 12 f1) xsnmaddadp vs40,vs50,vs60 ++ 7c: (f1 12 e5 4f|4f e5 12 f1) xsnmaddmdp vs40,vs50,vs60 ++ 80: (f1 12 e5 8f|8f e5 12 f1) xsnmsubadp vs40,vs50,vs60 ++ 84: (f1 12 e5 cf|cf e5 12 f1) xsnmsubmdp vs40,vs50,vs60 ++ 88: (f1 00 e1 27|27 e1 00 f1) xsrdpi vs40,vs60 ++ 8c: (f1 00 e1 af|af e1 00 f1) xsrdpic vs40,vs60 ++ 90: (f1 00 e1 e7|e7 e1 00 f1) xsrdpim vs40,vs60 ++ 94: (f1 00 e1 a7|a7 e1 00 f1) xsrdpip vs40,vs60 ++ 98: (f1 00 e1 67|67 e1 00 f1) xsrdpiz vs40,vs60 ++ 9c: (f1 00 e1 6b|6b e1 00 f1) xsredp vs40,vs60 ++ a0: (f1 00 e1 2b|2b e1 00 f1) xsrsqrtedp vs40,vs60 ++ a4: (f1 00 e1 2f|2f e1 00 f1) xssqrtdp vs40,vs60 ++ a8: (f1 12 e1 47|47 e1 12 f1) xssubdp vs40,vs50,vs60 ++ ac: (f0 92 e1 ee|ee e1 92 f0) xstdivdp cr1,vs50,vs60 ++ b0: (f0 80 e1 aa|aa e1 80 f0) xstsqrtdp cr1,vs60 ++ b4: (f1 00 e7 67|67 e7 00 f1) xvabsdp vs40,vs60 ++ b8: (f1 00 e6 67|67 e6 00 f1) xvabssp vs40,vs60 ++ bc: (f1 12 e3 07|07 e3 12 f1) xvadddp vs40,vs50,vs60 ++ c0: (f1 12 e2 07|07 e2 12 f1) xvaddsp vs40,vs50,vs60 ++ c4: (f1 12 e3 1f|1f e3 12 f1) xvcmpeqdp vs40,vs50,vs60 ++ c8: (f1 12 e7 1f|1f e7 12 f1) xvcmpeqdp\. vs40,vs50,vs60 ++ cc: (f1 12 e2 1f|1f e2 12 f1) xvcmpeqsp vs40,vs50,vs60 ++ d0: (f1 12 e6 1f|1f e6 12 f1) xvcmpeqsp\. vs40,vs50,vs60 ++ d4: (f1 12 e3 9f|9f e3 12 f1) xvcmpgedp vs40,vs50,vs60 ++ d8: (f1 12 e7 9f|9f e7 12 f1) xvcmpgedp\. vs40,vs50,vs60 ++ dc: (f1 12 e2 9f|9f e2 12 f1) xvcmpgesp vs40,vs50,vs60 ++ e0: (f1 12 e6 9f|9f e6 12 f1) xvcmpgesp\. vs40,vs50,vs60 ++ e4: (f1 12 e3 5f|5f e3 12 f1) xvcmpgtdp vs40,vs50,vs60 ++ e8: (f1 12 e7 5f|5f e7 12 f1) xvcmpgtdp\. vs40,vs50,vs60 ++ ec: (f1 12 e2 5f|5f e2 12 f1) xvcmpgtsp vs40,vs50,vs60 ++ f0: (f1 12 e6 5f|5f e6 12 f1) xvcmpgtsp\. vs40,vs50,vs60 ++ f4: (f1 12 e7 87|87 e7 12 f1) xvcpsgndp vs40,vs50,vs60 ++ f8: (f1 1c e7 87|87 e7 1c f1) xvmovdp vs40,vs60 ++ fc: (f1 1c e7 87|87 e7 1c f1) xvmovdp vs40,vs60 ++ 100: (f1 12 e6 87|87 e6 12 f1) xvcpsgnsp vs40,vs50,vs60 ++ 104: (f1 1c e6 87|87 e6 1c f1) xvmovsp vs40,vs60 ++ 108: (f1 1c e6 87|87 e6 1c f1) xvmovsp vs40,vs60 ++ 10c: (f1 00 e6 27|27 e6 00 f1) xvcvdpsp vs40,vs60 ++ 110: (f1 00 e7 63|63 e7 00 f1) xvcvdpsxds vs40,vs60 ++ 114: (f1 00 e3 63|63 e3 00 f1) xvcvdpsxws vs40,vs60 ++ 118: (f1 00 e7 23|23 e7 00 f1) xvcvdpuxds vs40,vs60 ++ 11c: (f1 00 e3 23|23 e3 00 f1) xvcvdpuxws vs40,vs60 ++ 120: (f1 00 e7 27|27 e7 00 f1) xvcvspdp vs40,vs60 ++ 124: (f1 00 e6 63|63 e6 00 f1) xvcvspsxds vs40,vs60 ++ 128: (f1 00 e2 63|63 e2 00 f1) xvcvspsxws vs40,vs60 ++ 12c: (f1 00 e6 23|23 e6 00 f1) xvcvspuxds vs40,vs60 ++ 130: (f1 00 e2 23|23 e2 00 f1) xvcvspuxws vs40,vs60 ++ 134: (f1 00 e7 e3|e3 e7 00 f1) xvcvsxddp vs40,vs60 ++ 138: (f1 00 e6 e3|e3 e6 00 f1) xvcvsxdsp vs40,vs60 ++ 13c: (f1 00 e3 e3|e3 e3 00 f1) xvcvsxwdp vs40,vs60 ++ 140: (f1 00 e2 e3|e3 e2 00 f1) xvcvsxwsp vs40,vs60 ++ 144: (f1 00 e7 a3|a3 e7 00 f1) xvcvuxddp vs40,vs60 ++ 148: (f1 00 e6 a3|a3 e6 00 f1) xvcvuxdsp vs40,vs60 ++ 14c: (f1 00 e3 a3|a3 e3 00 f1) xvcvuxwdp vs40,vs60 ++ 150: (f1 00 e2 a3|a3 e2 00 f1) xvcvuxwsp vs40,vs60 ++ 154: (f1 12 e3 c7|c7 e3 12 f1) xvdivdp vs40,vs50,vs60 ++ 158: (f1 12 e2 c7|c7 e2 12 f1) xvdivsp vs40,vs50,vs60 ++ 15c: (f1 12 e3 0f|0f e3 12 f1) xvmaddadp vs40,vs50,vs60 ++ 160: (f1 12 e3 4f|4f e3 12 f1) xvmaddmdp vs40,vs50,vs60 ++ 164: (f1 12 e2 0f|0f e2 12 f1) xvmaddasp vs40,vs50,vs60 ++ 168: (f1 12 e2 4f|4f e2 12 f1) xvmaddmsp vs40,vs50,vs60 ++ 16c: (f1 12 e7 07|07 e7 12 f1) xvmaxdp vs40,vs50,vs60 ++ 170: (f1 12 e6 07|07 e6 12 f1) xvmaxsp vs40,vs50,vs60 ++ 174: (f1 12 e7 47|47 e7 12 f1) xvmindp vs40,vs50,vs60 ++ 178: (f1 12 e6 47|47 e6 12 f1) xvminsp vs40,vs50,vs60 ++ 17c: (f1 12 e3 8f|8f e3 12 f1) xvmsubadp vs40,vs50,vs60 ++ 180: (f1 12 e3 cf|cf e3 12 f1) xvmsubmdp vs40,vs50,vs60 ++ 184: (f1 12 e2 8f|8f e2 12 f1) xvmsubasp vs40,vs50,vs60 ++ 188: (f1 12 e2 cf|cf e2 12 f1) xvmsubmsp vs40,vs50,vs60 ++ 18c: (f1 12 e3 87|87 e3 12 f1) xvmuldp vs40,vs50,vs60 ++ 190: (f1 12 e2 87|87 e2 12 f1) xvmulsp vs40,vs50,vs60 ++ 194: (f1 00 e7 a7|a7 e7 00 f1) xvnabsdp vs40,vs60 ++ 198: (f1 00 e6 a7|a7 e6 00 f1) xvnabssp vs40,vs60 ++ 19c: (f1 00 e7 e7|e7 e7 00 f1) xvnegdp vs40,vs60 ++ 1a0: (f1 00 e6 e7|e7 e6 00 f1) xvnegsp vs40,vs60 ++ 1a4: (f1 12 e7 0f|0f e7 12 f1) xvnmaddadp vs40,vs50,vs60 ++ 1a8: (f1 12 e7 4f|4f e7 12 f1) xvnmaddmdp vs40,vs50,vs60 ++ 1ac: (f1 12 e6 0f|0f e6 12 f1) xvnmaddasp vs40,vs50,vs60 ++ 1b0: (f1 12 e6 4f|4f e6 12 f1) xvnmaddmsp vs40,vs50,vs60 ++ 1b4: (f1 12 e7 8f|8f e7 12 f1) xvnmsubadp vs40,vs50,vs60 ++ 1b8: (f1 12 e7 cf|cf e7 12 f1) xvnmsubmdp vs40,vs50,vs60 ++ 1bc: (f1 12 e6 8f|8f e6 12 f1) xvnmsubasp vs40,vs50,vs60 ++ 1c0: (f1 12 e6 cf|cf e6 12 f1) xvnmsubmsp vs40,vs50,vs60 ++ 1c4: (f1 00 e3 27|27 e3 00 f1) xvrdpi vs40,vs60 ++ 1c8: (f1 00 e3 af|af e3 00 f1) xvrdpic vs40,vs60 ++ 1cc: (f1 00 e3 e7|e7 e3 00 f1) xvrdpim vs40,vs60 ++ 1d0: (f1 00 e3 a7|a7 e3 00 f1) xvrdpip vs40,vs60 ++ 1d4: (f1 00 e3 67|67 e3 00 f1) xvrdpiz vs40,vs60 ++ 1d8: (f1 00 e3 6b|6b e3 00 f1) xvredp vs40,vs60 ++ 1dc: (f1 00 e2 6b|6b e2 00 f1) xvresp vs40,vs60 ++ 1e0: (f1 00 e2 27|27 e2 00 f1) xvrspi vs40,vs60 ++ 1e4: (f1 00 e2 af|af e2 00 f1) xvrspic vs40,vs60 ++ 1e8: (f1 00 e2 e7|e7 e2 00 f1) xvrspim vs40,vs60 ++ 1ec: (f1 00 e2 a7|a7 e2 00 f1) xvrspip vs40,vs60 ++ 1f0: (f1 00 e2 67|67 e2 00 f1) xvrspiz vs40,vs60 ++ 1f4: (f1 00 e3 2b|2b e3 00 f1) xvrsqrtedp vs40,vs60 ++ 1f8: (f1 00 e2 2b|2b e2 00 f1) xvrsqrtesp vs40,vs60 ++ 1fc: (f1 00 e3 2f|2f e3 00 f1) xvsqrtdp vs40,vs60 ++ 200: (f1 00 e2 2f|2f e2 00 f1) xvsqrtsp vs40,vs60 ++ 204: (f1 12 e3 47|47 e3 12 f1) xvsubdp vs40,vs50,vs60 ++ 208: (f1 12 e2 47|47 e2 12 f1) xvsubsp vs40,vs50,vs60 ++ 20c: (f0 92 e3 ee|ee e3 92 f0) xvtdivdp cr1,vs50,vs60 ++ 210: (f0 92 e2 ee|ee e2 92 f0) xvtdivsp cr1,vs50,vs60 ++ 214: (f0 80 e3 aa|aa e3 80 f0) xvtsqrtdp cr1,vs60 ++ 218: (f0 80 e2 aa|aa e2 80 f0) xvtsqrtsp cr1,vs60 ++ 21c: (f1 12 e4 17|17 e4 12 f1) xxland vs40,vs50,vs60 ++ 220: (f1 12 e4 57|57 e4 12 f1) xxlandc vs40,vs50,vs60 ++ 224: (f1 12 e5 17|17 e5 12 f1) xxlnor vs40,vs50,vs60 ++ 228: (f1 12 e4 97|97 e4 12 f1) xxlor vs40,vs50,vs60 ++ 22c: (f1 12 e4 d7|d7 e4 12 f1) xxlxor vs40,vs50,vs60 ++ 230: (f1 12 e0 97|97 e0 12 f1) xxmrghw vs40,vs50,vs60 ++ 234: (f1 12 e1 97|97 e1 12 f1) xxmrglw vs40,vs50,vs60 ++ 238: (f1 12 e0 57|57 e0 12 f1) xxmrghd vs40,vs50,vs60 ++ 23c: (f1 12 e1 57|57 e1 12 f1) xxpermdi vs40,vs50,vs60,1 ++ 240: (f1 12 e2 57|57 e2 12 f1) xxpermdi vs40,vs50,vs60,2 ++ 244: (f1 12 e3 57|57 e3 12 f1) xxmrgld vs40,vs50,vs60 ++ 248: (f1 12 90 57|57 90 12 f1) xxspltd vs40,vs50,0 ++ 24c: (f1 12 90 57|57 90 12 f1) xxspltd vs40,vs50,0 ++ 250: (f1 12 93 57|57 93 12 f1) xxspltd vs40,vs50,1 ++ 254: (f1 12 93 57|57 93 12 f1) xxspltd vs40,vs50,1 ++ 258: (f1 12 e0 57|57 e0 12 f1) xxmrghd vs40,vs50,vs60 ++ 25c: (f1 12 e0 57|57 e0 12 f1) xxmrghd vs40,vs50,vs60 ++ 260: (f1 12 e3 57|57 e3 12 f1) xxmrgld vs40,vs50,vs60 ++ 264: (f1 12 92 57|57 92 12 f1) xxswapd vs40,vs50 ++ 268: (f1 12 92 57|57 92 12 f1) xxswapd vs40,vs50 ++ 26c: (f1 12 e7 bf|bf e7 12 f1) xxsel vs40,vs50,vs60,vs62 ++ 270: (f1 12 e2 17|17 e2 12 f1) xxsldwi vs40,vs50,vs60,2 ++ 274: (f1 02 e2 93|93 e2 02 f1) xxspltw vs40,vs60,2 +diff --git a/gas/testsuite/gas/ppc/vsx.s b/gas/testsuite/gas/ppc/vsx.s +index f944d5c..6927ee1 100644 +--- a/gas/testsuite/gas/ppc/vsx.s ++++ b/gas/testsuite/gas/ppc/vsx.s +@@ -1,4 +1,4 @@ +- .section ".text" ++ .text + start: + lxsdx 40,10,20 + lxvd2x 40,10,20 +diff --git a/gas/testsuite/lib/gas-defs.exp b/gas/testsuite/lib/gas-defs.exp +index 234789a..cb81c18 100644 +--- a/gas/testsuite/lib/gas-defs.exp ++++ b/gas/testsuite/lib/gas-defs.exp +@@ -1,5 +1,5 @@ + # Copyright (C) 1993, 1994, 1997, 1998, 1999, 2000, 2001, 2002, 2003, +-# 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. ++# 2004, 2005, 2007, 2008, 2009, 2010, 2012 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 +@@ -71,7 +71,7 @@ proc gas_host_run { cmd redir } { + set return_contents_of "gas.stderr" + } elseif [regexp ">&.*" $redir] then { + # See PR 5322 for why the following line is used. +- regsub ">&" $redir "" output_file ++ regsub ">&" $redir "" output_file + set command "$cmd 2>&1" + } elseif [regexp "2>.*" $redir] then { + set output_file "gas.out" +@@ -582,7 +582,7 @@ proc run_dump_test { name {extra_options {}} } { + if { $opts(not-skip) != "" } then { + set skip 1 + foreach glob $opts(not-skip) { +- if {[istarget $glob]} { ++ if {[istarget $glob]} { + set skip 0 + break + } +@@ -597,25 +597,31 @@ proc run_dump_test { name {extra_options {}} } { + } + set skip 1 + foreach glob $opts(target) { +- if {[istarget $glob]} { ++ if {[istarget $glob]} { + set skip 0 + break + } + } +- if {$skip} { ++ if {$skip} { + unsupported $testname +- return ++ return + } + } + if { $opts(not-target) != "" } then { + foreach glob $opts(not-target) { + if {[istarget $glob]} { + unsupported $testname +- return ++ return + } + } + } + ++ if { [string match "*--compress-debug-sections*" $opts(as)] \ ++ && ![is_zlib_supported] } { ++ unsupported $testname ++ return ++ } ++ + + if { $opts(source) == "" } { + set sourcefile ${file}.s +diff --git a/gas/write.c b/gas/write.c +index a467147..56ebb6c 100644 +--- a/gas/write.c ++++ b/gas/write.c +@@ -406,8 +406,8 @@ chain_frchains_together_1 (segT section, struct frchain *frchp) + prev_fix = frchp->fix_tail; + } + } +- gas_assert (prev_frag->fr_type != 0); +- gas_assert (prev_frag != &dummy); ++ gas_assert (prev_frag != &dummy ++ && prev_frag->fr_type != 0); + prev_frag->fr_next = 0; + return prev_frag; + } +diff --git a/gold/ChangeLog b/gold/ChangeLog +index 0d3074a..1e21f57 100644 +--- a/gold/ChangeLog ++++ b/gold/ChangeLog +@@ -1,3 +1,27 @@ ++2012-12-06 Roland McGrath ++ ++ * configure.ac (HAVE_ZLIB): Use AM_ZLIB instead of AC_SEARCH_LIBS. ++ Use $ac_cv_header_zlib_h = yes as the condition in AM_CONDITIONAL. ++ * aclocal.m4: Regenerate. ++ * configure: Regenerate. ++ * Makefile.in: Regenerate. ++ * testsuite/Makefile.in: Regenerate. ++ ++2012-12-07 Roland McGrath ++ ++ * testsuite/binary_unittest.cc (Sized_binary_test): ++ Use open_descriptor rather than ::open. ++ ++2012-11-19 H.J. Lu ++ ++ PR gold/14858 ++ * x86_64.cc (Relocate::tls_ld_to_le): Support x32. ++ ++2012-11-14 Roland McGrath ++ ++ * arm.cc (Output_data_plt_arm_nacl::first_plt_entry): Use bic rather ++ than bfc instruction for data sandboxing. ++ + 2012-11-07 Roland McGrath + + * i386.cc (Target_i386::relocate_for_relocatable): Remove extraneous +diff --git a/gold/Makefile.in b/gold/Makefile.in +index 356b1d6..8b1fa72 100644 +--- a/gold/Makefile.in ++++ b/gold/Makefile.in +@@ -58,6 +58,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ + $(top_srcdir)/../config/override.m4 \ + $(top_srcdir)/../config/po.m4 \ + $(top_srcdir)/../config/progtest.m4 \ ++ $(top_srcdir)/../config/zlib.m4 \ + $(top_srcdir)/../bfd/warning.m4 $(top_srcdir)/configure.ac + am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +diff --git a/gold/aclocal.m4 b/gold/aclocal.m4 +index 00cc0f8..8321894 100644 +--- a/gold/aclocal.m4 ++++ b/gold/aclocal.m4 +@@ -988,4 +988,5 @@ m4_include([../config/nls.m4]) + m4_include([../config/override.m4]) + m4_include([../config/po.m4]) + m4_include([../config/progtest.m4]) ++m4_include([../config/zlib.m4]) + m4_include([../bfd/warning.m4]) +diff --git a/gold/arm.cc b/gold/arm.cc +index d434c9d..238cf32 100644 +--- a/gold/arm.cc ++++ b/gold/arm.cc +@@ -12196,7 +12196,7 @@ const uint32_t Output_data_plt_arm_nacl::first_plt_entry[16] = + 0xe08cc00f, // add ip, ip, pc + 0xe52dc008, // str ip, [sp, #-8]! + // Second bundle: +- 0xe7dfcf1f, // bfc ip, #30, #2 ++ 0xe3ccc103, // bic ip, ip, #0xc0000000 + 0xe59cc000, // ldr ip, [ip] + 0xe3ccc13f, // bic ip, ip, #0xc000000f + 0xe12fff1c, // bx ip +@@ -12207,7 +12207,7 @@ const uint32_t Output_data_plt_arm_nacl::first_plt_entry[16] = + // .Lplt_tail: + 0xe50dc004, // str ip, [sp, #-4] + // Fourth bundle: +- 0xe7dfcf1f, // bfc ip, #30, #2 ++ 0xe3ccc103, // bic ip, ip, #0xc0000000 + 0xe59cc000, // ldr ip, [ip] + 0xe3ccc13f, // bic ip, ip, #0xc000000f + 0xe12fff1c, // bx ip +diff --git a/gold/configure b/gold/configure +index 0bffe08..3d14be5 100755 +--- a/gold/configure ++++ b/gold/configure +@@ -784,6 +784,7 @@ enable_werror + enable_build_warnings + with_gold_ldflags + with_gold_ldadd ++with_zlib + enable_maintainer_mode + ' + ac_precious_vars='build_alias +@@ -1441,6 +1442,7 @@ Optional Packages: + --with-lib-path=dir1:dir2... set default LIB_PATH + --with-gold-ldflags=FLAGS additional link flags for gold + --with-gold-ldadd=LIBS additional libraries for gold ++ --with-zlib include zlib support (auto/yes/no) default=auto + + Some influential environment variables: + CC C compiler command +@@ -6796,7 +6798,19 @@ esac + fi + + # Link in zlib if we can. This allows us to write compressed sections. +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing zlibVersion" >&5 ++ ++ # See if the user specified whether he wants zlib support or not. ++ ++# Check whether --with-zlib was given. ++if test "${with_zlib+set}" = set; then : ++ withval=$with_zlib; ++else ++ with_zlib=auto ++fi ++ ++ ++ if test "$with_zlib" != "no"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing zlibVersion" >&5 + $as_echo_n "checking for library containing zlibVersion... " >&6; } + if test "${ac_cv_search_zlibVersion+set}" = set; then : + $as_echo_n "(cached) " >&6 +@@ -6863,7 +6877,12 @@ done + + fi + +- if test "$ac_cv_search_zlibVersion" != "no"; then ++ if test "$with_zlib" = "yes" -a "$ac_cv_header_zlib_h" != "yes"; then ++ as_fn_error "zlib (libz) library was explicitly requested but not found" "$LINENO" 5 ++ fi ++ fi ++ ++ if test "$ac_cv_header_zlib_h" = "yes"; then + HAVE_ZLIB_TRUE= + HAVE_ZLIB_FALSE='#' + else +diff --git a/gold/configure.ac b/gold/configure.ac +index c2326d3..bd3e4bd 100644 +--- a/gold/configure.ac ++++ b/gold/configure.ac +@@ -485,8 +485,8 @@ else + fi + + # Link in zlib if we can. This allows us to write compressed sections. +-AC_SEARCH_LIBS(zlibVersion, z, [AC_CHECK_HEADERS(zlib.h)]) +-AM_CONDITIONAL(HAVE_ZLIB, test "$ac_cv_search_zlibVersion" != "no") ++AM_ZLIB ++AM_CONDITIONAL(HAVE_ZLIB, test "$ac_cv_header_zlib_h" = "yes") + + dnl We have to check these in C, not C++, because autoconf generates + dnl tests which have no type information, and current glibc provides +diff --git a/gold/testsuite/Makefile.in b/gold/testsuite/Makefile.in +index 4887827..771b853 100644 +--- a/gold/testsuite/Makefile.in ++++ b/gold/testsuite/Makefile.in +@@ -663,6 +663,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ + $(top_srcdir)/../config/override.m4 \ + $(top_srcdir)/../config/po.m4 \ + $(top_srcdir)/../config/progtest.m4 \ ++ $(top_srcdir)/../config/zlib.m4 \ + $(top_srcdir)/../bfd/warning.m4 $(top_srcdir)/configure.ac + am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +diff --git a/gold/testsuite/binary_unittest.cc b/gold/testsuite/binary_unittest.cc +index a9f47c2..6e7b244 100644 +--- a/gold/testsuite/binary_unittest.cc ++++ b/gold/testsuite/binary_unittest.cc +@@ -1,6 +1,6 @@ + // binary_unittest.cc -- test Binary_to_elf + +-// Copyright 2008 Free Software Foundation, Inc. ++// Copyright 2008, 2012 Free Software Foundation, Inc. + // Written by Ian Lance Taylor . + + // This file is part of gold. +@@ -33,6 +33,7 @@ + #include "options.h" + #include "binary.h" + #include "object.h" ++#include "descriptors.h" + + #include "test.h" + #include "testfile.h" +@@ -53,7 +54,7 @@ Sized_binary_test() + // Use the executable itself as the binary data. + struct stat st; + CHECK(::stat(gold::program_name, &st) == 0); +- int o = ::open(gold::program_name, O_RDONLY); ++ int o = open_descriptor(-1, gold::program_name, O_RDONLY); + CHECK(o >= 0); + unsigned char* filedata = new unsigned char[st.st_size]; + CHECK(::read(o, filedata, st.st_size) == st.st_size); +diff --git a/gold/x86_64.cc b/gold/x86_64.cc +index b5b616f..8ddf4f2 100644 +--- a/gold/x86_64.cc ++++ b/gold/x86_64.cc +@@ -3959,8 +3959,12 @@ Target_x86_64::Relocate::tls_ld_to_le( + section_size_type view_size) + { + // leaq foo@tlsld(%rip),%rdi; call __tls_get_addr@plt; ++ // For SIZE == 64: + // ... leq foo@dtpoff(%rax),%reg + // ==> .word 0x6666; .byte 0x66; movq %fs:0,%rax ... leaq x@tpoff(%rax),%rdx ++ // For SIZE == 32: ++ // ... leq foo@dtpoff(%rax),%reg ++ // ==> nopl 0x0(%rax); movl %fs:0,%eax ... leaq x@tpoff(%rax),%rdx + + tls::check_range(relinfo, relnum, rela.get_r_offset(), view_size, -3); + tls::check_range(relinfo, relnum, rela.get_r_offset(), view_size, 9); +@@ -3970,7 +3974,10 @@ Target_x86_64::Relocate::tls_ld_to_le( + + tls::check_tls(relinfo, relnum, rela.get_r_offset(), view[4] == 0xe8); + +- memcpy(view - 3, "\x66\x66\x66\x64\x48\x8b\x04\x25\0\0\0\0", 12); ++ if (size == 64) ++ memcpy(view - 3, "\x66\x66\x66\x64\x48\x8b\x04\x25\0\0\0\0", 12); ++ else ++ memcpy(view - 3, "\x0f\x1f\x40\x00\x64\x8b\x04\x25\0\0\0\0", 12); + + // The next reloc should be a PLT32 reloc against __tls_get_addr. + // We can skip it. +diff --git a/include/opcode/ChangeLog b/include/opcode/ChangeLog +index 1f64fb8..cb9f60f 100644 +--- a/include/opcode/ChangeLog ++++ b/include/opcode/ChangeLog +@@ -1,3 +1,13 @@ ++2013-02-12 Yufeng Zhang ++ ++ * aarch64.h (aarch64_op): Add OP_SXTL, OP_SXTL2, OP_UXTL and OP_UXTL2. ++ ++2013-01-22 Alan Modra ++ ++ Apply mainline patches ++ 2012-11-23 Alan Modra ++ * ppc.h (ppc_parse_cpu): Update prototype. ++ + 2012-08-13 Richard Sandiford + Maciej W. Rozycki + +diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h +index f3db103..b1f19bc 100644 +--- a/include/opcode/aarch64.h ++++ b/include/opcode/aarch64.h +@@ -1,6 +1,6 @@ + /* AArch64 assembler/disassembler support. + +- Copyright 2009, 2010, 2011, 2012 Free Software Foundation, Inc. ++ Copyright 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. + Contributed by ARM Ltd. + + This file is part of GNU Binutils. +@@ -422,6 +422,11 @@ enum aarch64_op + + OP_ROR_IMM, + ++ OP_SXTL, ++ OP_SXTL2, ++ OP_UXTL, ++ OP_UXTL2, ++ + OP_TOTAL_NUM, /* Pseudo. */ + }; + +diff --git a/include/opcode/ppc.h b/include/opcode/ppc.h +index 2e789d6..e57b118 100644 +--- a/include/opcode/ppc.h ++++ b/include/opcode/ppc.h +@@ -400,6 +400,6 @@ struct powerpc_macro + extern const struct powerpc_macro powerpc_macros[]; + extern const int powerpc_num_macros; + +-extern ppc_cpu_t ppc_parse_cpu (ppc_cpu_t, const char *); ++extern ppc_cpu_t ppc_parse_cpu (ppc_cpu_t, ppc_cpu_t *, const char *); + + #endif /* PPC_H */ +diff --git a/ld/ChangeLog b/ld/ChangeLog +index 9f33f64..670b51e 100644 +--- a/ld/ChangeLog ++++ b/ld/ChangeLog +@@ -1,3 +1,82 @@ ++2013-01-22 Alan Modra ++ ++ Apply mainline patches ++ 2013-01-08 Alan Modra ++ * emultempl/elf32.em (gld${EMULATION_NAME}_check_ld_so_conf): Replace ++ "name" param with a bfd_link_needed_link pointer. Update caller. ++ (gld${EMULATION_NAME}_check_ld_elf_hints): Likewise. ++ ++ 2012-12-17 Alan Modra ++ PR ld/14962 ++ * ldexp.h (struct ldexp_control): Add "assign_name". ++ * ldexp.c (fold_name ): Compare and clear assign_name on match. ++ (exp_fold_tree_1): Remove existing code testing for self assignment. ++ Instead set and test expld.assign_name. ++ * ldlang.c (scan_for_self_assignment): Delete. ++ (print_assignment): Instead set and test expld.assign_name. ++ ++ 2012-12-05 H.J. Lu ++ PR ld/14915 ++ * emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Also ++ check DT_NEEDED entries when creating shared object with ++ --copy-dt-needed-entries. ++ ++ 2012-12-03 H.J. Lu ++ PR ld/14904 ++ * ldmain.c (main): Don't check plugin_load_plugins return. ++ * lexsup.c (parse_args): Don't check plugin_opt_plugin return. ++ * plugin.c (dlerror): New. Defined if HAVE_DLFCN_H isn't ++ defined. ++ (plugin_opt_plugin): Change return type to void. Stop on ++ dlopen error and report error with dlerror (). ++ (plugin_load_plugins): Change return type to void. Stop on ++ dlsym error and report error with dlerror (). Don't use ++ set_plugin_error. ++ (plugin_call_cleanup): Issue an error for each plugin. ++ * plugin.h (plugin_opt_plugin): Change return type to void. ++ (plugin_load_plugins): Likewise. ++ ++ 2012-11-01 Alan Modra ++ * ldlang.c (insert_pad): Correct output section size calculation. ++ (lang_size_sections_1): Likewise for lang_data_statement and ++ lang_reloc_statement. ++ ++ 2012-10-22 Alan Modra ++ * plugin.c (plugin_load_plugins): Warning fix. ++ ++2012-12-18 Roland McGrath ++ ++ * ld.texinfo (Options): Describe -Trodata-segment. ++ * ldlex.h (enum option_values): Add OPTION_TRODATA_SEGMENT. ++ * lexsup.c (ld_options, parse_args): Handle -Trodata-segment. ++ * scripttempl/elf.sc (RODATA_ADDR, SHLIB_RODATA_ADDR): Wrap ++ SEGMENT_START("rodata-segment", ...) + SIZEOF_HEADERS around the value. ++ ++2012-12-11 Roland McGrath ++ ++ * emulparams/elf_nacl.sh (nacl_rodata_addr): New shell function. ++ (RODATA_ADDR, SHLIB_RODATA_ADDR): Use it to base the calculation ++ on SEGMENT_START("text-segment", ...) rather than ... alone. ++ * Makefile.am (earmelf_nacl.c, earmelfb_nacl.c): Add missing ++ dependency on $(srcdir)/emulparams/elf_nacl.sh. ++ * Makefile.in: Regenerate. ++ ++2012-11-26 Roland McGrath ++ ++ * emultempl/aarch64elf.em (gld${EMULATION_NAME}_before_parse): ++ Copy last elf32.em here too. ++ * emultempl/armelf.em (gld${EMULATION_NAME}_before_parse): Likewise. ++ * emultempl/mmixelf.em (gld${EMULATION_NAME}_before_parse): Likewise. ++ * emultempl/scoreelf.em (gld${EMULATION_NAME}_before_parse): Likewise. ++ ++2012-11-21 Roland McGrath ++ ++ * ld.h (ld_config_type): New flag member separate_code. ++ * emultempl/elf32.em ++ (gld${EMULATION_NAME}_before_parse): Set it based on $SEPARATE_CODE. ++ * ldlang.c (ldlang_override_segment_assignment): If it's set, then ++ always return TRUE when SEC_CODE differs between the sections. ++ + 2012-11-05 Alan Modra + + * configure.in: Apply 2012-09-10 change to config.in here. +diff --git a/ld/Makefile.am b/ld/Makefile.am +index 4c692ea..e343ab0 100644 +--- a/ld/Makefile.am ++++ b/ld/Makefile.am +@@ -722,6 +722,7 @@ earmelf_linux_eabi.c: $(srcdir)/emulparams/armelf_linux_eabi.sh \ + earmelf_nacl.c: $(srcdir)/emulparams/armelf_nacl.sh \ + $(srcdir)/emulparams/armelf_linux_eabi.sh \ + $(srcdir)/emulparams/armelf_linux.sh \ ++ $(srcdir)/emulparams/elf_nacl.sh \ + $(ELF_DEPS) $(srcdir)/emultempl/armelf.em \ + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} armelf_nacl "$(tdir_armelf_nacl)" +@@ -755,6 +756,7 @@ earmelfb_nacl.c: $(srcdir)/emulparams/armelfb_nacl.sh \ + $(srcdir)/emulparams/armelf_nacl.sh \ + $(srcdir)/emulparams/armelf_linux_eabi.sh \ + $(srcdir)/emulparams/armelf_linux.sh \ ++ $(srcdir)/emulparams/elf_nacl.sh \ + $(ELF_DEPS) $(srcdir)/emultempl/armelf.em \ + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} armelfb_nacl "$(tdir_armelfb_nacl)" +diff --git a/ld/Makefile.in b/ld/Makefile.in +index a675d01..7da93b4 100644 +--- a/ld/Makefile.in ++++ b/ld/Makefile.in +@@ -2192,6 +2192,7 @@ earmelf_linux_eabi.c: $(srcdir)/emulparams/armelf_linux_eabi.sh \ + earmelf_nacl.c: $(srcdir)/emulparams/armelf_nacl.sh \ + $(srcdir)/emulparams/armelf_linux_eabi.sh \ + $(srcdir)/emulparams/armelf_linux.sh \ ++ $(srcdir)/emulparams/elf_nacl.sh \ + $(ELF_DEPS) $(srcdir)/emultempl/armelf.em \ + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} armelf_nacl "$(tdir_armelf_nacl)" +@@ -2225,6 +2226,7 @@ earmelfb_nacl.c: $(srcdir)/emulparams/armelfb_nacl.sh \ + $(srcdir)/emulparams/armelf_nacl.sh \ + $(srcdir)/emulparams/armelf_linux_eabi.sh \ + $(srcdir)/emulparams/armelf_linux.sh \ ++ $(srcdir)/emulparams/elf_nacl.sh \ + $(ELF_DEPS) $(srcdir)/emultempl/armelf.em \ + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} armelfb_nacl "$(tdir_armelfb_nacl)" +diff --git a/ld/emulparams/elf_nacl.sh b/ld/emulparams/elf_nacl.sh +index 0073c0f..657cd06 100644 +--- a/ld/emulparams/elf_nacl.sh ++++ b/ld/emulparams/elf_nacl.sh +@@ -2,5 +2,13 @@ ENABLE_INITFINI_ARRAY=yes + SEPARATE_CODE=yes + TEXT_START_ADDR=0x20000 + NACL_RODATA_DISTANCE=0x10000000 +-RODATA_ADDR="${TEXT_START_ADDR} + ${NACL_RODATA_DISTANCE} + SIZEOF_HEADERS" +-SHLIB_RODATA_ADDR="${NACL_RODATA_DISTANCE} + SIZEOF_HEADERS" ++ ++nacl_rodata_addr() ++{ ++ nacl_text_addr="SEGMENT_START(\"text-segment\", $1)" ++ nacl_rodata_addr="$nacl_text_addr + ${NACL_RODATA_DISTANCE} + SIZEOF_HEADERS" ++ echo "$nacl_rodata_addr" ++} ++ ++RODATA_ADDR=`nacl_rodata_addr "${TEXT_START_ADDR}"` ++SHLIB_RODATA_ADDR=`nacl_rodata_addr 0` +diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em +index 4c03ffd..25935d0 100644 +--- a/ld/emultempl/aarch64elf.em ++++ b/ld/emultempl/aarch64elf.em +@@ -39,6 +39,7 @@ gld${EMULATION_NAME}_before_parse (void) + #endif /* not TARGET_ */ + input_flags.dynamic = ${DYNAMIC_LINK-TRUE}; + config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo TRUE ; else echo FALSE ; fi`; ++ config.separate_code = `if test "x${SEPARATE_CODE}" = xyes ; then echo TRUE ; else echo FALSE ; fi`; + } + + static void +diff --git a/ld/emultempl/armelf.em b/ld/emultempl/armelf.em +index 3b881dd..7f7d2cc 100644 +--- a/ld/emultempl/armelf.em ++++ b/ld/emultempl/armelf.em +@@ -52,6 +52,7 @@ gld${EMULATION_NAME}_before_parse (void) + #endif /* not TARGET_ */ + input_flags.dynamic = ${DYNAMIC_LINK-TRUE}; + config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo TRUE ; else echo FALSE ; fi`; ++ config.separate_code = `if test "x${SEPARATE_CODE}" = xyes ; then echo TRUE ; else echo FALSE ; fi`; + } + + static void +@@ -254,19 +255,19 @@ compare_output_sec_vma (const void *a, const void *b) + asection *asec = *(asection **) a, *bsec = *(asection **) b; + asection *aout = asec->output_section, *bout = bsec->output_section; + bfd_vma avma, bvma; +- ++ + /* If there's no output section for some reason, compare equal. */ + if (!aout || !bout) + return 0; +- ++ + avma = aout->vma + asec->output_offset; + bvma = bout->vma + bsec->output_offset; +- ++ + if (avma > bvma) + return 1; + else if (avma < bvma) + return -1; +- ++ + return 0; + } + +@@ -286,10 +287,10 @@ gld${EMULATION_NAME}_after_allocation (void) + { + bfd *abfd = is->the_bfd; + asection *sec; +- ++ + if ((abfd->flags & (EXEC_P | DYNAMIC)) != 0) + continue; +- ++ + for (sec = abfd->sections; sec != NULL; sec = sec->next) + { + asection *out_sec = sec->output_section; +@@ -305,7 +306,7 @@ gld${EMULATION_NAME}_after_allocation (void) + if (sec_count == list_size) + { + list_size *= 2; +- sec_list = (asection **) ++ sec_list = (asection **) + xrealloc (sec_list, list_size * sizeof (asection *)); + } + +@@ -313,13 +314,13 @@ gld${EMULATION_NAME}_after_allocation (void) + } + } + } +- ++ + qsort (sec_list, sec_count, sizeof (asection *), &compare_output_sec_vma); +- ++ + if (elf32_arm_fix_exidx_coverage (sec_list, sec_count, &link_info, + merge_exidx_entries)) + need_laying_out = 1; +- ++ + free (sec_list); + } + +@@ -465,7 +466,7 @@ arm_elf_create_output_section_statements (void) + target2_type, fix_v4bx, use_blx, + vfp11_denorm_fix, no_enum_size_warning, + no_wchar_size_warning, +- pic_veneer, fix_cortex_a8, ++ pic_veneer, fix_cortex_a8, + fix_arm1176); + + stub_file = lang_add_input_file ("linker stubs", +@@ -480,7 +481,7 @@ arm_elf_create_output_section_statements (void) + einfo ("%X%P: can not create BFD %E\n"); + return; + } +- ++ + stub_file->the_bfd->flags |= BFD_LINKER_CREATED; + ldlang_add_file (stub_file); + +diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em +index de51050..3128255 100644 +--- a/ld/emultempl/elf32.em ++++ b/ld/emultempl/elf32.em +@@ -104,6 +104,7 @@ gld${EMULATION_NAME}_before_parse (void) + ldfile_set_output_arch ("${OUTPUT_ARCH}", bfd_arch_`echo ${ARCH} | sed -e 's/:.*//'`); + input_flags.dynamic = ${DYNAMIC_LINK-TRUE}; + config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo TRUE ; else echo FALSE ; fi`; ++ config.separate_code = `if test "x${SEPARATE_CODE}" = xyes ; then echo TRUE ; else echo FALSE ; fi`; + } + + EOF +@@ -140,7 +141,7 @@ gld${EMULATION_NAME}_load_symbols (lang_input_statement_type *entry) + return FALSE; + + bfd_elf_set_dyn_lib_class (entry->the_bfd, +- (enum dynamic_lib_link_class) link_class); ++ (enum dynamic_lib_link_class) link_class); + + /* Continue on with normal load_symbols processing. */ + return FALSE; +@@ -568,7 +569,8 @@ EOF + #endif + + static bfd_boolean +-gld${EMULATION_NAME}_check_ld_elf_hints (const char *name, int force) ++gld${EMULATION_NAME}_check_ld_elf_hints (const struct bfd_link_needed_list *l, ++ int force) + { + static bfd_boolean initialized; + static char *ld_elf_hints; +@@ -611,10 +613,9 @@ gld${EMULATION_NAME}_check_ld_elf_hints (const char *name, int force) + if (ld_elf_hints == NULL) + return FALSE; + +- needed.by = NULL; +- needed.name = name; +- return gld${EMULATION_NAME}_search_needed (ld_elf_hints, & needed, +- force); ++ needed.by = l->by; ++ needed.name = l->name; ++ return gld${EMULATION_NAME}_search_needed (ld_elf_hints, &needed, force); + } + EOF + # FreeBSD +@@ -786,7 +787,8 @@ gld${EMULATION_NAME}_parse_ld_so_conf + } + + static bfd_boolean +-gld${EMULATION_NAME}_check_ld_so_conf (const char *name, int force) ++gld${EMULATION_NAME}_check_ld_so_conf (const struct bfd_link_needed_list *l, ++ int force) + { + static bfd_boolean initialized; + static char *ld_so_conf; +@@ -823,8 +825,8 @@ gld${EMULATION_NAME}_check_ld_so_conf (const char *name, int force) + return FALSE; + + +- needed.by = NULL; +- needed.name = name; ++ needed.by = l->by; ++ needed.name = l->name; + return gld${EMULATION_NAME}_search_needed (ld_so_conf, &needed, force); + } + +@@ -1104,7 +1106,7 @@ gld${EMULATION_NAME}_after_open (void) + { + struct elf_obj_tdata *t = elf_tdata (link_info.output_bfd); + struct build_id_info *b = +- (struct build_id_info *) xmalloc (sizeof *b); ++ (struct build_id_info *) xmalloc (sizeof *b); + + b->style = link_info.emit_note_gnu_build_id; + b->sec = s; +@@ -1180,8 +1182,6 @@ gld${EMULATION_NAME}_after_open (void) + special action by the person doing the link. Note that the + needed list can actually grow while we are stepping through this + loop. */ +- if (!link_info.executable) +- return; + needed = bfd_elf_get_needed_list (link_info.output_bfd, &link_info); + for (l = needed; l != NULL; l = l->next) + { +@@ -1190,9 +1190,13 @@ gld${EMULATION_NAME}_after_open (void) + int force; + + /* If the lib that needs this one was --as-needed and wasn't +- found to be needed, then this lib isn't needed either. */ ++ found to be needed, then this lib isn't needed either. Skip ++ the lib when creating a shared object unless we are copying ++ DT_NEEDED entres. */ + if (l->by != NULL +- && (bfd_elf_get_dyn_lib_class (l->by) & DYN_AS_NEEDED) != 0) ++ && ((bfd_elf_get_dyn_lib_class (l->by) & DYN_AS_NEEDED) != 0 ++ || (!link_info.executable ++ && bfd_elf_get_dyn_lib_class (l->by) & DYN_NO_ADD_NEEDED) != 0)) + continue; + + /* If we've already seen this file, skip it. */ +@@ -1305,7 +1309,7 @@ if [ "x${USE_LIBPATH}" = xyes ] ; then + case ${target} in + *-*-freebsd* | *-*-dragonfly*) + fragment <name, force)) ++ if (gld${EMULATION_NAME}_check_ld_elf_hints (l, force)) + break; + EOF + # FreeBSD +@@ -1314,7 +1318,7 @@ EOF + *-*-linux-* | *-*-k*bsd*-* | *-*-gnu*) + # Linux + fragment <name, force)) ++ if (gld${EMULATION_NAME}_check_ld_so_conf (l, force)) + break; + + EOF +@@ -1439,7 +1443,7 @@ if test x"$LDEMUL_BEFORE_ALLOCATION" != xgld"$EMULATION_NAME"_before_allocation; + fragment <name.name) == 0) ++ expld.assign_name = NULL; + if (expld.phase == lang_first_phase_enum) + ; + else if (tree->name.name[0] == '.' && tree->name.name[1] == 0) +@@ -852,8 +855,6 @@ exp_fold_tree_1 (etree_type *tree) + } + else + { +- etree_type *name; +- + struct bfd_link_hash_entry *h = NULL; + + if (tree->type.node_class == etree_provide) +@@ -871,25 +872,20 @@ exp_fold_tree_1 (etree_type *tree) + } + } + +- name = tree->assign.src; +- if (name->type.node_class == etree_trinary) +- { +- exp_fold_tree_1 (name->trinary.cond); +- if (expld.result.valid_p) +- name = (expld.result.value +- ? name->trinary.lhs : name->trinary.rhs); +- } +- +- if (name->type.node_class == etree_name +- && name->type.node_code == NAME +- && strcmp (tree->assign.dst, name->name.name) == 0) +- /* Leave it alone. Do not replace a symbol with its own +- output address, in case there is another section sizing +- pass. Folding does not preserve input sections. */ +- break; +- ++ expld.assign_name = tree->assign.dst; + exp_fold_tree_1 (tree->assign.src); +- if (expld.result.valid_p ++ /* expld.assign_name remaining equal to tree->assign.dst ++ below indicates the evaluation of tree->assign.src did ++ not use the value of tree->assign.dst. We don't allow ++ self assignment until the final phase for two reasons: ++ 1) Expressions are evaluated multiple times. With ++ relaxation, the number of times may vary. ++ 2) Section relative symbol values cannot be correctly ++ converted to absolute values, as is required by many ++ expressions, until final section sizing is complete. */ ++ if ((expld.result.valid_p ++ && (expld.phase == lang_final_phase_enum ++ || expld.assign_name != NULL)) + || (expld.phase <= lang_mark_phase_enum + && tree->type.node_class == etree_assign + && tree->assign.defsym)) +@@ -937,6 +933,7 @@ exp_fold_tree_1 (etree_type *tree) + && h->type == bfd_link_hash_new) + h->type = bfd_link_hash_undefined; + } ++ expld.assign_name = NULL; + } + break; + +diff --git a/ld/ldexp.h b/ld/ldexp.h +index 187016c..2c726e7 100644 +--- a/ld/ldexp.h ++++ b/ld/ldexp.h +@@ -139,6 +139,11 @@ struct ldexp_control { + + /* Principally used for diagnostics. */ + bfd_boolean assigning_to_dot; ++ /* If evaluating an assignment, the destination. Cleared if an ++ etree_name NAME matches this, to signal a self-assignment. ++ Note that an etree_name DEFINED does not clear this field, nor ++ does the false branch of a trinary expression. */ ++ const char *assign_name; + + /* Working results. */ + etree_value_type result; +diff --git a/ld/ldlang.c b/ld/ldlang.c +index 0c97898..01c12df 100644 +--- a/ld/ldlang.c ++++ b/ld/ldlang.c +@@ -878,8 +878,8 @@ walk_wild_file (lang_wild_statement_type *s, + if (member->usrdata != NULL) + { + walk_wild_section (s, +- (lang_input_statement_type *) member->usrdata, +- callback, data); ++ (lang_input_statement_type *) member->usrdata, ++ callback, data); + } + + member = bfd_openr_next_archived_file (f->the_bfd, member); +@@ -1050,7 +1050,7 @@ new_afile (const char *name, + else + { + p = (lang_input_statement_type *) +- stat_alloc (sizeof (lang_input_statement_type)); ++ stat_alloc (sizeof (lang_input_statement_type)); + p->header.type = lang_input_statement_enum; + p->header.next = NULL; + } +@@ -1148,7 +1148,7 @@ output_section_statement_newfunc (struct bfd_hash_entry *entry, + if (entry == NULL) + { + entry = (struct bfd_hash_entry *) bfd_hash_allocate (table, +- sizeof (*ret)); ++ sizeof (*ret)); + if (entry == NULL) + return entry; + } +@@ -1283,12 +1283,12 @@ lang_memory_region_lookup (const char *const name, bfd_boolean create) + for (r = lang_memory_region_list; r != NULL; r = r->next) + for (n = &r->name_list; n != NULL; n = n->next) + if (strcmp (n->name, name) == 0) +- { +- if (create) +- einfo (_("%P:%S: warning: redeclaration of memory region `%s'\n"), +- NULL, name); +- return r; +- } ++ { ++ if (create) ++ einfo (_("%P:%S: warning: redeclaration of memory region `%s'\n"), ++ NULL, name); ++ return r; ++ } + + if (!create && strcmp (name, DEFAULT_MEMORY_REGION)) + einfo (_("%P:%S: warning: memory region `%s' not declared\n"), +@@ -1334,19 +1334,19 @@ lang_memory_region_alias (const char * alias, const char * region_name) + for (r = lang_memory_region_list; r != NULL; r = r->next) + for (n = &r->name_list; n != NULL; n = n->next) + { +- if (region == NULL && strcmp (n->name, region_name) == 0) +- region = r; +- if (strcmp (n->name, alias) == 0) +- einfo (_("%F%P:%S: error: redefinition of memory region " +- "alias `%s'\n"), +- NULL, alias); ++ if (region == NULL && strcmp (n->name, region_name) == 0) ++ region = r; ++ if (strcmp (n->name, alias) == 0) ++ einfo (_("%F%P:%S: error: redefinition of memory region " ++ "alias `%s'\n"), ++ NULL, alias); + } + + /* Check if the target region exists. */ + if (region == NULL) + einfo (_("%F%P:%S: error: memory region `%s' " +- "for alias `%s' does not exist\n"), +- NULL, region_name, alias); ++ "for alias `%s' does not exist\n"), ++ NULL, region_name, alias); + + /* Add alias to region name list. */ + n = (lang_memory_region_name *) stat_alloc (sizeof (lang_memory_region_name)); +@@ -1777,7 +1777,7 @@ lang_insert_orphan (asection *s, + os_tail = ((lang_output_section_statement_type **) + lang_output_section_statement.tail); + os = lang_enter_output_section_statement (secname, address, normal_section, +- NULL, NULL, NULL, constraint); ++ NULL, NULL, NULL, constraint); + + ps = NULL; + if (config.build_constructors && *os_tail == os) +@@ -2080,14 +2080,14 @@ sort_def_symbol (struct bfd_link_hash_entry *hash_entry, + struct map_symbol_def *def; + + ud = (struct fat_user_section_struct *) +- get_userdata (hash_entry->u.def.section); ++ get_userdata (hash_entry->u.def.section); + if (! ud) + { + /* ??? What do we have to do to initialize this beforehand? */ + /* The first time we get here is bfd_abs_section... */ + init_map_userdata (0, hash_entry->u.def.section, 0); + ud = (struct fat_user_section_struct *) +- get_userdata (hash_entry->u.def.section); ++ get_userdata (hash_entry->u.def.section); + } + else if (!ud->map_symbol_def_tail) + ud->map_symbol_def_tail = &ud->map_symbol_def_head; +@@ -2125,7 +2125,7 @@ init_os (lang_output_section_statement_type *s, flagword flags) + if (!link_info.reduce_memory_overheads) + { + fat_section_userdata_type *new_userdata = (fat_section_userdata_type *) +- stat_alloc (sizeof (fat_section_userdata_type)); ++ stat_alloc (sizeof (fat_section_userdata_type)); + memset (new_userdata, 0, sizeof (fat_section_userdata_type)); + get_userdata (s->bfd_section) = new_userdata; + } +@@ -2264,7 +2264,7 @@ lang_add_section (lang_statement_list_type *ptr, + + keep = bfd_lookup_section_flags (&link_info, sflag_info, section); + if (!keep) +- return; ++ return; + } + + if (section->output_section != NULL) +@@ -3951,63 +3951,12 @@ print_output_section_statement + output_section_statement); + } + +-/* Scan for the use of the destination in the right hand side +- of an expression. In such cases we will not compute the +- correct expression, since the value of DST that is used on +- the right hand side will be its final value, not its value +- just before this expression is evaluated. */ +- +-static bfd_boolean +-scan_for_self_assignment (const char * dst, etree_type * rhs) +-{ +- if (rhs == NULL || dst == NULL) +- return FALSE; +- +- switch (rhs->type.node_class) +- { +- case etree_binary: +- return (scan_for_self_assignment (dst, rhs->binary.lhs) +- || scan_for_self_assignment (dst, rhs->binary.rhs)); +- +- case etree_trinary: +- return (scan_for_self_assignment (dst, rhs->trinary.lhs) +- || scan_for_self_assignment (dst, rhs->trinary.rhs)); +- +- case etree_assign: +- case etree_provided: +- case etree_provide: +- if (strcmp (dst, rhs->assign.dst) == 0) +- return TRUE; +- return scan_for_self_assignment (dst, rhs->assign.src); +- +- case etree_unary: +- return scan_for_self_assignment (dst, rhs->unary.child); +- +- case etree_value: +- if (rhs->value.str) +- return strcmp (dst, rhs->value.str) == 0; +- return FALSE; +- +- case etree_name: +- if (rhs->name.name) +- return strcmp (dst, rhs->name.name) == 0; +- return FALSE; +- +- default: +- break; +- } +- +- return FALSE; +-} +- +- + static void + print_assignment (lang_assignment_statement_type *assignment, + lang_output_section_statement_type *output_section) + { + unsigned int i; + bfd_boolean is_dot; +- bfd_boolean computation_is_valid = TRUE; + etree_type *tree; + asection *osec; + +@@ -4018,15 +3967,14 @@ print_assignment (lang_assignment_statement_type *assignment, + { + is_dot = FALSE; + tree = assignment->exp->assert_s.child; +- computation_is_valid = TRUE; + } + else + { + const char *dst = assignment->exp->assign.dst; + + is_dot = (dst[0] == '.' && dst[1] == 0); ++ expld.assign_name = dst; + tree = assignment->exp->assign.src; +- computation_is_valid = is_dot || !scan_for_self_assignment (dst, tree); + } + + osec = output_section->bfd_section; +@@ -4037,7 +3985,9 @@ print_assignment (lang_assignment_statement_type *assignment, + { + bfd_vma value; + +- if (computation_is_valid) ++ if (assignment->exp->type.node_class == etree_assert ++ || is_dot ++ || expld.assign_name != NULL) + { + value = expld.result.value; + +@@ -4073,6 +4023,7 @@ print_assignment (lang_assignment_statement_type *assignment, + minfo (" "); + #endif + } ++ expld.assign_name = NULL; + + minfo (" "); + exp_print_tree (assignment->exp); +@@ -4151,7 +4102,7 @@ print_all_symbols (asection *sec) + entries[i] = def->entry; + + qsort (entries, ud->map_symbol_def_count, sizeof (*entries), +- hash_entry_addr_cmp); ++ hash_entry_addr_cmp); + + /* Print the symbols. */ + for (i = 0; i < ud->map_symbol_def_count; i++) +@@ -4583,7 +4534,7 @@ insert_pad (lang_statement_union_type **ptr, + { + /* Make a new padding statement, linked into existing chain. */ + pad = (lang_statement_union_type *) +- stat_alloc (sizeof (lang_padding_statement_type)); ++ stat_alloc (sizeof (lang_padding_statement_type)); + pad->header.next = *ptr; + *ptr = pad; + pad->header.type = lang_padding_statement_enum; +@@ -4594,7 +4545,8 @@ insert_pad (lang_statement_union_type **ptr, + } + pad->padding_statement.output_offset = dot - output_section->vma; + pad->padding_statement.size = alignment_needed; +- output_section->size += alignment_needed; ++ output_section->size = TO_SIZE (dot + TO_ADDR (alignment_needed) ++ - output_section->vma); + } + + /* Work out how much this section will move the dot point. */ +@@ -5159,7 +5111,9 @@ lang_size_sections_1 + if (size < TO_SIZE ((unsigned) 1)) + size = TO_SIZE ((unsigned) 1); + dot += TO_ADDR (size); +- output_section_statement->bfd_section->size += size; ++ output_section_statement->bfd_section->size ++ = TO_SIZE (dot - output_section_statement->bfd_section->vma); ++ + } + break; + +@@ -5173,7 +5127,8 @@ lang_size_sections_1 + output_section_statement->bfd_section; + size = bfd_get_reloc_size (s->reloc_statement.howto); + dot += TO_ADDR (size); +- output_section_statement->bfd_section->size += size; ++ output_section_statement->bfd_section->size ++ = TO_SIZE (dot - output_section_statement->bfd_section->vma); + } + break; + +@@ -5357,6 +5312,12 @@ ldlang_override_segment_assignment (struct bfd_link_info * info ATTRIBUTE_UNUSED + if (current_section == NULL || previous_section == NULL) + return new_segment; + ++ /* If this flag is set, the target never wants code and non-code ++ sections comingled in the same segment. */ ++ if (config.separate_code ++ && ((current_section->flags ^ previous_section->flags) & SEC_CODE)) ++ return TRUE; ++ + /* Find the memory regions associated with the two sections. + We call lang_output_section_find() here rather than scanning the list + of output sections looking for a matching section pointer because if +@@ -7233,7 +7194,7 @@ lang_record_phdrs (void) + { + alc *= 2; + secs = (asection **) xrealloc (secs, +- alc * sizeof (asection *)); ++ alc * sizeof (asection *)); + } + secs[c] = os->bfd_section; + ++c; +@@ -7535,7 +7496,7 @@ lang_vers_match (struct bfd_elf_version_expr_head *head, + { + e.pattern = c_sym; + expr = (struct bfd_elf_version_expr *) +- htab_find ((htab_t) head->htab, &e); ++ htab_find ((htab_t) head->htab, &e); + while (expr && strcmp (expr->pattern, c_sym) == 0) + if (expr->mask == BFD_ELF_VERSION_C_TYPE) + goto out_ret; +@@ -7548,7 +7509,7 @@ lang_vers_match (struct bfd_elf_version_expr_head *head, + { + e.pattern = cxx_sym; + expr = (struct bfd_elf_version_expr *) +- htab_find ((htab_t) head->htab, &e); ++ htab_find ((htab_t) head->htab, &e); + while (expr && strcmp (expr->pattern, cxx_sym) == 0) + if (expr->mask == BFD_ELF_VERSION_CXX_TYPE) + goto out_ret; +@@ -7561,7 +7522,7 @@ lang_vers_match (struct bfd_elf_version_expr_head *head, + { + e.pattern = java_sym; + expr = (struct bfd_elf_version_expr *) +- htab_find ((htab_t) head->htab, &e); ++ htab_find ((htab_t) head->htab, &e); + while (expr && strcmp (expr->pattern, java_sym) == 0) + if (expr->mask == BFD_ELF_VERSION_JAVA_TYPE) + goto out_ret; +@@ -7858,7 +7819,7 @@ lang_register_vers_node (const char *name, + if (t->locals.htab && e1->literal) + { + e2 = (struct bfd_elf_version_expr *) +- htab_find ((htab_t) t->locals.htab, e1); ++ htab_find ((htab_t) t->locals.htab, e1); + while (e2 && strcmp (e1->pattern, e2->pattern) == 0) + { + if (e1->mask == e2->mask) +@@ -7885,7 +7846,7 @@ lang_register_vers_node (const char *name, + if (t->globals.htab && e1->literal) + { + e2 = (struct bfd_elf_version_expr *) +- htab_find ((htab_t) t->globals.htab, e1); ++ htab_find ((htab_t) t->globals.htab, e1); + while (e2 && strcmp (e1->pattern, e2->pattern) == 0) + { + if (e1->mask == e2->mask) +diff --git a/ld/ldlex.h b/ld/ldlex.h +index 5e3d2fc..923add7 100644 +--- a/ld/ldlex.h ++++ b/ld/ldlex.h +@@ -68,6 +68,7 @@ enum option_values + OPTION_TDATA, + OPTION_TTEXT, + OPTION_TTEXT_SEGMENT, ++ OPTION_TRODATA_SEGMENT, + OPTION_TRADITIONAL_FORMAT, + OPTION_UR, + OPTION_VERBOSE, +diff --git a/ld/ldmain.c b/ld/ldmain.c +index 15f8ebf..7335330 100644 +--- a/ld/ldmain.c ++++ b/ld/ldmain.c +@@ -305,8 +305,7 @@ main (int argc, char **argv) + + #ifdef ENABLE_PLUGINS + /* Now all the plugin arguments have been gathered, we can load them. */ +- if (plugin_load_plugins ()) +- einfo (_("%P%F: %s: error loading plugin\n"), plugin_error_plugin ()); ++ plugin_load_plugins (); + #endif /* ENABLE_PLUGINS */ + + ldemul_set_symbols (); +diff --git a/ld/lexsup.c b/ld/lexsup.c +index fc410c9..4dc1013 100644 +--- a/ld/lexsup.c ++++ b/ld/lexsup.c +@@ -405,13 +405,13 @@ static const struct ld_option ld_options[] = + { {"pic-executable", no_argument, NULL, OPTION_PIE}, + '\0', NULL, NULL, TWO_DASHES }, + { {"sort-common", optional_argument, NULL, OPTION_SORT_COMMON}, +- '\0', N_("[=ascending|descending]"), +- N_("Sort common symbols by alignment [in specified order]"), ++ '\0', N_("[=ascending|descending]"), ++ N_("Sort common symbols by alignment [in specified order]"), + TWO_DASHES }, + { {"sort_common", no_argument, NULL, OPTION_SORT_COMMON}, + '\0', NULL, NULL, NO_HELP }, + { {"sort-section", required_argument, NULL, OPTION_SORT_SECTION}, +- '\0', N_("name|alignment"), ++ '\0', N_("name|alignment"), + N_("Sort sections by name or maximum alignment"), TWO_DASHES }, + { {"spare-dynamic-tags", required_argument, NULL, OPTION_SPARE_DYNAMIC_TAGS}, + '\0', N_("COUNT"), N_("How many tags to reserve in .dynamic section"), +@@ -441,6 +441,8 @@ static const struct ld_option ld_options[] = + '\0', N_("ADDRESS"), N_("Set address of .text section"), ONE_DASH }, + { {"Ttext-segment", required_argument, NULL, OPTION_TTEXT_SEGMENT}, + '\0', N_("ADDRESS"), N_("Set address of text segment"), ONE_DASH }, ++ { {"Trodata-segment", required_argument, NULL, OPTION_TRODATA_SEGMENT}, ++ '\0', N_("ADDRESS"), N_("Set address of rodata segment"), ONE_DASH }, + { {"unresolved-symbols=", required_argument, NULL, + OPTION_UNRESOLVED_SYMBOLS}, + '\0', NULL, N_("How to handle unresolved symbols. is:\n" +@@ -950,9 +952,7 @@ parse_args (unsigned argc, char **argv) + break; + #ifdef ENABLE_PLUGINS + case OPTION_PLUGIN: +- if (plugin_opt_plugin (optarg)) +- einfo (_("%P%F: %s: error loading plugin\n"), +- plugin_error_plugin ()); ++ plugin_opt_plugin (optarg); + break; + case OPTION_PLUGIN_OPT: + if (plugin_opt_plugin_arg (optarg)) +@@ -1189,6 +1189,9 @@ parse_args (unsigned argc, char **argv) + case OPTION_TTEXT_SEGMENT: + set_segment_start (".text-segment", optarg); + break; ++ case OPTION_TRODATA_SEGMENT: ++ set_segment_start (".rodata-segment", optarg); ++ break; + case OPTION_TRADITIONAL_FORMAT: + link_info.traditional_format = TRUE; + break; +diff --git a/ld/plugin.c b/ld/plugin.c +index 7e3d2a3..da99e77 100644 +--- a/ld/plugin.c ++++ b/ld/plugin.c +@@ -155,6 +155,14 @@ dlclose (void *handle) + + #endif /* !defined (HAVE_DLFCN_H) && defined (HAVE_WINDOWS_H) */ + ++#ifndef HAVE_DLFCN_H ++static const char * ++dlerror (void) ++{ ++ return ""; ++} ++#endif ++ + /* Helper function for exiting with error status. */ + static int + set_plugin_error (const char *plugin) +@@ -178,7 +186,7 @@ plugin_error_plugin (void) + } + + /* Handle -plugin arg: find and load plugin, or return error. */ +-int ++void + plugin_opt_plugin (const char *plugin) + { + plugin_t *newplug; +@@ -188,7 +196,7 @@ plugin_opt_plugin (const char *plugin) + newplug->name = plugin; + newplug->dlhandle = dlopen (plugin, RTLD_NOW); + if (!newplug->dlhandle) +- return set_plugin_error (plugin); ++ einfo (_("%P%F: %s: error loading plugin: %s\n"), plugin, dlerror ()); + + /* Chain on end, so when we run list it is in command-line order. */ + *plugins_tail_chain_ptr = newplug; +@@ -197,7 +205,6 @@ plugin_opt_plugin (const char *plugin) + /* Record it as current plugin for receiving args. */ + last_plugin = newplug; + last_plugin_args_tail_chain_ptr = &newplug->args; +- return 0; + } + + /* Accumulate option arguments for last-loaded plugin, or return +@@ -771,7 +778,7 @@ plugin_active_plugins_p (void) + } + + /* Load up and initialise all plugins after argument parsing. */ +-int ++void + plugin_load_plugins (void) + { + struct ld_plugin_tv *my_tv; +@@ -780,7 +787,7 @@ plugin_load_plugins (void) + + /* If there are no plugins, we need do nothing this run. */ + if (!curplug) +- return 0; ++ return; + + /* First pass over plugins to find max # args needed so that we + can size and allocate the tv array. */ +@@ -800,17 +807,20 @@ plugin_load_plugins (void) + while (curplug) + { + enum ld_plugin_status rv; +- ld_plugin_onload onloadfn = dlsym (curplug->dlhandle, "onload"); ++ ld_plugin_onload onloadfn; ++ ++ onloadfn = (ld_plugin_onload) dlsym (curplug->dlhandle, "onload"); + if (!onloadfn) +- onloadfn = dlsym (curplug->dlhandle, "_onload"); ++ onloadfn = (ld_plugin_onload) dlsym (curplug->dlhandle, "_onload"); + if (!onloadfn) +- return set_plugin_error (curplug->name); ++ einfo (_("%P%F: %s: error loading plugin: %s\n"), ++ curplug->name, dlerror ()); + set_tv_plugin_args (curplug, &my_tv[tv_header_size]); + called_plugin = curplug; + rv = (*onloadfn) (my_tv); + called_plugin = NULL; + if (rv != LDPS_OK) +- return set_plugin_error (curplug->name); ++ einfo (_("%P%F: %s: plugin error: %d\n"), curplug->name, rv); + curplug = curplug->next; + } + +@@ -823,8 +833,6 @@ plugin_load_plugins (void) + plugin_callbacks.notice = &plugin_notice; + link_info.notice_all = TRUE; + link_info.callbacks = &plugin_callbacks; +- +- return 0; + } + + /* Call 'claim file' hook for all plugins. */ +@@ -927,14 +935,12 @@ plugin_call_cleanup (void) + rv = (*curplug->cleanup_handler) (); + called_plugin = NULL; + if (rv != LDPS_OK) +- set_plugin_error (curplug->name); ++ info_msg (_("%P: %s: error in plugin cleanup: %d (ignored)\n"), ++ curplug->name, rv); + dlclose (curplug->dlhandle); + } + curplug = curplug->next; + } +- if (plugin_error_p ()) +- info_msg (_("%P: %s: error in plugin cleanup (ignored)\n"), +- plugin_error_plugin ()); + } + + /* To determine which symbols should be resolved LDPR_PREVAILING_DEF +diff --git a/ld/plugin.h b/ld/plugin.h +index dc32295..a227575 100644 +--- a/ld/plugin.h ++++ b/ld/plugin.h +@@ -32,8 +32,8 @@ extern bfd_boolean no_more_claiming; + to include the plugin-api.h header in order to use this file. */ + struct ld_plugin_input_file; + +-/* Handle -plugin arg: find and load plugin, or return error. */ +-extern int plugin_opt_plugin (const char *plugin); ++/* Handle -plugin arg: find and load plugin. */ ++extern void plugin_opt_plugin (const char *plugin); + + /* Accumulate option arguments for last-loaded plugin, or return + error if none. */ +@@ -44,7 +44,7 @@ extern int plugin_opt_plugin_arg (const char *arg); + extern bfd_boolean plugin_active_plugins_p (void); + + /* Load up and initialise all plugins after argument parsing. */ +-extern int plugin_load_plugins (void); ++extern void plugin_load_plugins (void); + + /* Return name of plugin which caused an error in any of the above. */ + extern const char *plugin_error_plugin (void); +diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc +index 51a655e..6b3d08f 100644 +--- a/ld/scripttempl/elf.sc ++++ b/ld/scripttempl/elf.sc +@@ -492,12 +492,26 @@ cat < ++ ++ * ld-aarch64/emit-relocs-264.d: Append the '-Mno-aliases' option to ++ the objdump directive. ++ * ld-aarch64/emit-relocs-266.d: Ditto. ++ * ld-aarch64/emit-relocs-268.d: Ditto. ++ * ld-aarch64/emit-relocs-269.d: Ditto. ++ * ld-aarch64/emit-relocs-270.d: Ditto. ++ * ld-aarch64/emit-relocs-271.d: Ditto. ++ * ld-aarch64/emit-relocs-272.d: Ditto. ++ ++2013-01-22 Alan Modra ++ ++ Apply mainline patches ++ 2013-01-15 Alan Modra ++ * ld-powerpc/tlsso.d: Adjust for plt-thread-safe stubs. ++ * ld-powerpc/tlsso.g: Likewise. ++ * ld-powerpc/tlsso.r: Likewise. ++ * ld-powerpc/tlstocso.d: Likewise. ++ * ld-powerpc/tlstocso.g: Likewise. ++ ++ 2012-12-03 H.J. Lu ++ PR ld/14904 ++ * ld-plugin/plugin-2.d: Update expected error message. ++ * ld-plugin/plugin-4.d: Likewise. ++ ++ 2012-11-23 Alan Modra ++ * ld-powerpc/plt1.d: Update for default "at" branch hints. ++ * ld-powerpc/tlsexe.d: Likewise. ++ * ld-powerpc/tlsexetoc.d: Likewise. ++ * ld-powerpc/tlsopt1.d: Likewise. ++ * ld-powerpc/tlsopt1_32.d: Likewise. ++ * ld-powerpc/tlsopt2.d: Likewise. ++ * ld-powerpc/tlsopt2_32.d: Likewise. ++ * ld-powerpc/tlsopt4.d: Likewise. ++ * ld-powerpc/tlsopt4_32.d: Likewise. ++ * ld-powerpc/tlsso.d: Likewise. ++ * ld-powerpc/tlstocso.d: Likewise. ++ ++ 2012-10-29 Alan Modra ++ * ld-powerpc/powerpc.exp: Modify emulation option passed to ld ++ when little-endian. ++ * ld-powerpc/apuinfo-nul.rd: Update for le output. ++ * ld-powerpc/apuinfo.rd: Likewise. ++ * ld-powerpc/plt1.d: Likewise. ++ * ld-powerpc/relax.d: Likewise. ++ * ld-powerpc/relaxr.d: Likewise. ++ * ld-powerpc/sdadyn.d: Likewise. ++ * ld-powerpc/tls.d: Likewise. ++ * ld-powerpc/tls.g: Likewise. ++ * ld-powerpc/tls.t: Likewise. ++ * ld-powerpc/tls32.d: Likewise. ++ * ld-powerpc/tls32.g: Likewise. ++ * ld-powerpc/tls32.t: Likewise. ++ * ld-powerpc/tlsexe.d: Likewise. ++ * ld-powerpc/tlsexe.g: Likewise. ++ * ld-powerpc/tlsexe.r: Likewise. ++ * ld-powerpc/tlsexe.t: Likewise. ++ * ld-powerpc/tlsexe32.d: Likewise. ++ * ld-powerpc/tlsexe32.g: Likewise. ++ * ld-powerpc/tlsexe32.r: Likewise. ++ * ld-powerpc/tlsexe32.t: Likewise. ++ * ld-powerpc/tlsexetoc.d: Likewise. ++ * ld-powerpc/tlsexetoc.g: Likewise. ++ * ld-powerpc/tlsexetoc.r: Likewise. ++ * ld-powerpc/tlsexetoc.t: Likewise. ++ * ld-powerpc/tlsmark.d: Likewise. ++ * ld-powerpc/tlsmark32.d: Likewise. ++ * ld-powerpc/tlsopt1.d: Likewise. ++ * ld-powerpc/tlsopt1_32.d: Likewise. ++ * ld-powerpc/tlsopt2.d: Likewise. ++ * ld-powerpc/tlsopt2_32.d: Likewise. ++ * ld-powerpc/tlsopt3.d: Likewise. ++ * ld-powerpc/tlsopt3_32.d: Likewise. ++ * ld-powerpc/tlsopt4.d: Likewise. ++ * ld-powerpc/tlsopt4_32.d: Likewise. ++ * ld-powerpc/tlsso.d: Likewise. ++ * ld-powerpc/tlsso.g: Likewise. ++ * ld-powerpc/tlsso.r: Likewise. ++ * ld-powerpc/tlsso.t: Likewise. ++ * ld-powerpc/tlsso32.d: Likewise. ++ * ld-powerpc/tlsso32.g: Likewise. ++ * ld-powerpc/tlsso32.r: Likewise. ++ * ld-powerpc/tlsso32.t: Likewise. ++ * ld-powerpc/tlstoc.d: Likewise. ++ * ld-powerpc/tlstoc.g: Likewise. ++ * ld-powerpc/tlstoc.t: Likewise. ++ * ld-powerpc/tlstocso.d: Likewise. ++ * ld-powerpc/tlstocso.g: Likewise. ++ * ld-powerpc/tlstocso.t: Likewise. ++ * ld-powerpc/tocopt.out: Likewise. ++ ++ 2012-08-01 James Lemke ++ * ld-gc/pr13683.d: XFAIL for powerpc*-*-eabivle. ++ ++2012-12-21 H.J. Lu ++ ++ PR ld/14980 ++ * ld-ifunc/ifunc-14c.s: New file. ++ * ld-ifunc/ifunc-14e-i386.d: Likewise. ++ * ld-ifunc/ifunc-14e-x86-64.d: Likewise. ++ * ld-ifunc/ifunc-14f-i386.d: Likewise. ++ * ld-ifunc/ifunc-14f-x86-64.d: Likewise. ++ ++2012-12-20 H.J. Lu ++ ++ PR ld/14968 ++ * ld-ifunc/ifunc-18a-i386.d: New file. ++ * ld-ifunc/ifunc-18a-x86-64.d: Likewise. ++ * ld-ifunc/ifunc-18a.s: Likewise. ++ * ld-ifunc/ifunc-18b-i386.d: Likewise. ++ * ld-ifunc/ifunc-18b-x86-64.d: Likewise. ++ * ld-ifunc/ifunc-18b.s: Likewise. ++ * ld-ifunc/ifunc-19a-i386.d: Likewise. ++ * ld-ifunc/ifunc-19a-x86-64.d: Likewise. ++ * ld-ifunc/ifunc-19a.s: Likewise. ++ * ld-ifunc/ifunc-19b-i386.d: Likewise. ++ * ld-ifunc/ifunc-19b-x86-64.d: Likewise. ++ * ld-ifunc/ifunc-19b.s: Likewise. ++ ++2012-12-20 H.J. Lu ++ ++ PR ld/14956 ++ * ld-ifunc/ifunc-14-i386.d: Renamed to ... ++ * ld-ifunc/ifunc-14a-i386.d: This. ++ ++ * ld-ifunc/ifunc-14-x86-64.d: Renamed to ... ++ * ld-ifunc/ifunc-14a-x86-64.d: This. ++ ++ * ld-ifunc/ifunc-14b-i386.d: New file. ++ * ld-ifunc/ifunc-14b-x86-64.d: Likewise. ++ * ld-ifunc/ifunc-14c-i386.d: Likewise. ++ * ld-ifunc/ifunc-14c-x86-64.d: Likewise. ++ * ld-ifunc/ifunc-14d-i386.d: Likewise. ++ * ld-ifunc/ifunc-14d-x86-64.d: Likewise. ++ ++2012-11-30 Roland McGrath ++ ++ * ld-elf/ehdr_start.s: Put reference in .rodata section, not .data. ++ ++2012-11-27 Roland McGrath ++ ++ * ld-elf/compress.exp: Bail out if zlib is not supported. ++ * lib/ld-lib.exp (run_dump_test): If as options include ++ --compress-debug-sections and zlib is not available, report ++ the test as unsupported. ++ ++2012-11-27 Roland McGrath ++ ++ * ld-elf/flags1.d: Add *-*-nacl* to xfail list. ++ * ld-elf/orphan-region.d: Likewise. ++ ++2012-11-21 Roland McGrath ++ ++ * ld-elf/comm-data.exp: Add XFAIL for arm*-*-* targets, referring ++ to PR ld/13802. ++ ++2012-11-14 H.J. Lu ++ ++ * ld-elf/shared.exp (build_cxx_tests): Move out the commented out ++ test. ++ ++ * lib/ld-lib.exp (run_ld_link_exec_tests): Assemble all sources ++ files in each test. ++ + 2012-10-16 Sofiane Naci + + * ld-aarch64/tlsle-symbol-offset.s: New file. +diff --git a/ld/testsuite/ld-aarch64/emit-relocs-264.d b/ld/testsuite/ld-aarch64/emit-relocs-264.d +index 1da911b..eb93154 100644 +--- a/ld/testsuite/ld-aarch64/emit-relocs-264.d ++++ b/ld/testsuite/ld-aarch64/emit-relocs-264.d +@@ -1,6 +1,6 @@ + #source: emit-relocs-264.s + #ld: -T relocs.ld --defsym tempy=0x11000 --defsym tempy2=0x45000 --defsym tempy3=0x1234 -e0 --emit-relocs +-#objdump: -dr ++#objdump: -dr -Mno-aliases + #... + +10000: 8a000000 and x0, x0, x0 + +10004: 92400000 and x0, x0, #0x1 +diff --git a/ld/testsuite/ld-aarch64/emit-relocs-266.d b/ld/testsuite/ld-aarch64/emit-relocs-266.d +index fde9090..d517c8e 100644 +--- a/ld/testsuite/ld-aarch64/emit-relocs-266.d ++++ b/ld/testsuite/ld-aarch64/emit-relocs-266.d +@@ -1,6 +1,6 @@ + #source: emit-relocs-266.s + #ld: -T relocs.ld --defsym tempy=0x11000 --defsym tempy2=0x45000 --defsym tempy3=0x1234 -e0 --emit-relocs +-#objdump: -dr ++#objdump: -dr -Mno-aliases + #... + +10000: 8a000000 and x0, x0, x0 + +10004: 92400000 and x0, x0, #0x1 +diff --git a/ld/testsuite/ld-aarch64/emit-relocs-268.d b/ld/testsuite/ld-aarch64/emit-relocs-268.d +index 126548b..2733ebf 100644 +--- a/ld/testsuite/ld-aarch64/emit-relocs-268.d ++++ b/ld/testsuite/ld-aarch64/emit-relocs-268.d +@@ -1,6 +1,6 @@ + #source: emit-relocs-268.s + #ld: -T relocs.ld --defsym tempy=0x63001000 --defsym tempy2=0x4500000000 --defsym tempy3=0x1234567812345 -e0 --emit-relocs +-#objdump: -dr ++#objdump: -dr -Mno-aliases + #... + +10000: 8a000000 and x0, x0, x0 + +10004: 92400000 and x0, x0, #0x1 +diff --git a/ld/testsuite/ld-aarch64/emit-relocs-269.d b/ld/testsuite/ld-aarch64/emit-relocs-269.d +index a911532..0ed2729 100644 +--- a/ld/testsuite/ld-aarch64/emit-relocs-269.d ++++ b/ld/testsuite/ld-aarch64/emit-relocs-269.d +@@ -1,6 +1,6 @@ + #source: emit-relocs-269.s + #ld: -T relocs.ld --defsym tempy=0x6300100100100100 --defsym tempy2=0xf00df00df00df00d --defsym tempy3=0x1234567812345 -e0 --emit-relocs +-#objdump: -dr ++#objdump: -dr -Mno-aliases + #... + +10000: 8a000000 and x0, x0, x0 + +10004: 92400000 and x0, x0, #0x1 +diff --git a/ld/testsuite/ld-aarch64/emit-relocs-270.d b/ld/testsuite/ld-aarch64/emit-relocs-270.d +index 6e68aec..442150e 100644 +--- a/ld/testsuite/ld-aarch64/emit-relocs-270.d ++++ b/ld/testsuite/ld-aarch64/emit-relocs-270.d +@@ -1,6 +1,6 @@ + #source: emit-relocs-270.s + #ld: -T relocs.ld --defsym tempy=0x1012 --defsym tempy2=0x4500 --defsym tempy3=-292 -e0 --emit-relocs +-#objdump: -dr ++#objdump: -dr -Mno-aliases + + #... + +10000: 8a000000 and x0, x0, x0 +diff --git a/ld/testsuite/ld-aarch64/emit-relocs-271.d b/ld/testsuite/ld-aarch64/emit-relocs-271.d +index 5a230c7..1f34820 100644 +--- a/ld/testsuite/ld-aarch64/emit-relocs-271.d ++++ b/ld/testsuite/ld-aarch64/emit-relocs-271.d +@@ -1,6 +1,6 @@ + #source: emit-relocs-271.s + #ld: -T relocs.ld --defsym tempy=0x1012 --defsym tempy2=0x674500 --defsym tempy3=-292 -e0 --emit-relocs +-#objdump: -dr ++#objdump: -dr -Mno-aliases + + #... + +10000: 8a000000 and x0, x0, x0 +diff --git a/ld/testsuite/ld-aarch64/emit-relocs-272.d b/ld/testsuite/ld-aarch64/emit-relocs-272.d +index a02a52e..011ead5 100644 +--- a/ld/testsuite/ld-aarch64/emit-relocs-272.d ++++ b/ld/testsuite/ld-aarch64/emit-relocs-272.d +@@ -1,6 +1,6 @@ + #source: emit-relocs-272.s + #ld: -T relocs.ld --defsym tempy=0x1012 --defsym tempy2=-12345678912345 --defsym tempy3=-292 -e0 --emit-relocs +-#objdump: -dr ++#objdump: -dr -Mno-aliases + + #... + +10000: 8a000000 and x0, x0, x0 +diff --git a/ld/testsuite/ld-elf/comm-data.exp b/ld/testsuite/ld-elf/comm-data.exp +index 1c75f55..71b856d 100644 +--- a/ld/testsuite/ld-elf/comm-data.exp ++++ b/ld/testsuite/ld-elf/comm-data.exp +@@ -59,6 +59,8 @@ if [is_elf64 "tmpdir/libcomm-data.so"] { + append AFLAGS " --defsym ELF64=1" + } + ++setup_xfail "arm*-*-*" "ld/13802" ++ + # Verify that a common symbol has been converted to an undefined + # reference to the global symbol of the same name defined above + # and that the debug reference has been dropped. +diff --git a/ld/testsuite/ld-elf/compress.exp b/ld/testsuite/ld-elf/compress.exp +index 1e13394..55269ee 100644 +--- a/ld/testsuite/ld-elf/compress.exp ++++ b/ld/testsuite/ld-elf/compress.exp +@@ -25,6 +25,10 @@ if ![is_elf_format] { + return + } + ++if ![is_zlib_supported] { ++ return ++} ++ + # The following tests require running the executable generated by ld. + if ![isnative] { + return +diff --git a/ld/testsuite/ld-elf/ehdr_start.s b/ld/testsuite/ld-elf/ehdr_start.s +index 529d510..2efe8a6 100644 +--- a/ld/testsuite/ld-elf/ehdr_start.s ++++ b/ld/testsuite/ld-elf/ehdr_start.s +@@ -3,7 +3,7 @@ + _start: + .space 16 + +- .data ++ .section .rodata,"a" + .globl foo + foo: + .weak __ehdr_start +diff --git a/ld/testsuite/ld-elf/flags1.d b/ld/testsuite/ld-elf/flags1.d +index e6bb001..ab8facc 100644 +--- a/ld/testsuite/ld-elf/flags1.d ++++ b/ld/testsuite/ld-elf/flags1.d +@@ -1,11 +1,12 @@ + #name: --set-section-flags test 1 (sections) + #ld: -Tflags1.ld +-#objcopy_linked_file: --set-section-flags .post_text_reserve=contents,alloc,load,readonly,code ++#objcopy_linked_file: --set-section-flags .post_text_reserve=contents,alloc,load,readonly,code + #readelf: -l --wide + #xfail: "avr-*-*" "dlx-*-*" "h8300-*-*" "i960-*-*" "ip2k-*-*" "m32r-*-*" +-#xfail: "moxie-*-*" "mt-*-*" "msp430-*-*" ++#xfail: "moxie-*-*" "mt-*-*" "msp430-*-*" "*-*-nacl*" + #xfail: "*-*-hpux*" "hppa*64*-*-*" +-# Fails on the AVR, DLX, H8300, I960, IP2K, M32R, MOXIE, MT, and MSP430 ++# Fails on the AVR, DLX, H8300, I960, IP2K, M32R, MOXIE, MT, and MSP430, ++# and all NaCl targets, + # because the two sections are not merged into one segment. + # (There is no good reason why they have to be). + # Fails on HPUX systems because the .type pseudo-op behaves differently. +diff --git a/ld/testsuite/ld-elf/orphan-region.d b/ld/testsuite/ld-elf/orphan-region.d +index 9d6c90c..d63b1df 100644 +--- a/ld/testsuite/ld-elf/orphan-region.d ++++ b/ld/testsuite/ld-elf/orphan-region.d +@@ -3,9 +3,10 @@ + #readelf: -S -l --wide + #xfail: arc-*-* d30v-*-* dlx-*-* fr30-*-* frv-*-elf i860-*-* i960-*-* + #xfail: iq*-*-* mn10200-*-* moxie-*-* msp*-*-* mt-*-* or32-*-* pj*-*-* +-#xfail: spu-*-* hppa*64*-*-* frv-*-* ++#xfail: spu-*-* hppa*64*-*-* frv-*-* *-*-nacl* + # if not using elf32.em, you don't get fancy orphan handling +-# spu twiddles LOAD range, hppa64 adds PHDR, frv-linux adds GNU_STACK ++# spu twiddles LOAD range, hppa64 adds PHDR, frv-linux adds GNU_STACK, ++# nacl splits to two segments + + #... + \[[ 0-9]+\] \.text[ \t]+PROGBITS[ \t]+0*40000000[ \t]+.* +diff --git a/ld/testsuite/ld-elf/shared.exp b/ld/testsuite/ld-elf/shared.exp +index c00f3e5..c9f2056 100644 +--- a/ld/testsuite/ld-elf/shared.exp ++++ b/ld/testsuite/ld-elf/shared.exp +@@ -336,14 +336,14 @@ set build_cxx_tests { + {del.cc new.cc} {} "libnew1b.so" "c++"} + } + +-set run_cxx_tests { +- {"Run with libdl3a.so" +- "-Wl,--no-as-needed tmpdir/libdl3a.so" "" +- {dl3main.cc} "dl3a" "dl3a.out" "" "c++"} + # "-shared -Bsymbolic" only works with gcc 4.5.0 and newer. + # {"Run with libdl3b.so" + # "tmpdir/libdl3b.so" "" + # {dl3main.cc} "dl3b" "dl3b.out" "" "c++"} ++set run_cxx_tests { ++ {"Run with libdl3a.so" ++ "-Wl,--no-as-needed tmpdir/libdl3a.so" "" ++ {dl3main.cc} "dl3a" "dl3a.out" "" "c++"} + {"Run with libdl3c.so" + "-Wl,--no-as-needed tmpdir/libdl3c.so" "" + {dl3main.cc} "dl3c" "dl3a.out" "" "c++"} +diff --git a/ld/testsuite/ld-gc/pr13683.d b/ld/testsuite/ld-gc/pr13683.d +index e497088..19b2598 100644 +--- a/ld/testsuite/ld-gc/pr13683.d ++++ b/ld/testsuite/ld-gc/pr13683.d +@@ -2,7 +2,7 @@ + #source: dummy.s + #ld: --gc-sections -e main --defsym foo=foo2 tmpdir/pr13683.o + #nm: --format=bsd +-#xfail: sh64*-*-* iq2000-*-* lm32-*-* epiphany-*-* mips64vr-*-* frv-*-* m32c-*-* rl78-*-* rx-*-* sh-*-* ++#xfail: sh64*-*-* iq2000-*-* lm32-*-* epiphany-*-* mips64vr-*-* frv-*-* m32c-*-* rl78-*-* rx-*-* sh-*-* powerpc*-*-eabivle + + # Note - look for both "foo" and "foo2" being defined, non-zero function symbols + +diff --git a/ld/testsuite/ld-ifunc/ifunc-14-i386.d b/ld/testsuite/ld-ifunc/ifunc-14-i386.d +deleted file mode 100644 +index 0edc9fb..0000000 +--- a/ld/testsuite/ld-ifunc/ifunc-14-i386.d ++++ /dev/null +@@ -1,11 +0,0 @@ +-#source: ifunc-14a.s +-#source: ifunc-14b.s +-#ld: -shared -m elf_i386 -z nocombreloc +-#as: --32 +-#readelf: -d --wide +-#target: x86_64-*-* i?86-*-* +- +-#failif +-#... +-.*\(TEXTREL\).* +-#... +diff --git a/ld/testsuite/ld-ifunc/ifunc-14-x86-64.d b/ld/testsuite/ld-ifunc/ifunc-14-x86-64.d +deleted file mode 100644 +index 2c4ebbb..0000000 +--- a/ld/testsuite/ld-ifunc/ifunc-14-x86-64.d ++++ /dev/null +@@ -1,11 +0,0 @@ +-#source: ifunc-14a.s +-#source: ifunc-14b.s +-#ld: -shared -m elf_x86_64 -z nocombreloc +-#as: --64 +-#readelf: -d +-#target: x86_64-*-* +- +-#failif +-#... +-.*\(TEXTREL\).* +-#... +diff --git a/ld/testsuite/ld-ifunc/ifunc-14a-i386.d b/ld/testsuite/ld-ifunc/ifunc-14a-i386.d +new file mode 100644 +index 0000000..0edc9fb +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-14a-i386.d +@@ -0,0 +1,11 @@ ++#source: ifunc-14a.s ++#source: ifunc-14b.s ++#ld: -shared -m elf_i386 -z nocombreloc ++#as: --32 ++#readelf: -d --wide ++#target: x86_64-*-* i?86-*-* ++ ++#failif ++#... ++.*\(TEXTREL\).* ++#... +diff --git a/ld/testsuite/ld-ifunc/ifunc-14a-x86-64.d b/ld/testsuite/ld-ifunc/ifunc-14a-x86-64.d +new file mode 100644 +index 0000000..2c4ebbb +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-14a-x86-64.d +@@ -0,0 +1,11 @@ ++#source: ifunc-14a.s ++#source: ifunc-14b.s ++#ld: -shared -m elf_x86_64 -z nocombreloc ++#as: --64 ++#readelf: -d ++#target: x86_64-*-* ++ ++#failif ++#... ++.*\(TEXTREL\).* ++#... +diff --git a/ld/testsuite/ld-ifunc/ifunc-14b-i386.d b/ld/testsuite/ld-ifunc/ifunc-14b-i386.d +new file mode 100644 +index 0000000..948237d +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-14b-i386.d +@@ -0,0 +1,11 @@ ++#source: ifunc-14b.s ++#source: ifunc-14a.s ++#ld: -shared -m elf_i386 -z nocombreloc ++#as: --32 ++#readelf: -d --wide ++#target: x86_64-*-* i?86-*-* ++ ++#failif ++#... ++.*\(TEXTREL\).* ++#... +diff --git a/ld/testsuite/ld-ifunc/ifunc-14b-x86-64.d b/ld/testsuite/ld-ifunc/ifunc-14b-x86-64.d +new file mode 100644 +index 0000000..cc1f5ae +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-14b-x86-64.d +@@ -0,0 +1,11 @@ ++#source: ifunc-14b.s ++#source: ifunc-14a.s ++#ld: -shared -m elf_x86_64 -z nocombreloc ++#as: --64 ++#readelf: -d ++#target: x86_64-*-* ++ ++#failif ++#... ++.*\(TEXTREL\).* ++#... +diff --git a/ld/testsuite/ld-ifunc/ifunc-14c-i386.d b/ld/testsuite/ld-ifunc/ifunc-14c-i386.d +new file mode 100644 +index 0000000..ca360a3 +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-14c-i386.d +@@ -0,0 +1,11 @@ ++#source: ifunc-14a.s ++#source: ifunc-14b.s ++#ld: -shared -m elf_i386 -z nocombreloc ++#as: --32 ++#readelf: -r --wide ++#target: x86_64-*-* i?86-*-* ++ ++#failif ++#... ++.* +R_386_NONE +.* ++#... +diff --git a/ld/testsuite/ld-ifunc/ifunc-14c-x86-64.d b/ld/testsuite/ld-ifunc/ifunc-14c-x86-64.d +new file mode 100644 +index 0000000..76bfa84 +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-14c-x86-64.d +@@ -0,0 +1,11 @@ ++#source: ifunc-14a.s ++#source: ifunc-14b.s ++#ld: -shared -m elf_x86_64 -z nocombreloc ++#as: --64 ++#readelf: -r --wide ++#target: x86_64-*-* ++ ++#failif ++#... ++.* +R_X86_64_NONE +.* ++#... +diff --git a/ld/testsuite/ld-ifunc/ifunc-14c.s b/ld/testsuite/ld-ifunc/ifunc-14c.s +new file mode 100644 +index 0000000..3cde56e +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-14c.s +@@ -0,0 +1,7 @@ ++ .text ++ .globl xxx ++ .type xxx, @function ++xxx: ++ jmp foo ++ .size xxx, .-xxx ++ .hidden foo +diff --git a/ld/testsuite/ld-ifunc/ifunc-14d-i386.d b/ld/testsuite/ld-ifunc/ifunc-14d-i386.d +new file mode 100644 +index 0000000..2327278 +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-14d-i386.d +@@ -0,0 +1,11 @@ ++#source: ifunc-14b.s ++#source: ifunc-14a.s ++#ld: -shared -m elf_i386 -z nocombreloc ++#as: --32 ++#readelf: -r --wide ++#target: x86_64-*-* i?86-*-* ++ ++#failif ++#... ++.* +R_386_NONE +.* ++#... +diff --git a/ld/testsuite/ld-ifunc/ifunc-14d-x86-64.d b/ld/testsuite/ld-ifunc/ifunc-14d-x86-64.d +new file mode 100644 +index 0000000..789584b +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-14d-x86-64.d +@@ -0,0 +1,11 @@ ++#source: ifunc-14b.s ++#source: ifunc-14a.s ++#ld: -shared -m elf_x86_64 -z nocombreloc ++#as: --64 ++#readelf: -r --wide ++#target: x86_64-*-* ++ ++#failif ++#... ++.* +R_X86_64_NONE +.* ++#... +diff --git a/ld/testsuite/ld-ifunc/ifunc-14e-i386.d b/ld/testsuite/ld-ifunc/ifunc-14e-i386.d +new file mode 100644 +index 0000000..5380987 +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-14e-i386.d +@@ -0,0 +1,12 @@ ++#source: ifunc-14a.s ++#source: ifunc-14c.s ++#source: ifunc-14b.s ++#ld: -shared -m elf_i386 -z nocombreloc ++#as: --32 ++#readelf: -r --wide ++#target: x86_64-*-* i?86-*-* ++ ++#failif ++#... ++.* +R_386_NONE +.* ++#... +diff --git a/ld/testsuite/ld-ifunc/ifunc-14e-x86-64.d b/ld/testsuite/ld-ifunc/ifunc-14e-x86-64.d +new file mode 100644 +index 0000000..0955c92 +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-14e-x86-64.d +@@ -0,0 +1,12 @@ ++#source: ifunc-14a.s ++#source: ifunc-14c.s ++#source: ifunc-14b.s ++#ld: -shared -m elf_x86_64 -z nocombreloc ++#as: --64 ++#readelf: -r --wide ++#target: x86_64-*-* ++ ++#failif ++#... ++.* +R_X86_64_NONE +.* ++#... +diff --git a/ld/testsuite/ld-ifunc/ifunc-14f-i386.d b/ld/testsuite/ld-ifunc/ifunc-14f-i386.d +new file mode 100644 +index 0000000..ed3dc53 +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-14f-i386.d +@@ -0,0 +1,12 @@ ++#source: ifunc-14a.s ++#source: ifunc-14b.s ++#source: ifunc-14c.s ++#ld: -shared -m elf_i386 -z nocombreloc ++#as: --32 ++#readelf: -r --wide ++#target: x86_64-*-* i?86-*-* ++ ++#failif ++#... ++.* +R_386_NONE +.* ++#... +diff --git a/ld/testsuite/ld-ifunc/ifunc-14f-x86-64.d b/ld/testsuite/ld-ifunc/ifunc-14f-x86-64.d +new file mode 100644 +index 0000000..12fb225 +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-14f-x86-64.d +@@ -0,0 +1,12 @@ ++#source: ifunc-14a.s ++#source: ifunc-14b.s ++#source: ifunc-14c.s ++#ld: -shared -m elf_x86_64 -z nocombreloc ++#as: --64 ++#readelf: -r --wide ++#target: x86_64-*-* ++ ++#failif ++#... ++.* +R_X86_64_NONE +.* ++#... +diff --git a/ld/testsuite/ld-ifunc/ifunc-18a-i386.d b/ld/testsuite/ld-ifunc/ifunc-18a-i386.d +new file mode 100644 +index 0000000..10490b1 +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-18a-i386.d +@@ -0,0 +1,15 @@ ++#source: ifunc-18a.s ++#source: ifunc-18b.s ++#ld: -shared -m elf_i386 -z nocombreloc ++#as: --32 ++#readelf: -r --wide ++#target: x86_64-*-* i?86-*-* ++ ++Relocation section '.rel.ifunc' at .* ++[ ]+Offset[ ]+Info[ ]+Type[ ]+.* ++[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_386_IRELATIVE[ ]* ++ ++Relocation section '.rel.plt' at .* ++[ ]+Offset[ ]+Info[ ]+Type[ ]+.* ++[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_386_IRELATIVE[ ]* ++[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_386_IRELATIVE[ ]* +diff --git a/ld/testsuite/ld-ifunc/ifunc-18a-x86-64.d b/ld/testsuite/ld-ifunc/ifunc-18a-x86-64.d +new file mode 100644 +index 0000000..0d600eb +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-18a-x86-64.d +@@ -0,0 +1,15 @@ ++#source: ifunc-18a.s ++#source: ifunc-18b.s ++#as: --64 ++#ld: -shared -melf_x86_64 -z nocombreloc ++#readelf: -r --wide ++#target: x86_64-*-* ++ ++Relocation section '.rela.ifunc' at .* ++[ ]+Offset[ ]+Info[ ]+Type[ ]+.* ++[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_X86_64_IRELATIVE[ ]+[0-9a-f]* ++ ++Relocation section '.rela.plt' at .* ++[ ]+Offset[ ]+Info[ ]+Type[ ]+.* ++[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_X86_64_IRELATIVE[ ]+[0-9a-f]* ++[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_X86_64_IRELATIVE[ ]+[0-9a-f]* +diff --git a/ld/testsuite/ld-ifunc/ifunc-18a.s b/ld/testsuite/ld-ifunc/ifunc-18a.s +new file mode 100644 +index 0000000..c29c121 +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-18a.s +@@ -0,0 +1,5 @@ ++ .section .data.rel,"aw",@progbits ++ .globl foo_ptrt ++ .type foo_ptr, @object ++foo_ptr: ++ .dc.a foo +diff --git a/ld/testsuite/ld-ifunc/ifunc-18b-i386.d b/ld/testsuite/ld-ifunc/ifunc-18b-i386.d +new file mode 100644 +index 0000000..a5eda94 +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-18b-i386.d +@@ -0,0 +1,15 @@ ++#source: ifunc-18b.s ++#source: ifunc-18a.s ++#ld: -shared -m elf_i386 -z nocombreloc ++#as: --32 ++#readelf: -r --wide ++#target: x86_64-*-* i?86-*-* ++ ++Relocation section '.rel.ifunc' at .* ++[ ]+Offset[ ]+Info[ ]+Type[ ]+.* ++[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_386_IRELATIVE[ ]* ++ ++Relocation section '.rel.plt' at .* ++[ ]+Offset[ ]+Info[ ]+Type[ ]+.* ++[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_386_IRELATIVE[ ]* ++[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_386_IRELATIVE[ ]* +diff --git a/ld/testsuite/ld-ifunc/ifunc-18b-x86-64.d b/ld/testsuite/ld-ifunc/ifunc-18b-x86-64.d +new file mode 100644 +index 0000000..8dfebfb +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-18b-x86-64.d +@@ -0,0 +1,15 @@ ++#source: ifunc-18b.s ++#source: ifunc-18a.s ++#as: --64 ++#ld: -shared -melf_x86_64 -z nocombreloc ++#readelf: -r --wide ++#target: x86_64-*-* ++ ++Relocation section '.rela.ifunc' at .* ++[ ]+Offset[ ]+Info[ ]+Type[ ]+.* ++[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_X86_64_IRELATIVE[ ]+[0-9a-f]* ++ ++Relocation section '.rela.plt' at .* ++[ ]+Offset[ ]+Info[ ]+Type[ ]+.* ++[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_X86_64_IRELATIVE[ ]+[0-9a-f]* ++[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_X86_64_IRELATIVE[ ]+[0-9a-f]* +diff --git a/ld/testsuite/ld-ifunc/ifunc-18b.s b/ld/testsuite/ld-ifunc/ifunc-18b.s +new file mode 100644 +index 0000000..fece413 +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-18b.s +@@ -0,0 +1,15 @@ ++ .text ++ .type foo, %gnu_indirect_function ++ .hidden foo ++ .globl foo ++foo: ++ ret ++ .size foo, .-foo ++ .globl bar ++bar: ++ jmp foo1@PLT ++ ret ++ .size bar, .-bar ++ .hidden foo1 ++ .globl foo1 ++ foo1 = foo +diff --git a/ld/testsuite/ld-ifunc/ifunc-19a-i386.d b/ld/testsuite/ld-ifunc/ifunc-19a-i386.d +new file mode 100644 +index 0000000..8319bfc +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-19a-i386.d +@@ -0,0 +1,14 @@ ++#source: ifunc-19a.s ++#source: ifunc-19b.s ++#ld: -shared -m elf_i386 -z nocombreloc ++#as: --32 ++#readelf: -r --wide ++#target: x86_64-*-* i?86-*-* ++ ++Relocation section '.rel.ifunc' at .* ++[ ]+Offset[ ]+Info[ ]+Type[ ]+.* ++[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_386_IRELATIVE[ ]* ++ ++Relocation section '.rel.plt' at .* ++[ ]+Offset[ ]+Info[ ]+Type[ ]+.* ++[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_386_IRELATIVE[ ]* +diff --git a/ld/testsuite/ld-ifunc/ifunc-19a-x86-64.d b/ld/testsuite/ld-ifunc/ifunc-19a-x86-64.d +new file mode 100644 +index 0000000..fe576d2 +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-19a-x86-64.d +@@ -0,0 +1,14 @@ ++#source: ifunc-19a.s ++#source: ifunc-19b.s ++#as: --64 ++#ld: -shared -melf_x86_64 -z nocombreloc ++#readelf: -r --wide ++#target: x86_64-*-* ++ ++Relocation section '.rela.ifunc' at .* ++[ ]+Offset[ ]+Info[ ]+Type[ ]+.* ++[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_X86_64_IRELATIVE[ ]+[0-9a-f]* ++ ++Relocation section '.rela.plt' at .* ++[ ]+Offset[ ]+Info[ ]+Type[ ]+.* ++[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_X86_64_IRELATIVE[ ]+[0-9a-f]* +diff --git a/ld/testsuite/ld-ifunc/ifunc-19a.s b/ld/testsuite/ld-ifunc/ifunc-19a.s +new file mode 100644 +index 0000000..3a3d0cd +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-19a.s +@@ -0,0 +1,5 @@ ++ .section .data.rel,"aw",@progbits ++ .globl foo_ptrt ++ .type foo_ptr, @object ++foo_ptr: ++ .dc.a foo1 +diff --git a/ld/testsuite/ld-ifunc/ifunc-19b-i386.d b/ld/testsuite/ld-ifunc/ifunc-19b-i386.d +new file mode 100644 +index 0000000..5bb8170 +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-19b-i386.d +@@ -0,0 +1,14 @@ ++#source: ifunc-19b.s ++#source: ifunc-19a.s ++#ld: -shared -m elf_i386 -z nocombreloc ++#as: --32 ++#readelf: -r --wide ++#target: x86_64-*-* i?86-*-* ++ ++Relocation section '.rel.ifunc' at .* ++[ ]+Offset[ ]+Info[ ]+Type[ ]+.* ++[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_386_IRELATIVE[ ]* ++ ++Relocation section '.rel.plt' at .* ++[ ]+Offset[ ]+Info[ ]+Type[ ]+.* ++[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_386_IRELATIVE[ ]* +diff --git a/ld/testsuite/ld-ifunc/ifunc-19b-x86-64.d b/ld/testsuite/ld-ifunc/ifunc-19b-x86-64.d +new file mode 100644 +index 0000000..35fa328 +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-19b-x86-64.d +@@ -0,0 +1,14 @@ ++#source: ifunc-19b.s ++#source: ifunc-19a.s ++#as: --64 ++#ld: -shared -melf_x86_64 -z nocombreloc ++#readelf: -r --wide ++#target: x86_64-*-* ++ ++Relocation section '.rela.ifunc' at .* ++[ ]+Offset[ ]+Info[ ]+Type[ ]+.* ++[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_X86_64_IRELATIVE[ ]+[0-9a-f]* ++ ++Relocation section '.rela.plt' at .* ++[ ]+Offset[ ]+Info[ ]+Type[ ]+.* ++[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_X86_64_IRELATIVE[ ]+[0-9a-f]* +diff --git a/ld/testsuite/ld-ifunc/ifunc-19b.s b/ld/testsuite/ld-ifunc/ifunc-19b.s +new file mode 100644 +index 0000000..fece413 +--- /dev/null ++++ b/ld/testsuite/ld-ifunc/ifunc-19b.s +@@ -0,0 +1,15 @@ ++ .text ++ .type foo, %gnu_indirect_function ++ .hidden foo ++ .globl foo ++foo: ++ ret ++ .size foo, .-foo ++ .globl bar ++bar: ++ jmp foo1@PLT ++ ret ++ .size bar, .-bar ++ .hidden foo1 ++ .globl foo1 ++ foo1 = foo +diff --git a/ld/testsuite/ld-plugin/plugin-2.d b/ld/testsuite/ld-plugin/plugin-2.d +index 0ce111f..d0190a7 100644 +--- a/ld/testsuite/ld-plugin/plugin-2.d ++++ b/ld/testsuite/ld-plugin/plugin-2.d +@@ -18,5 +18,5 @@ Hello from testplugin. + .*: LDPT_OPTION 'failonload' + .*: LDPT_NULL value 0x0 \(0\) + #... +-.*ld.*:.*ldtestplug.*: error loading plugin ++.*ld.*:.*ldtestplug.*: plugin error: 3 + #... +diff --git a/ld/testsuite/ld-plugin/plugin-4.d b/ld/testsuite/ld-plugin/plugin-4.d +index e17565e..9f25fc6 100644 +--- a/ld/testsuite/ld-plugin/plugin-4.d ++++ b/ld/testsuite/ld-plugin/plugin-4.d +@@ -20,5 +20,5 @@ Hello from testplugin. + .*: LDPT_NULL value 0x0 \(0\) + #... + hook called: cleanup. +-.*ld.*:.*ldtestplug.*: error in plugin cleanup \(ignored\) ++.*ld.*:.*ldtestplug.*: error in plugin cleanup: 3 \(ignored\) + #... +diff --git a/ld/testsuite/ld-powerpc/apuinfo-nul.rd b/ld/testsuite/ld-powerpc/apuinfo-nul.rd +index c20fc5e..d617b68 100644 +--- a/ld/testsuite/ld-powerpc/apuinfo-nul.rd ++++ b/ld/testsuite/ld-powerpc/apuinfo-nul.rd +@@ -5,5 +5,5 @@ + #target: powerpc-eabi* + + Hex dump of section '.PPC.EMB.apuinfo': +- 0x00000000 00000008 00000000 00000002 41505569 ............APUi ++ 0x00000000 (00000008|08000000) 00000000 (00000002|02000000) 41505569 .*APUi + 0x00000010 6e666f00 nfo. +diff --git a/ld/testsuite/ld-powerpc/apuinfo.rd b/ld/testsuite/ld-powerpc/apuinfo.rd +index 7a09d2f..3c07516 100644 +--- a/ld/testsuite/ld-powerpc/apuinfo.rd ++++ b/ld/testsuite/ld-powerpc/apuinfo.rd +@@ -6,7 +6,7 @@ + #target: powerpc-eabi* + + Hex dump of section '.PPC.EMB.apuinfo': +- 0x00000000 00000008 00000020 00000002 41505569 ....... ....APUi +- 0x00000010 6e666f00 00420001 00430001 00410001 nfo..B...C...A.. +- 0x00000020 01020001 01010001 00400001 01040001 .........@...... +- 0x00000030 01000001 ....$ ++ 0x00000000 (00000008|08000000) (00000020|20000000) (00000002|02000000) 41505569 .*APUi ++ 0x00000010 6e666f00 (00420001|01004200) (00430001|01004300) (00410001|01004100) nfo.* ++ 0x00000020 (01020001|01000201) (01010001|01000101) (00400001|01004000) (01040001|01000401) .* ++ 0x00000030 01000001 .* +diff --git a/ld/testsuite/ld-powerpc/plt1.d b/ld/testsuite/ld-powerpc/plt1.d +index d8d9d8d..7361702 100644 +--- a/ld/testsuite/ld-powerpc/plt1.d ++++ b/ld/testsuite/ld-powerpc/plt1.d +@@ -3,18 +3,18 @@ + #objdump: -dr + #target: powerpc*-*-* + +-.*: file format elf32-powerpc ++.* + + Disassembly of section .text: + + 0+ <_start>: +- 0: 42 9f 00 05 bcl- 20,4\*cr7\+so,4 .* +- 4: 7f c8 02 a6 mflr r30 +- 8: 3f de 00 00 addis r30,r30,0 +- a: R_PPC_REL16_HA _GLOBAL_OFFSET_TABLE_\+0x6 +- c: 3b de 00 0a addi r30,r30,10 +- e: R_PPC_REL16_LO _GLOBAL_OFFSET_TABLE_\+0xa +- 10: 48 00 00 01 bl 10 .* ++ 0: (42 9f 00 05|05 00 9f 42) bcl 20,4\*cr7\+so,4 .* ++ 4: (7f c8 02 a6|a6 02 c8 7f) mflr r30 ++ 8: (3f de 00 00|00 00 de 3f) addis r30,r30,0 ++ (a|8): R_PPC_REL16_HA _GLOBAL_OFFSET_TABLE_\+0x(6|4) ++ c: (3b de 00 0.|0. 00 de 3b) addi r30,r30,.* ++ (e|c): R_PPC_REL16_LO _GLOBAL_OFFSET_TABLE_\+0x(a|8) ++ 10: (48 00 00 01|01 00 00 48) bl 10 .* + 10: R_PPC_PLTREL24 _exit +- 14: 48 00 00 00 b 14 .* ++ 14: (48 00 00 00|00 00 00 48) b 14 .* + 14: R_PPC_REL24 _start +diff --git a/ld/testsuite/ld-powerpc/powerpc.exp b/ld/testsuite/ld-powerpc/powerpc.exp +index 8f08991..8e9b179 100644 +--- a/ld/testsuite/ld-powerpc/powerpc.exp ++++ b/ld/testsuite/ld-powerpc/powerpc.exp +@@ -242,6 +242,27 @@ set ppceabitests { + {{objdump "-Mvle -d" vle-reloc-3.d}} "vle-reloc-3"} + } + ++if [istarget "powerpc*le*-*-*"] then { ++ set options_regsub(ld) {-melf32ppc -melf32lppc} ++ ++ for {set i 0} {$i < [llength $ppcelftests]} {incr i} { ++ set line [lindex $ppcelftests $i] ++ set ld_options [lindex $line 1] ++ regsub -all elf32ppc $ld_options elf32lppc ld_options ++ set line [lreplace $line 1 1 $ld_options] ++ set ppcelftests [lreplace $ppcelftests $i $i $line] ++ } ++ ++ if [ supports_ppc64 ] then { ++ for {set i 0} {$i < [llength $ppc64elftests]} {incr i} { ++ set line [lindex $ppcelftests $i] ++ set ld_options [lindex $line 1] ++ regsub -all elf64ppc $ld_options elf64lppc ld_options ++ set line [lreplace $line 1 1 $ld_options] ++ set ppc64elftests [lreplace $ppc64elftests $i $i $line] ++ } ++ } ++} + + run_ld_link_tests $ppcelftests + +diff --git a/ld/testsuite/ld-powerpc/relax.d b/ld/testsuite/ld-powerpc/relax.d +index 5a6b3dd..e58cc78 100644 +--- a/ld/testsuite/ld-powerpc/relax.d ++++ b/ld/testsuite/ld-powerpc/relax.d +@@ -4,12 +4,12 @@ + Disassembly of section .text: + + 00000000 <_start>: +- 0: 48 00 43 21 bl 4320 +- 4: 48 00 00 11 bl 14 <_start\+0x14> +- 8: 48 00 43 19 bl 4320 +- c: 48 00 00 09 bl 14 <_start\+0x14> +- 10: 4b ff ff f0 b 0 <.*> +- 14: 3d 80 80 00 lis r12,-32768 +- 18: 39 8c 12 34 addi r12,r12,4660 +- 1c: 7d 89 03 a6 mtctr r12 +- 20: 4e 80 04 20 bctr ++ 0: (48 00 43 21|21 43 00 48) bl 4320 ++ 4: (48 00 00 11|11 00 00 48) bl 14 <_start\+0x14> ++ 8: (48 00 43 19|19 43 00 48) bl 4320 ++ c: (48 00 00 09|09 00 00 48) bl 14 <_start\+0x14> ++ 10: (4b ff ff f0|f0 ff ff 4b) b 0 <.*> ++ 14: (3d 80 80 00|00 80 80 3d) lis r12,-32768 ++ 18: (39 8c 12 34|34 12 8c 39) addi r12,r12,4660 ++ 1c: (7d 89 03 a6|a6 03 89 7d) mtctr r12 ++ 20: (4e 80 04 20|20 04 80 4e) bctr +diff --git a/ld/testsuite/ld-powerpc/relaxr.d b/ld/testsuite/ld-powerpc/relaxr.d +index 6e55984..3ce2751 100644 +--- a/ld/testsuite/ld-powerpc/relaxr.d ++++ b/ld/testsuite/ld-powerpc/relaxr.d +@@ -4,23 +4,23 @@ + Disassembly of section .text: + + 00000000 <_start>: +- 0: 48 00 00 15 bl 14 <_start\+0x14> +- 4: 48 00 00 21 bl 24 <_start\+0x24> +- 8: 48 00 00 0d bl 14 <_start\+0x14> ++ 0: (48 00 00 15|15 00 00 48) bl 14 <_start\+0x14> ++ 4: (48 00 00 21|21 00 00 48) bl 24 <_start\+0x24> ++ 8: (48 00 00 0d|0d 00 00 48) bl 14 <_start\+0x14> + 8: R_PPC_NONE \*ABS\* +- c: 48 00 00 19 bl 24 <_start\+0x24> ++ c: (48 00 00 19|19 00 00 48) bl 24 <_start\+0x24> + c: R_PPC_NONE \*ABS\* +- 10: 48 00 00 00 b 10 <_start\+0x10> ++ 10: (48 00 00 00|00 00 00 48) b 10 <_start\+0x10> + 10: R_PPC_REL24 _start +- 14: 3d 80 00 00 lis r12,0 +- 16: R_PPC_ADDR16_HA near +- 18: 39 8c 00 00 addi r12,r12,0 +- 1a: R_PPC_ADDR16_LO near +- 1c: 7d 89 03 a6 mtctr r12 +- 20: 4e 80 04 20 bctr +- 24: 3d 80 00 00 lis r12,0 +- 26: R_PPC_ADDR16_HA far +- 28: 39 8c 00 00 addi r12,r12,0 +- 2a: R_PPC_ADDR16_LO far +- 2c: 7d 89 03 a6 mtctr r12 +- 30: 4e 80 04 20 bctr ++ 14: (3d 80 00 00|00 00 80 3d) lis r12,0 ++ 1(6|4): R_PPC_ADDR16_HA near ++ 18: (39 8c 00 00|00 00 8c 39) addi r12,r12,0 ++ 1(a|8): R_PPC_ADDR16_LO near ++ 1c: (7d 89 03 a6|a6 03 89 7d) mtctr r12 ++ 20: (4e 80 04 20|20 04 80 4e) bctr ++ 24: (3d 80 00 00|00 00 80 3d) lis r12,0 ++ 2(6|4): R_PPC_ADDR16_HA far ++ 28: (39 8c 00 00|00 00 8c 39) addi r12,r12,0 ++ 2(a|8): R_PPC_ADDR16_LO far ++ 2c: (7d 89 03 a6|a6 03 89 7d) mtctr r12 ++ 30: (4e 80 04 20|20 04 80 4e) bctr +diff --git a/ld/testsuite/ld-powerpc/sdadyn.d b/ld/testsuite/ld-powerpc/sdadyn.d +index 42e389f..cbdfc1e 100644 +--- a/ld/testsuite/ld-powerpc/sdadyn.d ++++ b/ld/testsuite/ld-powerpc/sdadyn.d +@@ -1,5 +1,5 @@ + +-.*: +file format elf32-powerpc ++.* + + DYNAMIC RELOCATION RECORDS + OFFSET TYPE VALUE +diff --git a/ld/testsuite/ld-powerpc/tls.d b/ld/testsuite/ld-powerpc/tls.d +index abae98a..3c32980 100644 +--- a/ld/testsuite/ld-powerpc/tls.d ++++ b/ld/testsuite/ld-powerpc/tls.d +@@ -1,53 +1,53 @@ + #source: tls.s + #source: tlslib.s + #as: -a64 +-#ld: -melf64ppc ++#ld: + #objdump: -dr + #target: powerpc64*-*-* + +-.*: +file format elf64-powerpc ++.* + + Disassembly of section \.text: + + 0+100000e8 <_start>: +- 100000e8: 3c 6d 00 00 addis r3,r13,0 +- 100000ec: 60 00 00 00 nop +- 100000f0: 38 63 90 78 addi r3,r3,-28552 +- 100000f4: 3c 6d 00 00 addis r3,r13,0 +- 100000f8: 60 00 00 00 nop +- 100000fc: 38 63 10 00 addi r3,r3,4096 +- 10000100: 3c 6d 00 00 addis r3,r13,0 +- 10000104: 60 00 00 00 nop +- 10000108: 38 63 90 40 addi r3,r3,-28608 +- 1000010c: 3c 6d 00 00 addis r3,r13,0 +- 10000110: 60 00 00 00 nop +- 10000114: 38 63 10 00 addi r3,r3,4096 +- 10000118: 39 23 80 48 addi r9,r3,-32696 +- 1000011c: 3d 23 00 00 addis r9,r3,0 +- 10000120: 81 49 80 50 lwz r10,-32688\(r9\) +- 10000124: e9 22 80 10 ld r9,-32752\(r2\) +- 10000128: 7d 49 18 2a ldx r10,r9,r3 +- 1000012c: 3d 2d 00 00 addis r9,r13,0 +- 10000130: a1 49 90 60 lhz r10,-28576\(r9\) +- 10000134: 89 4d 90 68 lbz r10,-28568\(r13\) +- 10000138: 3d 2d 00 00 addis r9,r13,0 +- 1000013c: 99 49 90 70 stb r10,-28560\(r9\) +- 10000140: 3c 6d 00 00 addis r3,r13,0 +- 10000144: 60 00 00 00 nop +- 10000148: 38 63 90 00 addi r3,r3,-28672 +- 1000014c: 3c 6d 00 00 addis r3,r13,0 +- 10000150: 60 00 00 00 nop +- 10000154: 38 63 10 00 addi r3,r3,4096 +- 10000158: f9 43 80 08 std r10,-32760\(r3\) +- 1000015c: 3d 23 00 00 addis r9,r3,0 +- 10000160: 91 49 80 10 stw r10,-32752\(r9\) +- 10000164: e9 22 80 08 ld r9,-32760\(r2\) +- 10000168: 7d 49 19 2a stdx r10,r9,r3 +- 1000016c: 3d 2d 00 00 addis r9,r13,0 +- 10000170: b1 49 90 60 sth r10,-28576\(r9\) +- 10000174: e9 4d 90 2a lwa r10,-28632\(r13\) +- 10000178: 3d 2d 00 00 addis r9,r13,0 +- 1000017c: a9 49 90 30 lha r10,-28624\(r9\) ++.*: (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.*: (60 00 00 00|00 00 00 60) nop ++.*: (38 63 90 78|78 90 63 38) addi r3,r3,-28552 ++.*: (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.*: (60 00 00 00|00 00 00 60) nop ++.*: (38 63 10 00|00 10 63 38) addi r3,r3,4096 ++.*: (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.*: (60 00 00 00|00 00 00 60) nop ++.*: (38 63 90 40|40 90 63 38) addi r3,r3,-28608 ++.*: (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.*: (60 00 00 00|00 00 00 60) nop ++.*: (38 63 10 00|00 10 63 38) addi r3,r3,4096 ++.*: (39 23 80 48|48 80 23 39) addi r9,r3,-32696 ++.*: (3d 23 00 00|00 00 23 3d) addis r9,r3,0 ++.*: (81 49 80 50|50 80 49 81) lwz r10,-32688\(r9\) ++.*: (e9 22 80 10|10 80 22 e9) ld r9,-32752\(r2\) ++.*: (7d 49 18 2a|2a 18 49 7d) ldx r10,r9,r3 ++.*: (3d 2d 00 00|00 00 2d 3d) addis r9,r13,0 ++.*: (a1 49 90 60|60 90 49 a1) lhz r10,-28576\(r9\) ++.*: (89 4d 90 68|68 90 4d 89) lbz r10,-28568\(r13\) ++.*: (3d 2d 00 00|00 00 2d 3d) addis r9,r13,0 ++.*: (99 49 90 70|70 90 49 99) stb r10,-28560\(r9\) ++.*: (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.*: (60 00 00 00|00 00 00 60) nop ++.*: (38 63 90 00|00 90 63 38) addi r3,r3,-28672 ++.*: (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.*: (60 00 00 00|00 00 00 60) nop ++.*: (38 63 10 00|00 10 63 38) addi r3,r3,4096 ++.*: (f9 43 80 08|08 80 43 f9) std r10,-32760\(r3\) ++.*: (3d 23 00 00|00 00 23 3d) addis r9,r3,0 ++.*: (91 49 80 10|10 80 49 91) stw r10,-32752\(r9\) ++.*: (e9 22 80 08|08 80 22 e9) ld r9,-32760\(r2\) ++.*: (7d 49 19 2a|2a 19 49 7d) stdx r10,r9,r3 ++.*: (3d 2d 00 00|00 00 2d 3d) addis r9,r13,0 ++.*: (b1 49 90 60|60 90 49 b1) sth r10,-28576\(r9\) ++.*: (e9 4d 90 2a|2a 90 4d e9) lwa r10,-28632\(r13\) ++.*: (3d 2d 00 00|00 00 2d 3d) addis r9,r13,0 ++.*: (a9 49 90 30|30 90 49 a9) lha r10,-28624\(r9\) + + 0+10000180 <\.__tls_get_addr>: +- 10000180: 4e 80 00 20 blr ++.*: (4e 80 00 20|20 00 80 4e) blr +diff --git a/ld/testsuite/ld-powerpc/tls.g b/ld/testsuite/ld-powerpc/tls.g +index 051ddd1..83f8e06 100644 +--- a/ld/testsuite/ld-powerpc/tls.g ++++ b/ld/testsuite/ld-powerpc/tls.g +@@ -1,12 +1,12 @@ + #source: tls.s + #source: tlslib.s + #as: -a64 +-#ld: -melf64ppc ++#ld: + #objdump: -sj.got + #target: powerpc64*-*-* + +-.*: +file format elf64-powerpc ++.* + + Contents of section \.got: +- 100101e0 00000000 100181e0 ffffffff ffff8018 .* +- 100101f0 ffffffff ffff8058 .* ++ 100101e0 (00000000|e0810110) (100181e0|00000000) (ffffffff|1880ffff) (ffff8018|ffffffff) .* ++ 100101f0 (ffffffff|5880ffff) (ffff8058|ffffffff) .* +diff --git a/ld/testsuite/ld-powerpc/tls.t b/ld/testsuite/ld-powerpc/tls.t +index 32a909b..77ba632 100644 +--- a/ld/testsuite/ld-powerpc/tls.t ++++ b/ld/testsuite/ld-powerpc/tls.t +@@ -1,14 +1,14 @@ + #source: tls.s + #source: tlslib.s + #as: -a64 +-#ld: -melf64ppc ++#ld: + #objdump: -sj.tdata + #target: powerpc64*-*-* + + .*: +file format elf64-powerpc + + Contents of section \.tdata: +-.* 12345678 9abcdef0 23456789 abcdef01 .* +-.* 3456789a bcdef012 456789ab cdef0123 .* +-.* 56789abc def01234 6789abcd ef012345 .* +-.* 789abcde f0123456 00c0ffee .* ++.* (12345678|f0debc9a) (9abcdef0|78563412) (23456789|01efcdab) (abcdef01|89674523) .* ++.* (3456789a|12f0debc) (bcdef012|9a785634) (456789ab|2301efcd) (cdef0123|ab896745) .* ++.* (56789abc|3412f0de) (def01234|bc9a7856) (6789abcd|452301ef) (ef012345|cdab8967) .* ++.* (789abcde|563412f0) (f0123456|debc9a78) (00c0ffee|eeffc000) .* +diff --git a/ld/testsuite/ld-powerpc/tls32.d b/ld/testsuite/ld-powerpc/tls32.d +index 86fe04a..2b7d0a0 100644 +--- a/ld/testsuite/ld-powerpc/tls32.d ++++ b/ld/testsuite/ld-powerpc/tls32.d +@@ -1,50 +1,50 @@ + #source: tls32.s + #source: tlslib32.s + #as: -a32 +-#ld: -melf32ppc ++#ld: + #objdump: -dr + #target: powerpc*-*-* + +-.*: +file format elf32-powerpc ++.* + + Disassembly of section \.text: + + 0+1800094 <_start>: +- 1800094: 3c 62 00 00 addis r3,r2,0 +- 1800098: 38 63 90 3c addi r3,r3,-28612 +- 180009c: 3c 62 00 00 addis r3,r2,0 +- 18000a0: 38 63 10 00 addi r3,r3,4096 +- 18000a4: 3c 62 00 00 addis r3,r2,0 +- 18000a8: 38 63 90 20 addi r3,r3,-28640 +- 18000ac: 3c 62 00 00 addis r3,r2,0 +- 18000b0: 38 63 10 00 addi r3,r3,4096 +- 18000b4: 39 23 80 24 addi r9,r3,-32732 +- 18000b8: 3d 23 00 00 addis r9,r3,0 +- 18000bc: 81 49 80 28 lwz r10,-32728\(r9\) +- 18000c0: 3d 22 00 00 addis r9,r2,0 +- 18000c4: a1 49 90 30 lhz r10,-28624\(r9\) +- 18000c8: 89 42 90 34 lbz r10,-28620\(r2\) +- 18000cc: 3d 22 00 00 addis r9,r2,0 +- 18000d0: 99 49 90 38 stb r10,-28616\(r9\) +- 18000d4: 3c 62 00 00 addis r3,r2,0 +- 18000d8: 38 63 90 00 addi r3,r3,-28672 +- 18000dc: 3c 62 00 00 addis r3,r2,0 +- 18000e0: 38 63 10 00 addi r3,r3,4096 +- 18000e4: 91 43 80 04 stw r10,-32764\(r3\) +- 18000e8: 3d 23 00 00 addis r9,r3,0 +- 18000ec: 91 49 80 08 stw r10,-32760\(r9\) +- 18000f0: 3d 22 00 00 addis r9,r2,0 +- 18000f4: b1 49 90 30 sth r10,-28624\(r9\) +- 18000f8: a1 42 90 14 lhz r10,-28652\(r2\) +- 18000fc: 3d 22 00 00 addis r9,r2,0 +- 1800100: a9 49 90 18 lha r10,-28648\(r9\) ++.*: (3c 62 00 00|00 00 62 3c) addis r3,r2,0 ++.*: (38 63 90 3c|3c 90 63 38) addi r3,r3,-28612 ++.*: (3c 62 00 00|00 00 62 3c) addis r3,r2,0 ++.*: (38 63 10 00|00 10 63 38) addi r3,r3,4096 ++.*: (3c 62 00 00|00 00 62 3c) addis r3,r2,0 ++.*: (38 63 90 20|20 90 63 38) addi r3,r3,-28640 ++.*: (3c 62 00 00|00 00 62 3c) addis r3,r2,0 ++.*: (38 63 10 00|00 10 63 38) addi r3,r3,4096 ++.*: (39 23 80 24|24 80 23 39) addi r9,r3,-32732 ++.*: (3d 23 00 00|00 00 23 3d) addis r9,r3,0 ++.*: (81 49 80 28|28 80 49 81) lwz r10,-32728\(r9\) ++.*: (3d 22 00 00|00 00 22 3d) addis r9,r2,0 ++.*: (a1 49 90 30|30 90 49 a1) lhz r10,-28624\(r9\) ++.*: (89 42 90 34|34 90 42 89) lbz r10,-28620\(r2\) ++.*: (3d 22 00 00|00 00 22 3d) addis r9,r2,0 ++.*: (99 49 90 38|38 90 49 99) stb r10,-28616\(r9\) ++.*: (3c 62 00 00|00 00 62 3c) addis r3,r2,0 ++.*: (38 63 90 00|00 90 63 38) addi r3,r3,-28672 ++.*: (3c 62 00 00|00 00 62 3c) addis r3,r2,0 ++.*: (38 63 10 00|00 10 63 38) addi r3,r3,4096 ++.*: (91 43 80 04|04 80 43 91) stw r10,-32764\(r3\) ++.*: (3d 23 00 00|00 00 23 3d) addis r9,r3,0 ++.*: (91 49 80 08|08 80 49 91) stw r10,-32760\(r9\) ++.*: (3d 22 00 00|00 00 22 3d) addis r9,r2,0 ++.*: (b1 49 90 30|30 90 49 b1) sth r10,-28624\(r9\) ++.*: (a1 42 90 14|14 90 42 a1) lhz r10,-28652\(r2\) ++.*: (3d 22 00 00|00 00 22 3d) addis r9,r2,0 ++.*: (a9 49 90 18|18 90 49 a9) lha r10,-28648\(r9\) + + 0+1800104 <__tls_get_addr>: +- 1800104: 4e 80 00 20 blr ++.*: (4e 80 00 20|20 00 80 4e) blr + Disassembly of section \.got: + + 0+1810128 <_GLOBAL_OFFSET_TABLE_-0x4>: +- 1810128: 4e 80 00 21 blrl ++.*: (4e 80 00 21|21 00 80 4e) blrl + + 0+181012c <_GLOBAL_OFFSET_TABLE_>: + \.\.\. +diff --git a/ld/testsuite/ld-powerpc/tls32.g b/ld/testsuite/ld-powerpc/tls32.g +index e8c72cc..cbf93cc 100644 +--- a/ld/testsuite/ld-powerpc/tls32.g ++++ b/ld/testsuite/ld-powerpc/tls32.g +@@ -1,11 +1,11 @@ + #source: tls32.s + #source: tlslib32.s + #as: -a32 +-#ld: -melf32ppc ++#ld: + #objdump: -sj.got + #target: powerpc*-*-* + +-.*: +file format elf32-powerpc ++.* + + Contents of section \.got: +- 1810128 4e800021 00000000 00000000 00000000 .* ++ 1810128 (4e800021|2100804e) 00000000 00000000 00000000 .* +diff --git a/ld/testsuite/ld-powerpc/tls32.t b/ld/testsuite/ld-powerpc/tls32.t +index 8149a28..c8b6cb4 100644 +--- a/ld/testsuite/ld-powerpc/tls32.t ++++ b/ld/testsuite/ld-powerpc/tls32.t +@@ -1,12 +1,12 @@ + #source: tls32.s + #source: tlslib32.s + #as: -a32 +-#ld: -melf32ppc ++#ld: + #objdump: -sj.tdata + #target: powerpc*-*-* + +-.*: +file format elf32-powerpc ++.* + + Contents of section \.tdata: +- 1810108 12345678 23456789 3456789a 456789ab .* +- 1810118 56789abc 6789abcd 789abcde 00c0ffee .* ++ 1810108 (12345678|78563412) (23456789|89674523) (3456789a|9a785634) (456789ab|ab896745) .* ++ 1810118 (56789abc|bc9a7856) (6789abcd|cdab8967) (789abcde|debc9a78) (00c0ffee|eeffc000) .* +diff --git a/ld/testsuite/ld-powerpc/tlsexe.d b/ld/testsuite/ld-powerpc/tlsexe.d +index aa1595e..01796df 100644 +--- a/ld/testsuite/ld-powerpc/tlsexe.d ++++ b/ld/testsuite/ld-powerpc/tlsexe.d +@@ -1,88 +1,88 @@ + #source: tls.s + #as: -a64 +-#ld: -melf64ppc tmpdir/libtlslib.so ++#ld: tmpdir/libtlslib.so + #objdump: -dr + #target: powerpc64*-*-* + +-.*: +file format elf64-powerpc ++.* + + Disassembly of section \.text: + + .* <00000010\.plt_call\.__tls_get_addr(|_opt)\+0>: +-.* e9 63 00 00 ld r11,0\(r3\) +-.* e9 83 00 08 ld r12,8\(r3\) +-.* 7c 60 1b 78 mr r0,r3 +-.* 2c 2b 00 00 cmpdi r11,0 +-.* 7c 6c 6a 14 add r3,r12,r13 +-.* 4d 82 00 20 beqlr +-.* 7c 03 03 78 mr r3,r0 +-.* 7d 68 02 a6 mflr r11 +-.* f9 61 00 20 std r11,32\(r1\) +-.* f8 41 00 28 std r2,40\(r1\) +-.* e9 62 80 48 ld r11,-32696\(r2\) +-.* 7d 69 03 a6 mtctr r11 +-.* e8 42 80 50 ld r2,-32688\(r2\) +-.* 4e 80 04 21 bctrl +-.* e9 61 00 20 ld r11,32\(r1\) +-.* e8 41 00 28 ld r2,40\(r1\) +-.* 7d 68 03 a6 mtlr r11 +-.* 4e 80 00 20 blr ++.* (e9 63 00 00|00 00 63 e9) ld r11,0\(r3\) ++.* (e9 83 00 08|08 00 83 e9) ld r12,8\(r3\) ++.* (7c 60 1b 78|78 1b 60 7c) mr r0,r3 ++.* (2c 2b 00 00|00 00 2b 2c) cmpdi r11,0 ++.* (7c 6c 6a 14|14 6a 6c 7c) add r3,r12,r13 ++.* (4d 82 00 20|20 00 82 4d) beqlr ++.* (7c 03 03 78|78 03 03 7c) mr r3,r0 ++.* (7d 68 02 a6|a6 02 68 7d) mflr r11 ++.* (f9 61 00 20|20 00 61 f9) std r11,32\(r1\) ++.* (f8 41 00 28|28 00 41 f8) std r2,40\(r1\) ++.* (e9 62 80 48|48 80 62 e9) ld r11,-32696\(r2\) ++.* (7d 69 03 a6|a6 03 69 7d) mtctr r11 ++.* (e8 42 80 50|50 80 42 e8) ld r2,-32688\(r2\) ++.* (4e 80 04 21|21 04 80 4e) bctrl ++.* (e9 61 00 20|20 00 61 e9) ld r11,32\(r1\) ++.* (e8 41 00 28|28 00 41 e8) ld r2,40\(r1\) ++.* (7d 68 03 a6|a6 03 68 7d) mtlr r11 ++.* (4e 80 00 20|20 00 80 4e) blr + + .* <_start>: +-.* e8 62 80 10 ld r3,-32752\(r2\) +-.* 60 00 00 00 nop +-.* 7c 63 6a 14 add r3,r3,r13 +-.* 38 62 80 18 addi r3,r2,-32744 +-.* 4b ff ff a9 bl .* +-.* 60 00 00 00 nop +-.* 3c 6d 00 00 addis r3,r13,0 +-.* 60 00 00 00 nop +-.* 38 63 90 38 addi r3,r3,-28616 +-.* 3c 6d 00 00 addis r3,r13,0 +-.* 60 00 00 00 nop +-.* 38 63 10 00 addi r3,r3,4096 +-.* 39 23 80 40 addi r9,r3,-32704 +-.* 3d 23 00 00 addis r9,r3,0 +-.* 81 49 80 48 lwz r10,-32696\(r9\) +-.* e9 22 80 28 ld r9,-32728\(r2\) +-.* 7d 49 18 2a ldx r10,r9,r3 +-.* 3d 2d 00 00 addis r9,r13,0 +-.* a1 49 90 58 lhz r10,-28584\(r9\) +-.* 89 4d 90 60 lbz r10,-28576\(r13\) +-.* 3d 2d 00 00 addis r9,r13,0 +-.* 99 49 90 68 stb r10,-28568\(r9\) +-.* 3c 6d 00 00 addis r3,r13,0 +-.* 60 00 00 00 nop +-.* 38 63 90 00 addi r3,r3,-28672 +-.* 3c 6d 00 00 addis r3,r13,0 +-.* 60 00 00 00 nop +-.* 38 63 10 00 addi r3,r3,4096 +-.* f9 43 80 08 std r10,-32760\(r3\) +-.* 3d 23 00 00 addis r9,r3,0 +-.* 91 49 80 10 stw r10,-32752\(r9\) +-.* e9 22 80 08 ld r9,-32760\(r2\) +-.* 7d 49 19 2a stdx r10,r9,r3 +-.* 3d 2d 00 00 addis r9,r13,0 +-.* b1 49 90 58 sth r10,-28584\(r9\) +-.* e9 4d 90 2a lwa r10,-28632\(r13\) +-.* 3d 2d 00 00 addis r9,r13,0 +-.* a9 49 90 30 lha r10,-28624\(r9\) +-.* 00 00 00 00 .* +-.* 00 01 02 00 .* ++.* (e8 62 80 10|10 80 62 e8) ld r3,-32752\(r2\) ++.* (60 00 00 00|00 00 00 60) nop ++.* (7c 63 6a 14|14 6a 63 7c) add r3,r3,r13 ++.* (38 62 80 18|18 80 62 38) addi r3,r2,-32744 ++.* (4b ff ff a9|a9 ff ff 4b) bl .* ++.* (60 00 00 00|00 00 00 60) nop ++.* (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.* (60 00 00 00|00 00 00 60) nop ++.* (38 63 90 38|38 90 63 38) addi r3,r3,-28616 ++.* (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.* (60 00 00 00|00 00 00 60) nop ++.* (38 63 10 00|00 10 63 38) addi r3,r3,4096 ++.* (39 23 80 40|40 80 23 39) addi r9,r3,-32704 ++.* (3d 23 00 00|00 00 23 3d) addis r9,r3,0 ++.* (81 49 80 48|48 80 49 81) lwz r10,-32696\(r9\) ++.* (e9 22 80 28|28 80 22 e9) ld r9,-32728\(r2\) ++.* (7d 49 18 2a|2a 18 49 7d) ldx r10,r9,r3 ++.* (3d 2d 00 00|00 00 2d 3d) addis r9,r13,0 ++.* (a1 49 90 58|58 90 49 a1) lhz r10,-28584\(r9\) ++.* (89 4d 90 60|60 90 4d 89) lbz r10,-28576\(r13\) ++.* (3d 2d 00 00|00 00 2d 3d) addis r9,r13,0 ++.* (99 49 90 68|68 90 49 99) stb r10,-28568\(r9\) ++.* (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.* (60 00 00 00|00 00 00 60) nop ++.* (38 63 90 00|00 90 63 38) addi r3,r3,-28672 ++.* (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.* (60 00 00 00|00 00 00 60) nop ++.* (38 63 10 00|00 10 63 38) addi r3,r3,4096 ++.* (f9 43 80 08|08 80 43 f9) std r10,-32760\(r3\) ++.* (3d 23 00 00|00 00 23 3d) addis r9,r3,0 ++.* (91 49 80 10|10 80 49 91) stw r10,-32752\(r9\) ++.* (e9 22 80 08|08 80 22 e9) ld r9,-32760\(r2\) ++.* (7d 49 19 2a|2a 19 49 7d) stdx r10,r9,r3 ++.* (3d 2d 00 00|00 00 2d 3d) addis r9,r13,0 ++.* (b1 49 90 58|58 90 49 b1) sth r10,-28584\(r9\) ++.* (e9 4d 90 2a|2a 90 4d e9) lwa r10,-28632\(r13\) ++.* (3d 2d 00 00|00 00 2d 3d) addis r9,r13,0 ++.* (a9 49 90 30|30 90 49 a9) lha r10,-28624\(r9\) ++.* (00 00 00 00|00 02 01 00) .* ++.* (00 01 02 00|00 00 00 00) .* + .* <__glink_PLTresolve>: +-.* 7d 88 02 a6 mflr r12 +-.* 42 9f 00 05 bcl- 20,4\*cr7\+so,.* +-.* 7d 68 02 a6 mflr r11 +-.* e8 4b ff f0 ld r2,-16\(r11\) +-.* 7d 88 03 a6 mtlr r12 +-.* 7d 82 5a 14 add r12,r2,r11 +-.* e9 6c 00 00 ld r11,0\(r12\) +-.* e8 4c 00 08 ld r2,8\(r12\) +-.* 7d 69 03 a6 mtctr r11 +-.* e9 6c 00 10 ld r11,16\(r12\) +-.* 4e 80 04 20 bctr +-.* 60 00 00 00 nop +-.* 60 00 00 00 nop +-.* 60 00 00 00 nop +-.* 38 00 00 00 li r0,0 +-.* 4b ff ff c4 b .* ++.* (7d 88 02 a6|a6 02 88 7d) mflr r12 ++.* (42 9f 00 05|05 00 9f 42) bcl 20,4\*cr7\+so,.* ++.* (7d 68 02 a6|a6 02 68 7d) mflr r11 ++.* (e8 4b ff f0|f0 ff 4b e8) ld r2,-16\(r11\) ++.* (7d 88 03 a6|a6 03 88 7d) mtlr r12 ++.* (7d 82 5a 14|14 5a 82 7d) add r12,r2,r11 ++.* (e9 6c 00 00|00 00 6c e9) ld r11,0\(r12\) ++.* (e8 4c 00 08|08 00 4c e8) ld r2,8\(r12\) ++.* (7d 69 03 a6|a6 03 69 7d) mtctr r11 ++.* (e9 6c 00 10|10 00 6c e9) ld r11,16\(r12\) ++.* (4e 80 04 20|20 04 80 4e) bctr ++.* (60 00 00 00|00 00 00 60) nop ++.* (60 00 00 00|00 00 00 60) nop ++.* (60 00 00 00|00 00 00 60) nop ++.* (38 00 00 00|00 00 00 38) li r0,0 ++.* (4b ff ff c4|c4 ff ff 4b) b .* +diff --git a/ld/testsuite/ld-powerpc/tlsexe.g b/ld/testsuite/ld-powerpc/tlsexe.g +index 4fc913a..3420d20 100644 +--- a/ld/testsuite/ld-powerpc/tlsexe.g ++++ b/ld/testsuite/ld-powerpc/tlsexe.g +@@ -1,12 +1,12 @@ + #source: tls.s + #as: -a64 +-#ld: -melf64ppc tmpdir/libtlslib.so ++#ld: tmpdir/libtlslib.so + #objdump: -sj.got + #target: powerpc64*-*-* + +-.*: +file format elf64-powerpc ++.* + + Contents of section \.got: +-.* 00000000 10018620 ffffffff ffff8018 .* ++.* (00000000|20860110) (10018620|00000000) (ffffffff|1880ffff) (ffff8018|ffffffff) .* + .* 00000000 00000000 00000000 00000000 .* + .* 00000000 00000000 00000000 00000000 .* +diff --git a/ld/testsuite/ld-powerpc/tlsexe.r b/ld/testsuite/ld-powerpc/tlsexe.r +index 58d8d35..b0783f1 100644 +--- a/ld/testsuite/ld-powerpc/tlsexe.r ++++ b/ld/testsuite/ld-powerpc/tlsexe.r +@@ -1,7 +1,7 @@ + #source: tls.s + #source: tlslib.s + #as: -a64 +-#ld: -melf64ppc ++#ld: + #readelf: -WSsrl + #target: powerpc64*-*-* + +diff --git a/ld/testsuite/ld-powerpc/tlsexe.t b/ld/testsuite/ld-powerpc/tlsexe.t +index bb512fd..ee25c52 100644 +--- a/ld/testsuite/ld-powerpc/tlsexe.t ++++ b/ld/testsuite/ld-powerpc/tlsexe.t +@@ -1,13 +1,13 @@ + #source: tls.s + #as: -a64 +-#ld: -melf64ppc tmpdir/libtlslib.so ++#ld: tmpdir/libtlslib.so + #objdump: -sj.tdata + #target: powerpc64*-*-* + +-.*: +file format elf64-powerpc ++.* + + Contents of section \.tdata: +- .* 12345678 9abcdef0 23456789 abcdef01 .* +- .* 3456789a bcdef012 456789ab cdef0123 .* +- .* 56789abc def01234 6789abcd ef012345 .* +- .* 789abcde f0123456 .* ++ .* (12345678|f0debc9a) (9abcdef0|78563412) (23456789|01efcdab) (abcdef01|89674523) .* ++ .* (3456789a|12f0debc) (bcdef012|9a785634) (456789ab|2301efcd) (cdef0123|ab896745) .* ++ .* (56789abc|3412f0de) (def01234|bc9a7856) (6789abcd|452301ef) (ef012345|cdab8967) .* ++ .* (789abcde|563412f0) (f0123456|debc9a78) .* +diff --git a/ld/testsuite/ld-powerpc/tlsexe32.d b/ld/testsuite/ld-powerpc/tlsexe32.d +index 527ded0..d0579ce 100644 +--- a/ld/testsuite/ld-powerpc/tlsexe32.d ++++ b/ld/testsuite/ld-powerpc/tlsexe32.d +@@ -1,47 +1,47 @@ + #source: tls32.s + #as: -a32 +-#ld: -melf32ppc tmpdir/libtlslib32.so ++#ld: tmpdir/libtlslib32.so + #objdump: -dr + #target: powerpc*-*-* + +-.*: +file format elf32-powerpc ++.* + + Disassembly of section \.text: + + .* <_start>: +-.*: 80 7f ff f0 lwz r3,-16\(r31\) +-.*: 7c 63 12 14 add r3,r3,r2 +-.*: 38 7f ff f4 addi r3,r31,-12 +-.*: 48 01 01 85 bl .*<__tls_get_addr_opt@plt> +-.*: 3c 62 00 00 addis r3,r2,0 +-.*: 38 63 90 1c addi r3,r3,-28644 +-.*: 3c 62 00 00 addis r3,r2,0 +-.*: 38 63 10 00 addi r3,r3,4096 +-.*: 39 23 80 20 addi r9,r3,-32736 +-.*: 3d 23 00 00 addis r9,r3,0 +-.*: 81 49 80 24 lwz r10,-32732\(r9\) +-.*: 3d 22 00 00 addis r9,r2,0 +-.*: a1 49 90 2c lhz r10,-28628\(r9\) +-.*: 89 42 90 30 lbz r10,-28624\(r2\) +-.*: 3d 22 00 00 addis r9,r2,0 +-.*: 99 49 90 34 stb r10,-28620\(r9\) +-.*: 3c 62 00 00 addis r3,r2,0 +-.*: 38 63 90 00 addi r3,r3,-28672 +-.*: 3c 62 00 00 addis r3,r2,0 +-.*: 38 63 10 00 addi r3,r3,4096 +-.*: 91 43 80 04 stw r10,-32764\(r3\) +-.*: 3d 23 00 00 addis r9,r3,0 +-.*: 91 49 80 08 stw r10,-32760\(r9\) +-.*: 3d 22 00 00 addis r9,r2,0 +-.*: b1 49 90 2c sth r10,-28628\(r9\) +-.*: a1 42 90 14 lhz r10,-28652\(r2\) +-.*: 3d 22 00 00 addis r9,r2,0 +-.*: a9 49 90 18 lha r10,-28648\(r9\) ++.*: (80 7f ff f0|f0 ff 7f 80) lwz r3,-16\(r31\) ++.*: (7c 63 12 14|14 12 63 7c) add r3,r3,r2 ++.*: (38 7f ff f4|f4 ff 7f 38) addi r3,r31,-12 ++.*: (48 01 01 85|85 01 01 48) bl .*<__tls_get_addr_opt@plt> ++.*: (3c 62 00 00|00 00 62 3c) addis r3,r2,0 ++.*: (38 63 90 1c|1c 90 63 38) addi r3,r3,-28644 ++.*: (3c 62 00 00|00 00 62 3c) addis r3,r2,0 ++.*: (38 63 10 00|00 10 63 38) addi r3,r3,4096 ++.*: (39 23 80 20|20 80 23 39) addi r9,r3,-32736 ++.*: (3d 23 00 00|00 00 23 3d) addis r9,r3,0 ++.*: (81 49 80 24|24 80 49 81) lwz r10,-32732\(r9\) ++.*: (3d 22 00 00|00 00 22 3d) addis r9,r2,0 ++.*: (a1 49 90 2c|2c 90 49 a1) lhz r10,-28628\(r9\) ++.*: (89 42 90 30|30 90 42 89) lbz r10,-28624\(r2\) ++.*: (3d 22 00 00|00 00 22 3d) addis r9,r2,0 ++.*: (99 49 90 34|34 90 49 99) stb r10,-28620\(r9\) ++.*: (3c 62 00 00|00 00 62 3c) addis r3,r2,0 ++.*: (38 63 90 00|00 90 63 38) addi r3,r3,-28672 ++.*: (3c 62 00 00|00 00 62 3c) addis r3,r2,0 ++.*: (38 63 10 00|00 10 63 38) addi r3,r3,4096 ++.*: (91 43 80 04|04 80 43 91) stw r10,-32764\(r3\) ++.*: (3d 23 00 00|00 00 23 3d) addis r9,r3,0 ++.*: (91 49 80 08|08 80 49 91) stw r10,-32760\(r9\) ++.*: (3d 22 00 00|00 00 22 3d) addis r9,r2,0 ++.*: (b1 49 90 2c|2c 90 49 b1) sth r10,-28628\(r9\) ++.*: (a1 42 90 14|14 90 42 a1) lhz r10,-28652\(r2\) ++.*: (3d 22 00 00|00 00 22 3d) addis r9,r2,0 ++.*: (a9 49 90 18|18 90 49 a9) lha r10,-28648\(r9\) + Disassembly of section \.got: + + .* <_GLOBAL_OFFSET_TABLE_-0x10>: + \.\.\. +-.*: 4e 80 00 21 blrl ++.*: (4e 80 00 21|21 00 80 4e) blrl + + .* <_GLOBAL_OFFSET_TABLE_>: +-.*: 01 81 02 b8 00 00 00 00 00 00 00 00 .* ++.*: (01 81 02 b8|b8 02 81 01) 00 00 00 00 00 00 00 00 .* +diff --git a/ld/testsuite/ld-powerpc/tlsexe32.g b/ld/testsuite/ld-powerpc/tlsexe32.g +index c2023a8..917ca4d 100644 +--- a/ld/testsuite/ld-powerpc/tlsexe32.g ++++ b/ld/testsuite/ld-powerpc/tlsexe32.g +@@ -1,11 +1,11 @@ + #source: tls32.s + #as: -a32 +-#ld: -melf32ppc tmpdir/libtlslib32.so ++#ld: tmpdir/libtlslib32.so + #objdump: -sj.got + #target: powerpc*-*-* + +-.*: +file format elf32-powerpc ++.* + + Contents of section \.got: +-.* 00000000 00000000 00000000 4e800021 .* +-.* 018102b8 00000000 00000000 .* ++.* 00000000 00000000 00000000 (4e800021|2100804e) .* ++.* (018102b8|b8028101) 00000000 00000000 .* +diff --git a/ld/testsuite/ld-powerpc/tlsexe32.r b/ld/testsuite/ld-powerpc/tlsexe32.r +index 915832e..dea4a0d 100644 +--- a/ld/testsuite/ld-powerpc/tlsexe32.r ++++ b/ld/testsuite/ld-powerpc/tlsexe32.r +@@ -1,7 +1,7 @@ + #source: tls32.s + #source: tlslib32.s + #as: -a32 +-#ld: -melf32ppc ++#ld: + #readelf: -WSsrl + #target: powerpc*-*-* + +diff --git a/ld/testsuite/ld-powerpc/tlsexe32.t b/ld/testsuite/ld-powerpc/tlsexe32.t +index 2312b33..58fca71 100644 +--- a/ld/testsuite/ld-powerpc/tlsexe32.t ++++ b/ld/testsuite/ld-powerpc/tlsexe32.t +@@ -1,11 +1,11 @@ + #source: tls32.s + #as: -a32 +-#ld: -melf32ppc tmpdir/libtlslib32.so ++#ld: tmpdir/libtlslib32.so + #objdump: -sj.tdata + #target: powerpc*-*-* + +-.*: +file format elf32-powerpc ++.* + + Contents of section \.tdata: +-.* 12345678 23456789 3456789a 456789ab .* +-.* 56789abc 6789abcd 789abcde .* ++.* (12345678|78563412) (23456789|89674523) (3456789a|9a785634) (456789ab|ab896745) .* ++.* (56789abc|bc9a7856) (6789abcd|cdab8967) (789abcde|debc9a78) .* +diff --git a/ld/testsuite/ld-powerpc/tlsexetoc.d b/ld/testsuite/ld-powerpc/tlsexetoc.d +index 2b8ce24..48bde59 100644 +--- a/ld/testsuite/ld-powerpc/tlsexetoc.d ++++ b/ld/testsuite/ld-powerpc/tlsexetoc.d +@@ -1,72 +1,72 @@ + #source: tlstoc.s + #as: -a64 +-#ld: -melf64ppc tmpdir/libtlslib.so ++#ld: tmpdir/libtlslib.so + #objdump: -dr + #target: powerpc64*-*-* + +-.*: +file format elf64-powerpc ++.* + + Disassembly of section \.text: + + .* <00000010\.plt_call\.__tls_get_addr(|_opt)\+0>: +-.* e9 63 00 00 ld r11,0\(r3\) +-.* e9 83 00 08 ld r12,8\(r3\) +-.* 7c 60 1b 78 mr r0,r3 +-.* 2c 2b 00 00 cmpdi r11,0 +-.* 7c 6c 6a 14 add r3,r12,r13 +-.* 4d 82 00 20 beqlr +-.* 7c 03 03 78 mr r3,r0 +-.* 7d 68 02 a6 mflr r11 +-.* f9 61 00 20 std r11,32\(r1\) +-.* f8 41 00 28 std r2,40\(r1\) +-.* e9 62 80 70 ld r11,-32656\(r2\) +-.* 7d 69 03 a6 mtctr r11 +-.* e8 42 80 78 ld r2,-32648\(r2\) +-.* 4e 80 04 21 bctrl +-.* e9 61 00 20 ld r11,32\(r1\) +-.* e8 41 00 28 ld r2,40\(r1\) +-.* 7d 68 03 a6 mtlr r11 +-.* 4e 80 00 20 blr ++.* (e9 63 00 00|00 00 63 e9) ld r11,0\(r3\) ++.* (e9 83 00 08|08 00 83 e9) ld r12,8\(r3\) ++.* (7c 60 1b 78|78 1b 60 7c) mr r0,r3 ++.* (2c 2b 00 00|00 00 2b 2c) cmpdi r11,0 ++.* (7c 6c 6a 14|14 6a 6c 7c) add r3,r12,r13 ++.* (4d 82 00 20|20 00 82 4d) beqlr ++.* (7c 03 03 78|78 03 03 7c) mr r3,r0 ++.* (7d 68 02 a6|a6 02 68 7d) mflr r11 ++.* (f9 61 00 20|20 00 61 f9) std r11,32\(r1\) ++.* (f8 41 00 28|28 00 41 f8) std r2,40\(r1\) ++.* (e9 62 80 70|70 80 62 e9) ld r11,-32656\(r2\) ++.* (7d 69 03 a6|a6 03 69 7d) mtctr r11 ++.* (e8 42 80 78|78 80 42 e8) ld r2,-32648\(r2\) ++.* (4e 80 04 21|21 04 80 4e) bctrl ++.* (e9 61 00 20|20 00 61 e9) ld r11,32\(r1\) ++.* (e8 41 00 28|28 00 41 e8) ld r2,40\(r1\) ++.* (7d 68 03 a6|a6 03 68 7d) mtlr r11 ++.* (4e 80 00 20|20 00 80 4e) blr + + .* <_start>: +-.* 38 62 80 08 addi r3,r2,-32760 +-.* 4b ff ff b5 bl .* +-.* 60 00 00 00 nop +-.* 38 62 80 18 addi r3,r2,-32744 +-.* 4b ff ff a9 bl .* +-.* 60 00 00 00 nop +-.* 3c 6d 00 00 addis r3,r13,0 +-.* 60 00 00 00 nop +-.* 38 63 90 38 addi r3,r3,-28616 +-.* 3c 6d 00 00 addis r3,r13,0 +-.* 60 00 00 00 nop +-.* 38 63 10 00 addi r3,r3,4096 +-.* 39 23 80 40 addi r9,r3,-32704 +-.* 3d 23 00 00 addis r9,r3,0 +-.* 81 49 80 48 lwz r10,-32696\(r9\) +-.* e9 22 80 48 ld r9,-32696\(r2\) +-.* 7d 49 18 2a ldx r10,r9,r3 +-.* 3d 2d 00 00 addis r9,r13,0 +-.* a1 49 90 58 lhz r10,-28584\(r9\) +-.* 89 4d 90 60 lbz r10,-28576\(r13\) +-.* 3d 2d 00 00 addis r9,r13,0 +-.* 99 49 90 68 stb r10,-28568\(r9\) +-.* 00 00 00 00 .* +-.* 00 01 02 28 .* ++.* (38 62 80 08|08 80 62 38) addi r3,r2,-32760 ++.* (4b ff ff b5|b5 ff ff 4b) bl .* ++.* (60 00 00 00|00 00 00 60) nop ++.* (38 62 80 18|18 80 62 38) addi r3,r2,-32744 ++.* (4b ff ff a9|a9 ff ff 4b) bl .* ++.* (60 00 00 00|00 00 00 60) nop ++.* (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.* (60 00 00 00|00 00 00 60) nop ++.* (38 63 90 38|38 90 63 38) addi r3,r3,-28616 ++.* (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.* (60 00 00 00|00 00 00 60) nop ++.* (38 63 10 00|00 10 63 38) addi r3,r3,4096 ++.* (39 23 80 40|40 80 23 39) addi r9,r3,-32704 ++.* (3d 23 00 00|00 00 23 3d) addis r9,r3,0 ++.* (81 49 80 48|48 80 49 81) lwz r10,-32696\(r9\) ++.* (e9 22 80 48|48 80 22 e9) ld r9,-32696\(r2\) ++.* (7d 49 18 2a|2a 18 49 7d) ldx r10,r9,r3 ++.* (3d 2d 00 00|00 00 2d 3d) addis r9,r13,0 ++.* (a1 49 90 58|58 90 49 a1) lhz r10,-28584\(r9\) ++.* (89 4d 90 60|60 90 4d 89) lbz r10,-28576\(r13\) ++.* (3d 2d 00 00|00 00 2d 3d) addis r9,r13,0 ++.* (99 49 90 68|68 90 49 99) stb r10,-28568\(r9\) ++.* (00 00 00 00|28 02 01 00) .* ++.* (00 01 02 28|00 00 00 00) .* + .* <__glink_PLTresolve>: +-.* 7d 88 02 a6 mflr r12 +-.* 42 9f 00 05 bcl- 20,4\*cr7\+so,.* +-.* 7d 68 02 a6 mflr r11 +-.* e8 4b ff f0 ld r2,-16\(r11\) +-.* 7d 88 03 a6 mtlr r12 +-.* 7d 82 5a 14 add r12,r2,r11 +-.* e9 6c 00 00 ld r11,0\(r12\) +-.* e8 4c 00 08 ld r2,8\(r12\) +-.* 7d 69 03 a6 mtctr r11 +-.* e9 6c 00 10 ld r11,16\(r12\) +-.* 4e 80 04 20 bctr +-.* 60 00 00 00 nop +-.* 60 00 00 00 nop +-.* 60 00 00 00 nop +-.* 38 00 00 00 li r0,0 +-.* 4b ff ff c4 b .* ++.* (7d 88 02 a6|a6 02 88 7d) mflr r12 ++.* (42 9f 00 05|05 00 9f 42) bcl 20,4\*cr7\+so,.* ++.* (7d 68 02 a6|a6 02 68 7d) mflr r11 ++.* (e8 4b ff f0|f0 ff 4b e8) ld r2,-16\(r11\) ++.* (7d 88 03 a6|a6 03 88 7d) mtlr r12 ++.* (7d 82 5a 14|14 5a 82 7d) add r12,r2,r11 ++.* (e9 6c 00 00|00 00 6c e9) ld r11,0\(r12\) ++.* (e8 4c 00 08|08 00 4c e8) ld r2,8\(r12\) ++.* (7d 69 03 a6|a6 03 69 7d) mtctr r11 ++.* (e9 6c 00 10|10 00 6c e9) ld r11,16\(r12\) ++.* (4e 80 04 20|20 04 80 4e) bctr ++.* (60 00 00 00|00 00 00 60) nop ++.* (60 00 00 00|00 00 00 60) nop ++.* (60 00 00 00|00 00 00 60) nop ++.* (38 00 00 00|00 00 00 38) li r0,0 ++.* (4b ff ff c4|c4 ff ff 4b) b .* +diff --git a/ld/testsuite/ld-powerpc/tlsexetoc.g b/ld/testsuite/ld-powerpc/tlsexetoc.g +index 556b216..e219f0e 100644 +--- a/ld/testsuite/ld-powerpc/tlsexetoc.g ++++ b/ld/testsuite/ld-powerpc/tlsexetoc.g +@@ -1,15 +1,15 @@ + #source: tlstoc.s + #as: -a64 +-#ld: -melf64ppc tmpdir/libtlslib.so ++#ld: tmpdir/libtlslib.so + #objdump: -sj.got + #target: powerpc64*-*-* + + .*: +file format elf64-powerpc + + Contents of section \.got: +-.* 00000000 100185c0 00000000 00000000 .* ++.* (00000000|c0850110) (100185c0|00000000) 00000000 00000000 .* + .* 00000000 00000000 00000000 00000000 .* +-.* 00000000 00000000 00000000 00000001 .* +-.* 00000000 00000000 00000000 00000001 .* +-.* 00000000 00000000 ffffffff ffff8050 .* ++.* 00000000 00000000 (00000000|01000000) (00000001|00000000) .* ++.* 00000000 00000000 (00000000|01000000) (00000001|00000000) .* ++.* 00000000 00000000 (ffffffff|5080ffff) (ffff8050|ffffffff) .* + .* 00000000 00000000 .* +diff --git a/ld/testsuite/ld-powerpc/tlsexetoc.r b/ld/testsuite/ld-powerpc/tlsexetoc.r +index 63940d3..d404752 100644 +--- a/ld/testsuite/ld-powerpc/tlsexetoc.r ++++ b/ld/testsuite/ld-powerpc/tlsexetoc.r +@@ -1,7 +1,7 @@ + #source: tlslib.s + #source: tlstoc.s + #as: -a64 +-#ld: -melf64ppc ++#ld: + #readelf: -WSsrl + #target: powerpc64*-*-* + +diff --git a/ld/testsuite/ld-powerpc/tlsexetoc.t b/ld/testsuite/ld-powerpc/tlsexetoc.t +index 10bfaa4..6e1fc7d 100644 +--- a/ld/testsuite/ld-powerpc/tlsexetoc.t ++++ b/ld/testsuite/ld-powerpc/tlsexetoc.t +@@ -1,13 +1,13 @@ + #source: tlstoc.s + #as: -a64 +-#ld: -melf64ppc tmpdir/libtlslib.so ++#ld: tmpdir/libtlslib.so + #objdump: -sj.tdata + #target: powerpc64*-*-* + +-.*: +file format elf64-powerpc ++.* + + Contents of section \.tdata: +-.* 12345678 9abcdef0 23456789 abcdef01 .* +-.* 3456789a bcdef012 456789ab cdef0123 .* +-.* 56789abc def01234 6789abcd ef012345 .* +-.* 789abcde f0123456 .* ++.* (12345678|f0debc9a) (9abcdef0|78563412) (23456789|01efcdab) (abcdef01|89674523) .* ++.* (3456789a|12f0debc) (bcdef012|9a785634) (456789ab|2301efcd) (cdef0123|ab896745) .* ++.* (56789abc|3412f0de) (def01234|bc9a7856) (6789abcd|452301ef) (ef012345|cdab8967) .* ++.* (789abcde|563412f0) (f0123456|debc9a78) .* +diff --git a/ld/testsuite/ld-powerpc/tlsmark.d b/ld/testsuite/ld-powerpc/tlsmark.d +index d892f34..786a811 100644 +--- a/ld/testsuite/ld-powerpc/tlsmark.d ++++ b/ld/testsuite/ld-powerpc/tlsmark.d +@@ -1,37 +1,37 @@ + #source: tlsmark.s + #source: tlslib.s + #as: -a64 +-#ld: -melf64ppc ++#ld: + #objdump: -dr + #target: powerpc64*-*-* + +-.*: +file format elf64-powerpc ++.* + + Disassembly of section \.text: + + 0+100000e8 <_start>: +- 100000e8: 48 00 00 18 b 10000100 <_start\+0x18> +- 100000ec: 60 00 00 00 nop +- 100000f0: 38 63 90 00 addi r3,r3,-28672 +- 100000f4: e8 83 00 00 ld r4,0\(r3\) +- 100000f8: 3c 6d 00 00 addis r3,r13,0 +- 100000fc: 48 00 00 0c b 10000108 <_start\+0x20> +- 10000100: 3c 6d 00 00 addis r3,r13,0 +- 10000104: 4b ff ff e8 b 100000ec <_start\+0x4> +- 10000108: 60 00 00 00 nop +- 1000010c: 38 63 10 00 addi r3,r3,4096 +- 10000110: e8 83 80 00 ld r4,-32768\(r3\) +- 10000114: 3c 6d 00 00 addis r3,r13,0 +- 10000118: 48 00 00 0c b 10000124 <_start\+0x3c> +- 1000011c: 3c 6d 00 00 addis r3,r13,0 +- 10000120: 48 00 00 14 b 10000134 <_start\+0x4c> +- 10000124: 60 00 00 00 nop +- 10000128: 38 63 90 04 addi r3,r3,-28668 +- 1000012c: e8 a3 00 00 ld r5,0\(r3\) +- 10000130: 4b ff ff ec b 1000011c <_start\+0x34> +- 10000134: 60 00 00 00 nop +- 10000138: 38 63 10 00 addi r3,r3,4096 +- 1000013c: e8 a3 80 04 ld r5,-32764\(r3\) ++.*: (48 00 00 18|18 00 00 48) b 10000100 <_start\+0x18> ++.*: (60 00 00 00|00 00 00 60) nop ++.*: (38 63 90 00|00 90 63 38) addi r3,r3,-28672 ++.*: (e8 83 00 00|00 00 83 e8) ld r4,0\(r3\) ++.*: (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.*: (48 00 00 0c|0c 00 00 48) b 10000108 <_start\+0x20> ++.*: (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.*: (4b ff ff e8|e8 ff ff 4b) b 100000ec <_start\+0x4> ++.*: (60 00 00 00|00 00 00 60) nop ++.*: (38 63 10 00|00 10 63 38) addi r3,r3,4096 ++.*: (e8 83 80 00|00 80 83 e8) ld r4,-32768\(r3\) ++.*: (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.*: (48 00 00 0c|0c 00 00 48) b 10000124 <_start\+0x3c> ++.*: (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.*: (48 00 00 14|14 00 00 48) b 10000134 <_start\+0x4c> ++.*: (60 00 00 00|00 00 00 60) nop ++.*: (38 63 90 04|04 90 63 38) addi r3,r3,-28668 ++.*: (e8 a3 00 00|00 00 a3 e8) ld r5,0\(r3\) ++.*: (4b ff ff ec|ec ff ff 4b) b 1000011c <_start\+0x34> ++.*: (60 00 00 00|00 00 00 60) nop ++.*: (38 63 10 00|00 10 63 38) addi r3,r3,4096 ++.*: (e8 a3 80 04|04 80 a3 e8) ld r5,-32764\(r3\) + + 0+10000140 <\.__tls_get_addr>: +- 10000140: 4e 80 00 20 blr ++.*: (4e 80 00 20|20 00 80 4e) blr +diff --git a/ld/testsuite/ld-powerpc/tlsmark32.d b/ld/testsuite/ld-powerpc/tlsmark32.d +index 548c1d5..3692755 100644 +--- a/ld/testsuite/ld-powerpc/tlsmark32.d ++++ b/ld/testsuite/ld-powerpc/tlsmark32.d +@@ -1,25 +1,25 @@ + #source: tlsmark32.s + #source: tlslib32.s + #as: -a32 +-#ld: -melf32ppc ++#ld: + #objdump: -dr + #target: powerpc*-*-* + +-.*: file format elf32-powerpc ++.* + + Disassembly of section \.text: + + 0+1800094 <_start>: +- 1800094: 48 00 00 14 b 18000a8 <_start\+0x14> +- 1800098: 38 63 90 00 addi r3,r3,-28672 +- 180009c: 80 83 00 00 lwz r4,0\(r3\) +- 18000a0: 3c 62 00 00 addis r3,r2,0 +- 18000a4: 48 00 00 0c b 18000b0 <_start\+0x1c> +- 18000a8: 3c 62 00 00 addis r3,r2,0 +- 18000ac: 4b ff ff ec b 1800098 <_start\+0x4> +- 18000b0: 38 63 10 00 addi r3,r3,4096 +- 18000b4: 80 83 80 00 lwz r4,-32768\(r3\) ++.*: (48 00 00 14|14 00 00 48) b 18000a8 <_start\+0x14> ++.*: (38 63 90 00|00 90 63 38) addi r3,r3,-28672 ++.*: (80 83 00 00|00 00 83 80) lwz r4,0\(r3\) ++.*: (3c 62 00 00|00 00 62 3c) addis r3,r2,0 ++.*: (48 00 00 0c|0c 00 00 48) b 18000b0 <_start\+0x1c> ++.*: (3c 62 00 00|00 00 62 3c) addis r3,r2,0 ++.*: (4b ff ff ec|ec ff ff 4b) b 1800098 <_start\+0x4> ++.*: (38 63 10 00|00 10 63 38) addi r3,r3,4096 ++.*: (80 83 80 00|00 80 83 80) lwz r4,-32768\(r3\) + + 0+18000b8 <__tls_get_addr>: +- 18000b8: 4e 80 00 20 blr ++.*: (4e 80 00 20|20 00 80 4e) blr + #pass +\ No newline at end of file +diff --git a/ld/testsuite/ld-powerpc/tlsopt1.d b/ld/testsuite/ld-powerpc/tlsopt1.d +index ab1e1f7..df50d77 100644 +--- a/ld/testsuite/ld-powerpc/tlsopt1.d ++++ b/ld/testsuite/ld-powerpc/tlsopt1.d +@@ -1,25 +1,25 @@ + #source: tlsopt1.s + #source: tlslib.s + #as: -a64 +-#ld: -melf64ppc ++#ld: + #objdump: -dr + #target: powerpc64*-*-* + +-.*: +file format elf64-powerpc ++.* + + Disassembly of section \.text: + + 0+100000e8 <\.__tls_get_addr>: +- 100000e8: 4e 80 00 20 blr ++.*: (4e 80 00 20|20 00 80 4e) blr + + Disassembly of section \.no_opt1: + + 0+100000ec <\.no_opt1>: +- 100000ec: 38 62 80 08 addi r3,r2,-32760 +- 100000f0: 2c 24 00 00 cmpdi r4,0 +- 100000f4: 41 82 00 10 beq- .* +- 100000f8: 4b ff ff f1 bl 100000e8 <\.__tls_get_addr> +- 100000fc: 60 00 00 00 nop +- 10000100: 48 00 00 0c b .* +- 10000104: 4b ff ff e5 bl 100000e8 <\.__tls_get_addr> +- 10000108: 60 00 00 00 nop ++.*: (38 62 80 08|08 80 62 38) addi r3,r2,-32760 ++.*: (2c 24 00 00|00 00 24 2c) cmpdi r4,0 ++.*: (41 82 00 10|10 00 82 41) beq .* ++.*: (4b ff ff f1|f1 ff ff 4b) bl 100000e8 <\.__tls_get_addr> ++.*: (60 00 00 00|00 00 00 60) nop ++.*: (48 00 00 0c|0c 00 00 48) b .* ++.*: (4b ff ff e5|e5 ff ff 4b) bl 100000e8 <\.__tls_get_addr> ++.*: (60 00 00 00|00 00 00 60) nop +diff --git a/ld/testsuite/ld-powerpc/tlsopt1_32.d b/ld/testsuite/ld-powerpc/tlsopt1_32.d +index ae77639..ec9c7ca 100644 +--- a/ld/testsuite/ld-powerpc/tlsopt1_32.d ++++ b/ld/testsuite/ld-powerpc/tlsopt1_32.d +@@ -1,24 +1,24 @@ + #source: tlsopt1_32.s + #source: tlslib32.s + #as: -a32 +-#ld: -melf32ppc ++#ld: + #objdump: -dr + #target: powerpc*-*-* + +-.*: +file format elf32-powerpc ++.* + + Disassembly of section \.text: + + 0+1800094 <__tls_get_addr>: +- 1800094: 4e 80 00 20 blr ++.*: (4e 80 00 20|20 00 80 4e) blr + + Disassembly of section \.no_opt1: + + 0+1800098 <\.no_opt1>: +- 1800098: 38 6d ff f4 addi r3,r13,-12 +- 180009c: 2c 04 00 00 cmpwi r4,0 +- 18000a0: 41 82 00 0c beq- .* +- 18000a4: 4b ff ff f1 bl 1800094 <__tls_get_addr> +- 18000a8: 48 00 00 08 b .* +- 18000ac: 4b ff ff e9 bl 1800094 <__tls_get_addr> ++.*: (38 6d ff f4|f4 ff 6d 38) addi r3,r13,-12 ++.*: (2c 04 00 00|00 00 04 2c) cmpwi r4,0 ++.*: (41 82 00 0c|0c 00 82 41) beq .* ++.*: (4b ff ff f1|f1 ff ff 4b) bl 1800094 <__tls_get_addr> ++.*: (48 00 00 08|08 00 00 48) b .* ++.*: (4b ff ff e9|e9 ff ff 4b) bl 1800094 <__tls_get_addr> + #pass +diff --git a/ld/testsuite/ld-powerpc/tlsopt2.d b/ld/testsuite/ld-powerpc/tlsopt2.d +index 097e8a4..73a9b87 100644 +--- a/ld/testsuite/ld-powerpc/tlsopt2.d ++++ b/ld/testsuite/ld-powerpc/tlsopt2.d +@@ -1,23 +1,23 @@ + #source: tlsopt2.s + #source: tlslib.s + #as: -a64 +-#ld: -melf64ppc ++#ld: + #objdump: -dr + #target: powerpc64*-*-* + +-.*: +file format elf64-powerpc ++.* + + Disassembly of section \.text: + + 0+100000e8 <\.__tls_get_addr>: +- 100000e8: 4e 80 00 20 blr ++.*: (4e 80 00 20|20 00 80 4e) blr + + Disassembly of section \.no_opt2: + + 0+100000ec <\.no_opt2>: +- 100000ec: 38 62 80 08 addi r3,r2,-32760 +- 100000f0: 2c 24 00 00 cmpdi r4,0 +- 100000f4: 41 82 00 08 beq- .* +- 100000f8: 38 62 80 08 addi r3,r2,-32760 +- 100000fc: 4b ff ff ed bl 100000e8 <\.__tls_get_addr> +- 10000100: 60 00 00 00 nop ++.*: (38 62 80 08|08 80 62 38) addi r3,r2,-32760 ++.*: (2c 24 00 00|00 00 24 2c) cmpdi r4,0 ++.*: (41 82 00 08|08 00 82 41) beq .* ++.*: (38 62 80 08|08 80 62 38) addi r3,r2,-32760 ++.*: (4b ff ff ed|ed ff ff 4b) bl 100000e8 <\.__tls_get_addr> ++.*: (60 00 00 00|00 00 00 60) nop +diff --git a/ld/testsuite/ld-powerpc/tlsopt2_32.d b/ld/testsuite/ld-powerpc/tlsopt2_32.d +index 5121f74..baffe91 100644 +--- a/ld/testsuite/ld-powerpc/tlsopt2_32.d ++++ b/ld/testsuite/ld-powerpc/tlsopt2_32.d +@@ -1,23 +1,23 @@ + #source: tlsopt2_32.s + #source: tlslib32.s + #as: -a32 +-#ld: -melf32ppc ++#ld: + #objdump: -dr + #target: powerpc*-*-* + +-.*: +file format elf32-powerpc ++.* + + Disassembly of section \.text: + + 0+1800094 <__tls_get_addr>: +- 1800094: 4e 80 00 20 blr ++.*: (4e 80 00 20|20 00 80 4e) blr + + Disassembly of section \.no_opt2: + + 0+1800098 <\.no_opt2>: +- 1800098: 38 6d ff f4 addi r3,r13,-12 +- 180009c: 2c 04 00 00 cmpwi r4,0 +- 18000a0: 41 82 00 08 beq- .* +- 18000a4: 38 6d ff f4 addi r3,r13,-12 +- 18000a8: 4b ff ff ed bl 1800094 <__tls_get_addr> ++.*: (38 6d ff f4|f4 ff 6d 38) addi r3,r13,-12 ++.*: (2c 04 00 00|00 00 04 2c) cmpwi r4,0 ++.*: (41 82 00 08|08 00 82 41) beq .* ++.*: (38 6d ff f4|f4 ff 6d 38) addi r3,r13,-12 ++.*: (4b ff ff ed|ed ff ff 4b) bl 1800094 <__tls_get_addr> + #pass +diff --git a/ld/testsuite/ld-powerpc/tlsopt3.d b/ld/testsuite/ld-powerpc/tlsopt3.d +index dee9b66..334873a 100644 +--- a/ld/testsuite/ld-powerpc/tlsopt3.d ++++ b/ld/testsuite/ld-powerpc/tlsopt3.d +@@ -1,26 +1,26 @@ + #source: tlsopt3.s + #source: tlslib.s + #as: -a64 +-#ld: -melf64ppc ++#ld: + #objdump: -dr + #target: powerpc64*-*-* + +-.*: +file format elf64-powerpc ++.* + + Disassembly of section \.text: + + 00000000100000e8 <\.__tls_get_addr>: +- 100000e8: 4e 80 00 20 blr ++.*: (4e 80 00 20|20 00 80 4e) blr + + Disassembly of section \.no_opt3: + + 00000000100000ec <\.no_opt3>: +- 100000ec: 38 62 80 08 addi r3,r2,-32760 +- 100000f0: 48 00 00 0c b .* +- 100000f4: 38 62 80 18 addi r3,r2,-32744 +- 100000f8: 48 00 00 10 b .* +- 100000fc: 4b ff ff ed bl 100000e8 <\.__tls_get_addr> +- 10000100: 60 00 00 00 nop +- 10000104: 48 00 00 0c b .* +- 10000108: 4b ff ff e1 bl 100000e8 <\.__tls_get_addr> +- 1000010c: 60 00 00 00 nop ++.*: (38 62 80 08|08 80 62 38) addi r3,r2,-32760 ++.*: (48 00 00 0c|0c 00 00 48) b .* ++.*: (38 62 80 18|18 80 62 38) addi r3,r2,-32744 ++.*: (48 00 00 10|10 00 00 48) b .* ++.*: (4b ff ff ed|ed ff ff 4b) bl 100000e8 <\.__tls_get_addr> ++.*: (60 00 00 00|00 00 00 60) nop ++.*: (48 00 00 0c|0c 00 00 48) b .* ++.*: (4b ff ff e1|e1 ff ff 4b) bl 100000e8 <\.__tls_get_addr> ++.*: (60 00 00 00|00 00 00 60) nop +diff --git a/ld/testsuite/ld-powerpc/tlsopt3_32.d b/ld/testsuite/ld-powerpc/tlsopt3_32.d +index eba96d9..55827a2 100644 +--- a/ld/testsuite/ld-powerpc/tlsopt3_32.d ++++ b/ld/testsuite/ld-powerpc/tlsopt3_32.d +@@ -1,25 +1,25 @@ + #source: tlsopt3_32.s + #source: tlslib32.s + #as: -a32 +-#ld: -melf32ppc ++#ld: + #objdump: -dr + #target: powerpc*-*-* + +-.*: +file format elf32-powerpc ++.* + + Disassembly of section \.text: + + 0+1800094 <__tls_get_addr>: +- 1800094: 4e 80 00 20 blr ++.*: (4e 80 00 20|20 00 80 4e) blr + + Disassembly of section \.no_opt3: + + 0+1800098 <\.no_opt3>: +- 1800098: 38 6d ff ec addi r3,r13,-20 +- 180009c: 48 00 00 0c b .* +- 18000a0: 38 6d ff f4 addi r3,r13,-12 +- 18000a4: 48 00 00 0c b .* +- 18000a8: 4b ff ff ed bl 1800094 <__tls_get_addr> +- 18000ac: 48 00 00 08 b .* +- 18000b0: 4b ff ff e5 bl 1800094 <__tls_get_addr> ++.*: (38 6d ff ec|ec ff 6d 38) addi r3,r13,-20 ++.*: (48 00 00 0c|0c 00 00 48) b .* ++.*: (38 6d ff f4|f4 ff 6d 38) addi r3,r13,-12 ++.*: (48 00 00 0c|0c 00 00 48) b .* ++.*: (4b ff ff ed|ed ff ff 4b) bl 1800094 <__tls_get_addr> ++.*: (48 00 00 08|08 00 00 48) b .* ++.*: (4b ff ff e5|e5 ff ff 4b) bl 1800094 <__tls_get_addr> + #pass +diff --git a/ld/testsuite/ld-powerpc/tlsopt4.d b/ld/testsuite/ld-powerpc/tlsopt4.d +index cb81abe..944e97f 100644 +--- a/ld/testsuite/ld-powerpc/tlsopt4.d ++++ b/ld/testsuite/ld-powerpc/tlsopt4.d +@@ -1,48 +1,48 @@ + #source: tlsopt4.s + #source: tlslib.s + #as: -a64 +-#ld: -melf64ppc ++#ld: + #objdump: -dr + #target: powerpc64*-*-* + +-.*: +file format elf64-powerpc ++.* + + Disassembly of section \.text: + + 0+100000e8 <\.__tls_get_addr>: +- 100000e8: 4e 80 00 20 blr ++.*: (4e 80 00 20|20 00 80 4e) blr + + Disassembly of section \.opt1: + + 0+100000ec <\.opt1>: +- 100000ec: 3c 6d 00 00 addis r3,r13,0 +- 100000f0: 2c 24 00 00 cmpdi r4,0 +- 100000f4: 41 82 00 10 beq- .* +- 100000f8: 60 00 00 00 nop +- 100000fc: 38 63 90 10 addi r3,r3,-28656 +- 10000100: 48 00 00 0c b .* +- 10000104: 60 00 00 00 nop +- 10000108: 38 63 90 10 addi r3,r3,-28656 ++.*: (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.*: (2c 24 00 00|00 00 24 2c) cmpdi r4,0 ++.*: (41 82 00 10|10 00 82 41) beq .* ++.*: (60 00 00 00|00 00 00 60) nop ++.*: (38 63 90 10|10 90 63 38) addi r3,r3,-28656 ++.*: (48 00 00 0c|0c 00 00 48) b .* ++.*: (60 00 00 00|00 00 00 60) nop ++.*: (38 63 90 10|10 90 63 38) addi r3,r3,-28656 + + Disassembly of section \.opt2: + + 0+1000010c <\.opt2>: +- 1000010c: 3c 6d 00 00 addis r3,r13,0 +- 10000110: 2c 24 00 00 cmpdi r4,0 +- 10000114: 41 82 00 08 beq- .* +- 10000118: 3c 6d 00 00 addis r3,r13,0 +- 1000011c: 60 00 00 00 nop +- 10000120: 38 63 90 10 addi r3,r3,-28656 ++.*: (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.*: (2c 24 00 00|00 00 24 2c) cmpdi r4,0 ++.*: (41 82 00 08|08 00 82 41) beq .* ++.*: (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.*: (60 00 00 00|00 00 00 60) nop ++.*: (38 63 90 10|10 90 63 38) addi r3,r3,-28656 + + Disassembly of section \.opt3: + + 0+10000124 <\.opt3>: +- 10000124: 3c 6d 00 00 addis r3,r13,0 +- 10000128: 48 00 00 0c b .* +- 1000012c: 3c 6d 00 00 addis r3,r13,0 +- 10000130: 48 00 00 10 b .* +- 10000134: 60 00 00 00 nop +- 10000138: 38 63 90 10 addi r3,r3,-28656 +- 1000013c: 48 00 00 0c b .* +- 10000140: 60 00 00 00 nop +- 10000144: 38 63 90 08 addi r3,r3,-28664 ++.*: (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.*: (48 00 00 0c|0c 00 00 48) b .* ++.*: (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.*: (48 00 00 10|10 00 00 48) b .* ++.*: (60 00 00 00|00 00 00 60) nop ++.*: (38 63 90 10|10 90 63 38) addi r3,r3,-28656 ++.*: (48 00 00 0c|0c 00 00 48) b .* ++.*: (60 00 00 00|00 00 00 60) nop ++.*: (38 63 90 08|08 90 63 38) addi r3,r3,-28664 +diff --git a/ld/testsuite/ld-powerpc/tlsopt4_32.d b/ld/testsuite/ld-powerpc/tlsopt4_32.d +index 4b667f6..59c0a6a 100644 +--- a/ld/testsuite/ld-powerpc/tlsopt4_32.d ++++ b/ld/testsuite/ld-powerpc/tlsopt4_32.d +@@ -1,44 +1,44 @@ + #source: tlsopt4_32.s + #source: tlslib32.s + #as: -a32 +-#ld: -melf32ppc ++#ld: + #objdump: -dr + #target: powerpc*-*-* + +-.*: +file format elf32-powerpc ++.* + + Disassembly of section \.text: + + 0+1800094 <__tls_get_addr>: +- 1800094: 4e 80 00 20 blr ++.*: (4e 80 00 20|20 00 80 4e) blr + + Disassembly of section \.opt1: + + 0+1800098 <\.opt1>: +- 1800098: 3c 62 00 00 addis r3,r2,0 +- 180009c: 2c 04 00 00 cmpwi r4,0 +- 18000a0: 41 82 00 0c beq- .* +- 18000a4: 38 63 90 10 addi r3,r3,-28656 +- 18000a8: 48 00 00 08 b .* +- 18000ac: 38 63 90 10 addi r3,r3,-28656 ++.*: (3c 62 00 00|00 00 62 3c) addis r3,r2,0 ++.*: (2c 04 00 00|00 00 04 2c) cmpwi r4,0 ++.*: (41 82 00 0c|0c 00 82 41) beq .* ++.*: (38 63 90 10|10 90 63 38) addi r3,r3,-28656 ++.*: (48 00 00 08|08 00 00 48) b .* ++.*: (38 63 90 10|10 90 63 38) addi r3,r3,-28656 + + Disassembly of section \.opt2: + + 0+18000b0 <\.opt2>: +- 18000b0: 3c 62 00 00 addis r3,r2,0 +- 18000b4: 2c 04 00 00 cmpwi r4,0 +- 18000b8: 41 82 00 08 beq- .* +- 18000bc: 3c 62 00 00 addis r3,r2,0 +- 18000c0: 38 63 90 10 addi r3,r3,-28656 ++.*: (3c 62 00 00|00 00 62 3c) addis r3,r2,0 ++.*: (2c 04 00 00|00 00 04 2c) cmpwi r4,0 ++.*: (41 82 00 08|08 00 82 41) beq .* ++.*: (3c 62 00 00|00 00 62 3c) addis r3,r2,0 ++.*: (38 63 90 10|10 90 63 38) addi r3,r3,-28656 + + Disassembly of section \.opt3: + + 0+18000c4 <\.opt3>: +- 18000c4: 3c 62 00 00 addis r3,r2,0 +- 18000c8: 48 00 00 0c b .* +- 18000cc: 3c 62 00 00 addis r3,r2,0 +- 18000d0: 48 00 00 0c b .* +- 18000d4: 38 63 90 10 addi r3,r3,-28656 +- 18000d8: 48 00 00 08 b .* +- 18000dc: 38 63 90 08 addi r3,r3,-28664 ++.*: (3c 62 00 00|00 00 62 3c) addis r3,r2,0 ++.*: (48 00 00 0c|0c 00 00 48) b .* ++.*: (3c 62 00 00|00 00 62 3c) addis r3,r2,0 ++.*: (48 00 00 0c|0c 00 00 48) b .* ++.*: (38 63 90 10|10 90 63 38) addi r3,r3,-28656 ++.*: (48 00 00 08|08 00 00 48) b .* ++.*: (38 63 90 08|08 90 63 38) addi r3,r3,-28664 + #pass +diff --git a/ld/testsuite/ld-powerpc/tlsso.d b/ld/testsuite/ld-powerpc/tlsso.d +index a5d28e5..e0bc9a0 100644 +--- a/ld/testsuite/ld-powerpc/tlsso.d ++++ b/ld/testsuite/ld-powerpc/tlsso.d +@@ -1,6 +1,6 @@ + #source: tls.s + #as: -a64 +-#ld: -shared -melf64ppc ++#ld: -shared + #objdump: -dr + #target: powerpc64*-*-* + +@@ -9,68 +9,70 @@ + Disassembly of section \.text: + + .* <00000010\.plt_call\.__tls_get_addr(|_opt)\+0>: +-.* f8 41 00 28 std r2,40\(r1\) +-.* e9 62 80 78 ld r11,-32648\(r2\) +-.* 7d 69 03 a6 mtctr r11 +-.* e8 42 80 80 ld r2,-32640\(r2\) +-.* 4e 80 04 20 bctr ++.* (f8 41 00 28|28 00 41 f8) std r2,40\(r1\) ++.* (e9 62 80 78|78 80 62 e9) ld r11,-32648\(r2\) ++.* (7d 69 03 a6|a6 03 69 7d) mtctr r11 ++.* (e8 42 80 80|80 80 42 e8) ld r2,-32640\(r2\) ++.* (28 22 00 00|00 00 22 28) cmpldi r2,0 ++.* (4c e2 04 20|20 04 e2 4c) bnectr\+ ++.* (48 00 00 ..|.. 00 00 48) b .* <__glink_PLTresolve\+0x38> + + .* <_start>: +-.* 38 62 80 20 addi r3,r2,-32736 +-.* 4b ff ff e9 bl .* +-.* e8 41 00 28 ld r2,40\(r1\) +-.* 38 62 80 50 addi r3,r2,-32688 +-.* 4b ff ff dd bl .* +-.* e8 41 00 28 ld r2,40\(r1\) +-.* 38 62 80 38 addi r3,r2,-32712 +-.* 4b ff ff d1 bl .* +-.* e8 41 00 28 ld r2,40\(r1\) +-.* 38 62 80 50 addi r3,r2,-32688 +-.* 4b ff ff c5 bl .* +-.* e8 41 00 28 ld r2,40\(r1\) +-.* 39 23 80 40 addi r9,r3,-32704 +-.* 3d 23 00 00 addis r9,r3,0 +-.* 81 49 80 48 lwz r10,-32696\(r9\) +-.* e9 22 80 30 ld r9,-32720\(r2\) +-.* 7d 49 18 2a ldx r10,r9,r3 +-.* e9 22 80 48 ld r9,-32696\(r2\) +-.* 7d 49 6a 2e lhzx r10,r9,r13 +-.* 89 4d 00 00 lbz r10,0\(r13\) +-.* 3d 2d 00 00 addis r9,r13,0 +-.* 99 49 00 00 stb r10,0\(r9\) +-.* 38 62 80 08 addi r3,r2,-32760 +-.* 4b ff ff 91 bl .* +-.* e8 41 00 28 ld r2,40\(r1\) +-.* 38 62 80 50 addi r3,r2,-32688 +-.* 4b ff ff 85 bl .* +-.* e8 41 00 28 ld r2,40\(r1\) +-.* f9 43 80 08 std r10,-32760\(r3\) +-.* 3d 23 00 00 addis r9,r3,0 +-.* 91 49 80 10 stw r10,-32752\(r9\) +-.* e9 22 80 18 ld r9,-32744\(r2\) +-.* 7d 49 19 2a stdx r10,r9,r3 +-.* e9 22 80 48 ld r9,-32696\(r2\) +-.* 7d 49 6b 2e sthx r10,r9,r13 +-.* e9 4d 00 02 lwa r10,0\(r13\) +-.* 3d 2d 00 00 addis r9,r13,0 +-.* a9 49 00 00 lha r10,0\(r9\) +-.* 60 00 00 00 nop +-.* 00 00 00 00 .* +-.* 00 01 02 20 .* ++.* (38 62 80 20|20 80 62 38) addi r3,r2,-32736 ++.* (4b ff ff ..|.. ff ff 4b) bl .*plt_call.__tls_get_addr.* ++.* (e8 41 00 28|28 00 41 e8) ld r2,40\(r1\) ++.* (38 62 80 50|50 80 62 38) addi r3,r2,-32688 ++.* (4b ff ff ..|.. ff ff 4b) bl .*plt_call.__tls_get_addr.* ++.* (e8 41 00 28|28 00 41 e8) ld r2,40\(r1\) ++.* (38 62 80 38|38 80 62 38) addi r3,r2,-32712 ++.* (4b ff ff ..|.. ff ff 4b) bl .*plt_call.__tls_get_addr.* ++.* (e8 41 00 28|28 00 41 e8) ld r2,40\(r1\) ++.* (38 62 80 50|50 80 62 38) addi r3,r2,-32688 ++.* (4b ff ff ..|.. ff ff 4b) bl .*plt_call.__tls_get_addr.* ++.* (e8 41 00 28|28 00 41 e8) ld r2,40\(r1\) ++.* (39 23 80 40|40 80 23 39) addi r9,r3,-32704 ++.* (3d 23 00 00|00 00 23 3d) addis r9,r3,0 ++.* (81 49 80 48|48 80 49 81) lwz r10,-32696\(r9\) ++.* (e9 22 80 30|30 80 22 e9) ld r9,-32720\(r2\) ++.* (7d 49 18 2a|2a 18 49 7d) ldx r10,r9,r3 ++.* (e9 22 80 48|48 80 22 e9) ld r9,-32696\(r2\) ++.* (7d 49 6a 2e|2e 6a 49 7d) lhzx r10,r9,r13 ++.* (89 4d 00 00|00 00 4d 89) lbz r10,0\(r13\) ++.* (3d 2d 00 00|00 00 2d 3d) addis r9,r13,0 ++.* (99 49 00 00|00 00 49 99) stb r10,0\(r9\) ++.* (38 62 80 08|08 80 62 38) addi r3,r2,-32760 ++.* (4b ff ff ..|.. ff ff 4b) bl .*plt_call.__tls_get_addr.* ++.* (e8 41 00 28|28 00 41 e8) ld r2,40\(r1\) ++.* (38 62 80 50|50 80 62 38) addi r3,r2,-32688 ++.* (4b ff ff ..|.. ff ff 4b) bl .*plt_call.__tls_get_addr.* ++.* (e8 41 00 28|28 00 41 e8) ld r2,40\(r1\) ++.* (f9 43 80 08|08 80 43 f9) std r10,-32760\(r3\) ++.* (3d 23 00 00|00 00 23 3d) addis r9,r3,0 ++.* (91 49 80 10|10 80 49 91) stw r10,-32752\(r9\) ++.* (e9 22 80 18|18 80 22 e9) ld r9,-32744\(r2\) ++.* (7d 49 19 2a|2a 19 49 7d) stdx r10,r9,r3 ++.* (e9 22 80 48|48 80 22 e9) ld r9,-32696\(r2\) ++.* (7d 49 6b 2e|2e 6b 49 7d) sthx r10,r9,r13 ++.* (e9 4d 00 02|02 00 4d e9) lwa r10,0\(r13\) ++.* (3d 2d 00 00|00 00 2d 3d) addis r9,r13,0 ++.* (a9 49 00 00|00 00 49 a9) lha r10,0\(r9\) ++.* (60 00 00 00|00 00 00 60) nop ++.* (00 00 00 00|20 02 01 00) .* ++.* (00 01 02 20|00 00 00 00) .* + .* <__glink_PLTresolve>: +-.* 7d 88 02 a6 mflr r12 +-.* 42 9f 00 05 bcl- 20,4\*cr7\+so,.* +-.* 7d 68 02 a6 mflr r11 +-.* e8 4b ff f0 ld r2,-16\(r11\) +-.* 7d 88 03 a6 mtlr r12 +-.* 7d 82 5a 14 add r12,r2,r11 +-.* e9 6c 00 00 ld r11,0\(r12\) +-.* e8 4c 00 08 ld r2,8\(r12\) +-.* 7d 69 03 a6 mtctr r11 +-.* e9 6c 00 10 ld r11,16\(r12\) +-.* 4e 80 04 20 bctr +-.* 60 00 00 00 nop +-.* 60 00 00 00 nop +-.* 60 00 00 00 nop +-.* 38 00 00 00 li r0,0 +-.* 4b ff ff c4 b .* ++.* (7d 88 02 a6|a6 02 88 7d) mflr r12 ++.* (42 9f 00 05|05 00 9f 42) bcl 20,4\*cr7\+so,.* ++.* (7d 68 02 a6|a6 02 68 7d) mflr r11 ++.* (e8 4b ff f0|f0 ff 4b e8) ld r2,-16\(r11\) ++.* (7d 88 03 a6|a6 03 88 7d) mtlr r12 ++.* (7d 82 5a 14|14 5a 82 7d) add r12,r2,r11 ++.* (e9 6c 00 00|00 00 6c e9) ld r11,0\(r12\) ++.* (e8 4c 00 08|08 00 4c e8) ld r2,8\(r12\) ++.* (7d 69 03 a6|a6 03 69 7d) mtctr r11 ++.* (e9 6c 00 10|10 00 6c e9) ld r11,16\(r12\) ++.* (4e 80 04 20|20 04 80 4e) bctr ++.* (60 00 00 00|00 00 00 60) nop ++.* (60 00 00 00|00 00 00 60) nop ++.* (60 00 00 00|00 00 00 60) nop ++.* (38 00 00 00|00 00 00 38) li r0,0 ++.* (4b ff ff c4|c4 ff ff 4b) b .* +diff --git a/ld/testsuite/ld-powerpc/tlsso.g b/ld/testsuite/ld-powerpc/tlsso.g +index 82ccc8d..8536803 100644 +--- a/ld/testsuite/ld-powerpc/tlsso.g ++++ b/ld/testsuite/ld-powerpc/tlsso.g +@@ -1,13 +1,13 @@ + #source: tls.s + #as: -a64 +-#ld: -shared -melf64ppc ++#ld: -shared + #objdump: -sj.got + #target: powerpc64*-*-* + + .*: +file format elf64-powerpc + + Contents of section \.got: +-.* 00000000 00018780 00000000 00000000 .* ++ 10788 (00000000|88870100) (00018788|00000000) 00000000 00000000 .* + .* 00000000 00000000 00000000 00000000 .* + .* 00000000 00000000 00000000 00000000 .* + .* 00000000 00000000 00000000 00000000 .* +diff --git a/ld/testsuite/ld-powerpc/tlsso.r b/ld/testsuite/ld-powerpc/tlsso.r +index 0fc6b37..2475fb4 100644 +--- a/ld/testsuite/ld-powerpc/tlsso.r ++++ b/ld/testsuite/ld-powerpc/tlsso.r +@@ -1,6 +1,6 @@ + #source: tls.s + #as: -a64 +-#ld: -shared -melf64ppc ++#ld: -shared + #readelf: -WSsrl + #target: powerpc64*-*-* + +@@ -48,9 +48,9 @@ Relocation section '\.rela\.dyn' at offset .* contains 16 entries: + [0-9a-f ]+R_PPC64_TPREL16 +0+60 le0 \+ 0 + [0-9a-f ]+R_PPC64_TPREL16_HA +0+68 le1 \+ 0 + [0-9a-f ]+R_PPC64_TPREL16_LO +0+68 le1 \+ 0 +-[0-9a-f ]+R_PPC64_TPREL16_DS +0+105f8 \.tdata \+ 28 +-[0-9a-f ]+R_PPC64_TPREL16_HA +0+105f8 \.tdata \+ 30 +-[0-9a-f ]+R_PPC64_TPREL16_LO +0+105f8 \.tdata \+ 30 ++[0-9a-f ]+R_PPC64_TPREL16_DS +[0-9a-f]+ \.tdata \+ 28 ++[0-9a-f ]+R_PPC64_TPREL16_HA +[0-9a-f]+ \.tdata \+ 30 ++[0-9a-f ]+R_PPC64_TPREL16_LO +[0-9a-f]+ \.tdata \+ 30 + [0-9a-f ]+R_PPC64_DTPMOD64 +0 + [0-9a-f ]+R_PPC64_DTPREL64 +0 + [0-9a-f ]+R_PPC64_DTPREL64 +18 +diff --git a/ld/testsuite/ld-powerpc/tlsso.t b/ld/testsuite/ld-powerpc/tlsso.t +index 63f92f6..f679542 100644 +--- a/ld/testsuite/ld-powerpc/tlsso.t ++++ b/ld/testsuite/ld-powerpc/tlsso.t +@@ -1,13 +1,13 @@ + #source: tls.s + #as: -a64 +-#ld: -shared -melf64ppc ++#ld: -shared + #objdump: -sj.tdata + #target: powerpc64*-*-* + +-.*: +file format elf64-powerpc ++.* + + Contents of section \.tdata: +-.* 12345678 9abcdef0 23456789 abcdef01 .* +-.* 3456789a bcdef012 456789ab cdef0123 .* +-.* 56789abc def01234 6789abcd ef012345 .* +-.* 789abcde f0123456 .* ++.* (12345678|f0debc9a) (9abcdef0|78563412) (23456789|01efcdab) (abcdef01|89674523) .* ++.* (3456789a|12f0debc) (bcdef012|9a785634) (456789ab|2301efcd) (cdef0123|ab896745) .* ++.* (56789abc|3412f0de) (def01234|bc9a7856) (6789abcd|452301ef) (ef012345|cdab8967) .* ++.* (789abcde|563412f0) (f0123456|debc9a78) .* +diff --git a/ld/testsuite/ld-powerpc/tlsso32.d b/ld/testsuite/ld-powerpc/tlsso32.d +index 8d4ac4e..39c9970 100644 +--- a/ld/testsuite/ld-powerpc/tlsso32.d ++++ b/ld/testsuite/ld-powerpc/tlsso32.d +@@ -1,47 +1,47 @@ + #source: tls32.s + #as: -a32 +-#ld: -shared -melf32ppc ++#ld: -shared + #objdump: -dr + #target: powerpc*-*-* + +-.*: +file format elf32-powerpc ++.* + + Disassembly of section \.text: + + .* <_start>: +-.*: 38 7f ff e0 addi r3,r31,-32 +-.*: 48 00 00 01 bl .* +-.*: 38 7f ff f4 addi r3,r31,-12 +-.*: 48 00 00 01 bl .* +-.*: 38 7f ff e8 addi r3,r31,-24 +-.*: 48 01 01 95 bl .*<__tls_get_addr@plt> +-.*: 38 7f ff f4 addi r3,r31,-12 +-.*: 48 01 01 8d bl .*<__tls_get_addr@plt> +-.*: 39 23 80 20 addi r9,r3,-32736 +-.*: 3d 23 00 00 addis r9,r3,0 +-.*: 81 49 80 24 lwz r10,-32732\(r9\) +-.*: 81 3f ff f0 lwz r9,-16\(r31\) +-.*: 7d 49 12 2e lhzx r10,r9,r2 +-.*: 89 42 00 00 lbz r10,0\(r2\) +-.*: 3d 22 00 00 addis r9,r2,0 +-.*: 99 49 00 00 stb r10,0\(r9\) +-.*: 38 7e ff d8 addi r3,r30,-40 +-.*: 48 00 00 01 bl .* +-.*: 38 7e ff f4 addi r3,r30,-12 +-.*: 48 00 00 01 bl .* +-.*: 91 43 80 04 stw r10,-32764\(r3\) +-.*: 3d 23 00 00 addis r9,r3,0 +-.*: 91 49 80 08 stw r10,-32760\(r9\) +-.*: 81 3e ff f0 lwz r9,-16\(r30\) +-.*: 7d 49 13 2e sthx r10,r9,r2 +-.*: a1 42 00 00 lhz r10,0\(r2\) +-.*: 3d 22 00 00 addis r9,r2,0 +-.*: a9 49 00 00 lha r10,0\(r9\) ++.*: (38 7f ff e0|e0 ff 7f 38) addi r3,r31,-32 ++.*: (48 00 00 01|01 00 00 48) bl .* ++.*: (38 7f ff f4|f4 ff 7f 38) addi r3,r31,-12 ++.*: (48 00 00 01|01 00 00 48) bl .* ++.*: (38 7f ff e8|e8 ff 7f 38) addi r3,r31,-24 ++.*: (48 01 01 95|95 01 01 48) bl .*<__tls_get_addr@plt> ++.*: (38 7f ff f4|f4 ff 7f 38) addi r3,r31,-12 ++.*: (48 01 01 8d|8d 01 01 48) bl .*<__tls_get_addr@plt> ++.*: (39 23 80 20|20 80 23 39) addi r9,r3,-32736 ++.*: (3d 23 00 00|00 00 23 3d) addis r9,r3,0 ++.*: (81 49 80 24|24 80 49 81) lwz r10,-32732\(r9\) ++.*: (81 3f ff f0|f0 ff 3f 81) lwz r9,-16\(r31\) ++.*: (7d 49 12 2e|2e 12 49 7d) lhzx r10,r9,r2 ++.*: (89 42 00 00|00 00 42 89) lbz r10,0\(r2\) ++.*: (3d 22 00 00|00 00 22 3d) addis r9,r2,0 ++.*: (99 49 00 00|00 00 49 99) stb r10,0\(r9\) ++.*: (38 7e ff d8|d8 ff 7e 38) addi r3,r30,-40 ++.*: (48 00 00 01|01 00 00 48) bl .* ++.*: (38 7e ff f4|f4 ff 7e 38) addi r3,r30,-12 ++.*: (48 00 00 01|01 00 00 48) bl .* ++.*: (91 43 80 04|04 80 43 91) stw r10,-32764\(r3\) ++.*: (3d 23 00 00|00 00 23 3d) addis r9,r3,0 ++.*: (91 49 80 08|08 80 49 91) stw r10,-32760\(r9\) ++.*: (81 3e ff f0|f0 ff 3e 81) lwz r9,-16\(r30\) ++.*: (7d 49 13 2e|2e 13 49 7d) sthx r10,r9,r2 ++.*: (a1 42 00 00|00 00 42 a1) lhz r10,0\(r2\) ++.*: (3d 22 00 00|00 00 22 3d) addis r9,r2,0 ++.*: (a9 49 00 00|00 00 49 a9) lha r10,0\(r9\) + Disassembly of section \.got: + + .* <_GLOBAL_OFFSET_TABLE_-0x28>: + #... +-.*: 4e 80 00 21 blrl ++.*: (4e 80 00 21|21 00 80 4e) blrl + .* <_GLOBAL_OFFSET_TABLE_>: +-.*: 00 01 03 ec .* ++.*: (00 01 03 ec|ec 03 01 00) .* + #pass +diff --git a/ld/testsuite/ld-powerpc/tlsso32.g b/ld/testsuite/ld-powerpc/tlsso32.g +index 028e869..ac2c4bb 100644 +--- a/ld/testsuite/ld-powerpc/tlsso32.g ++++ b/ld/testsuite/ld-powerpc/tlsso32.g +@@ -1,13 +1,13 @@ + #source: tls32.s + #as: -a32 +-#ld: -shared -melf32ppc ++#ld: -shared + #objdump: -sj.got + #target: powerpc*-*-* + +-.*: +file format elf32-powerpc ++.* + + Contents of section \.got: + .* 00000000 00000000 00000000 00000000 .* + .* 00000000 00000000 00000000 00000000 .* +-.* 00000000 4e800021 000103ec 00000000 .* ++.* 00000000 (4e800021|2100804e) (000103ec|ec030100) 00000000 .* + .* 00000000 .* +diff --git a/ld/testsuite/ld-powerpc/tlsso32.r b/ld/testsuite/ld-powerpc/tlsso32.r +index d38bb98..9563b0b 100644 +--- a/ld/testsuite/ld-powerpc/tlsso32.r ++++ b/ld/testsuite/ld-powerpc/tlsso32.r +@@ -1,6 +1,6 @@ + #source: tls32.s + #as: -a32 +-#ld: -shared -melf32ppc ++#ld: -shared + #readelf: -WSsrl + #target: powerpc*-*-* + +diff --git a/ld/testsuite/ld-powerpc/tlsso32.t b/ld/testsuite/ld-powerpc/tlsso32.t +index 4190a9a..40edbba 100644 +--- a/ld/testsuite/ld-powerpc/tlsso32.t ++++ b/ld/testsuite/ld-powerpc/tlsso32.t +@@ -1,11 +1,11 @@ + #source: tls32.s + #as: -a32 +-#ld: -shared -melf32ppc ++#ld: -shared + #objdump: -sj.tdata + #target: powerpc*-*-* + +-.*: +file format elf32-powerpc ++.* + + Contents of section \.tdata: +-.* 12345678 23456789 3456789a 456789ab .* +-.* 56789abc 6789abcd 789abcde .* ++.* (12345678|78563412) (23456789|89674523) (3456789a|9a785634) (456789ab|ab896745) .* ++.* (56789abc|bc9a7856) (6789abcd|cdab8967) (789abcde|debc9a78) .* +diff --git a/ld/testsuite/ld-powerpc/tlstoc.d b/ld/testsuite/ld-powerpc/tlstoc.d +index cfa8aba..faea1c4 100644 +--- a/ld/testsuite/ld-powerpc/tlstoc.d ++++ b/ld/testsuite/ld-powerpc/tlstoc.d +@@ -1,37 +1,37 @@ + #source: tlslib.s + #source: tlstoc.s + #as: -a64 +-#ld: -melf64ppc ++#ld: + #objdump: -dr + #target: powerpc64*-*-* + +-.*: +file format elf64-powerpc ++.* + + Disassembly of section \.text: + + .* <\.__tls_get_addr>: +-.* 4e 80 00 20 blr ++.* (4e 80 00 20|20 00 80 4e) blr + + .* <_start>: +-.* 3c 6d 00 00 addis r3,r13,0 +-.* 60 00 00 00 nop +-.* 38 63 90 40 addi r3,r3,-28608 +-.* 3c 6d 00 00 addis r3,r13,0 +-.* 60 00 00 00 nop +-.* 38 63 10 00 addi r3,r3,4096 +-.* 3c 6d 00 00 addis r3,r13,0 +-.* 60 00 00 00 nop +-.* 38 63 90 48 addi r3,r3,-28600 +-.* 3c 6d 00 00 addis r3,r13,0 +-.* 60 00 00 00 nop +-.* 38 63 10 00 addi r3,r3,4096 +-.* 39 23 80 50 addi r9,r3,-32688 +-.* 3d 23 00 00 addis r9,r3,0 +-.* 81 49 80 58 lwz r10,-32680\(r9\) +-.* e9 22 80 40 ld r9,-32704\(r2\) +-.* 7d 49 18 2a ldx r10,r9,r3 +-.* 3d 2d 00 00 addis r9,r13,0 +-.* a1 49 90 68 lhz r10,-28568\(r9\) +-.* 89 4d 90 70 lbz r10,-28560\(r13\) +-.* 3d 2d 00 00 addis r9,r13,0 +-.* 99 49 90 78 stb r10,-28552\(r9\) ++.* (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.* (60 00 00 00|00 00 00 60) nop ++.* (38 63 90 40|40 90 63 38) addi r3,r3,-28608 ++.* (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.* (60 00 00 00|00 00 00 60) nop ++.* (38 63 10 00|00 10 63 38) addi r3,r3,4096 ++.* (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.* (60 00 00 00|00 00 00 60) nop ++.* (38 63 90 48|48 90 63 38) addi r3,r3,-28600 ++.* (3c 6d 00 00|00 00 6d 3c) addis r3,r13,0 ++.* (60 00 00 00|00 00 00 60) nop ++.* (38 63 10 00|00 10 63 38) addi r3,r3,4096 ++.* (39 23 80 50|50 80 23 39) addi r9,r3,-32688 ++.* (3d 23 00 00|00 00 23 3d) addis r9,r3,0 ++.* (81 49 80 58|58 80 49 81) lwz r10,-32680\(r9\) ++.* (e9 22 80 40|40 80 22 e9) ld r9,-32704\(r2\) ++.* (7d 49 18 2a|2a 18 49 7d) ldx r10,r9,r3 ++.* (3d 2d 00 00|00 00 2d 3d) addis r9,r13,0 ++.* (a1 49 90 68|68 90 49 a1) lhz r10,-28568\(r9\) ++.* (89 4d 90 70|70 90 4d 89) lbz r10,-28560\(r13\) ++.* (3d 2d 00 00|00 00 2d 3d) addis r9,r13,0 ++.* (99 49 90 78|78 90 49 99) stb r10,-28552\(r9\) +diff --git a/ld/testsuite/ld-powerpc/tlstoc.g b/ld/testsuite/ld-powerpc/tlstoc.g +index 9ae4100..9ca4302 100644 +--- a/ld/testsuite/ld-powerpc/tlstoc.g ++++ b/ld/testsuite/ld-powerpc/tlstoc.g +@@ -1,15 +1,15 @@ + #source: tlslib.s + #source: tlstoc.s + #as: -a64 +-#ld: -melf64ppc ++#ld: + #objdump: -sj.got + #target: powerpc64*-*-* + +-.*: +file format elf64-powerpc ++.* + + Contents of section \.got: +- 100101a0 00000000 00000001 00000000 00000000 .* +- 100101b0 00000000 00000001 00000000 00000000 .* +- 100101c0 00000000 00000001 00000000 00000000 .* +- 100101d0 00000000 00000001 00000000 00000000 .* +- 100101e0 ffffffff ffff8060 00000000 00000000 .* ++ 100101a0 (00000000|01000000) (00000001|00000000) 00000000 00000000 .* ++ 100101b0 (00000000|01000000) (00000001|00000000) 00000000 00000000 .* ++ 100101c0 (00000000|01000000) (00000001|00000000) 00000000 00000000 .* ++ 100101d0 (00000000|01000000) (00000001|00000000) 00000000 00000000 .* ++ 100101e0 (ffffffff|6080ffff) (ffff8060|ffffffff) 00000000 00000000 .* +diff --git a/ld/testsuite/ld-powerpc/tlstoc.t b/ld/testsuite/ld-powerpc/tlstoc.t +index 5a8129a..8d25622 100644 +--- a/ld/testsuite/ld-powerpc/tlstoc.t ++++ b/ld/testsuite/ld-powerpc/tlstoc.t +@@ -1,14 +1,14 @@ + #source: tlslib.s + #source: tlstoc.s + #as: -a64 +-#ld: -melf64ppc ++#ld: + #objdump: -sj.tdata + #target: powerpc64*-*-* + +-.*: +file format elf64-powerpc ++.* + + Contents of section \.tdata: +- 10010148 00c0ffee 00000000 12345678 9abcdef0 .* +- 10010158 23456789 abcdef01 3456789a bcdef012 .* +- 10010168 456789ab cdef0123 56789abc def01234 .* +- 10010178 6789abcd ef012345 789abcde f0123456 .* ++ 10010148 (00c0ffee|eeffc000) 00000000 (12345678|78563412) (9abcdef0|f0debc9a) .* ++ 10010158 (23456789|89674523) (abcdef01|01efcdab) (3456789a|9a785634) (bcdef012|12f0debc) .* ++ 10010168 (456789ab|ab896745) (cdef0123|2301efcd) (56789abc|bc9a7856) (def01234|3412f0de) .* ++ 10010178 (6789abcd|cdab8967) (ef012345|452301ef) (789abcde|debc9a78) (f0123456|563412f0) .* +diff --git a/ld/testsuite/ld-powerpc/tlstocso.d b/ld/testsuite/ld-powerpc/tlstocso.d +index cf9cd08..c91c30b 100644 +--- a/ld/testsuite/ld-powerpc/tlstocso.d ++++ b/ld/testsuite/ld-powerpc/tlstocso.d +@@ -1,6 +1,6 @@ + #source: tlstoc.s + #as: -a64 +-#ld: -shared -melf64ppc ++#ld: -shared + #objdump: -dr + #target: powerpc64*-*-* + +@@ -9,52 +9,54 @@ + Disassembly of section \.text: + + .* <00000010\.plt_call\.__tls_get_addr(|_opt)\+0>: +-.* f8 41 00 28 std r2,40\(r1\) +-.* e9 62 80 70 ld r11,-32656\(r2\) +-.* 7d 69 03 a6 mtctr r11 +-.* e8 42 80 78 ld r2,-32648\(r2\) +-.* 4e 80 04 20 bctr ++.* (f8 41 00 28|28 00 41 f8) std r2,40\(r1\) ++.* (e9 62 80 70|70 80 62 e9) ld r11,-32656\(r2\) ++.* (7d 69 03 a6|a6 03 69 7d) mtctr r11 ++.* (e8 42 80 78|78 80 42 e8) ld r2,-32648\(r2\) ++.* (28 22 00 00|00 00 22 28) cmpldi r2,0 ++.* (4c e2 04 20|20 04 e2 4c) bnectr\+ ++.* (48 00 00 ..|.. 00 00 48) b .* <__glink_PLTresolve\+0x38> + + .* <_start>: +-.* 38 62 80 08 addi r3,r2,-32760 +-.* 4b ff ff e9 bl .* +-.* e8 41 00 28 ld r2,40\(r1\) +-.* 38 62 80 18 addi r3,r2,-32744 +-.* 4b ff ff dd bl .* +-.* e8 41 00 28 ld r2,40\(r1\) +-.* 38 62 80 28 addi r3,r2,-32728 +-.* 4b ff ff d1 bl .* +-.* e8 41 00 28 ld r2,40\(r1\) +-.* 38 62 80 38 addi r3,r2,-32712 +-.* 4b ff ff c5 bl .* +-.* e8 41 00 28 ld r2,40\(r1\) +-.* 39 23 80 40 addi r9,r3,-32704 +-.* 3d 23 00 00 addis r9,r3,0 +-.* 81 49 80 48 lwz r10,-32696\(r9\) +-.* e9 22 80 48 ld r9,-32696\(r2\) +-.* 7d 49 18 2a ldx r10,r9,r3 +-.* e9 22 80 50 ld r9,-32688\(r2\) +-.* 7d 49 6a 2e lhzx r10,r9,r13 +-.* 89 4d 00 00 lbz r10,0\(r13\) +-.* 3d 2d 00 00 addis r9,r13,0 +-.* 99 49 00 00 stb r10,0\(r9\) +-.* 60 00 00 00 nop +-.* 00 00 00 00 .* +-.* 00 01 02 18 .* ++.* (38 62 80 08|08 80 62 38) addi r3,r2,-32760 ++.* (4b ff ff ..|.. ff ff 4b) bl .*plt_call.__tls_get_addr.* ++.* (e8 41 00 28|28 00 41 e8) ld r2,40\(r1\) ++.* (38 62 80 18|18 80 62 38) addi r3,r2,-32744 ++.* (4b ff ff ..|.. ff ff 4b) bl .*plt_call.__tls_get_addr.* ++.* (e8 41 00 28|28 00 41 e8) ld r2,40\(r1\) ++.* (38 62 80 28|28 80 62 38) addi r3,r2,-32728 ++.* (4b ff ff ..|.. ff ff 4b) bl .*plt_call.__tls_get_addr.* ++.* (e8 41 00 28|28 00 41 e8) ld r2,40\(r1\) ++.* (38 62 80 38|38 80 62 38) addi r3,r2,-32712 ++.* (4b ff ff ..|.. ff ff 4b) bl .*plt_call.__tls_get_addr.* ++.* (e8 41 00 28|28 00 41 e8) ld r2,40\(r1\) ++.* (39 23 80 40|40 80 23 39) addi r9,r3,-32704 ++.* (3d 23 00 00|00 00 23 3d) addis r9,r3,0 ++.* (81 49 80 48|48 80 49 81) lwz r10,-32696\(r9\) ++.* (e9 22 80 48|48 80 22 e9) ld r9,-32696\(r2\) ++.* (7d 49 18 2a|2a 18 49 7d) ldx r10,r9,r3 ++.* (e9 22 80 50|50 80 22 e9) ld r9,-32688\(r2\) ++.* (7d 49 6a 2e|2e 6a 49 7d) lhzx r10,r9,r13 ++.* (89 4d 00 00|00 00 4d 89) lbz r10,0\(r13\) ++.* (3d 2d 00 00|00 00 2d 3d) addis r9,r13,0 ++.* (99 49 00 00|00 00 49 99) stb r10,0\(r9\) ++.* (60 00 00 00|00 00 00 60) nop ++.* (00 00 00 00|18 02 01 00) .* ++.* (00 01 02 18|00 00 00 00) .* + .* <__glink_PLTresolve>: +-.* 7d 88 02 a6 mflr r12 +-.* 42 9f 00 05 bcl- 20,4\*cr7\+so,.* +-.* 7d 68 02 a6 mflr r11 +-.* e8 4b ff f0 ld r2,-16\(r11\) +-.* 7d 88 03 a6 mtlr r12 +-.* 7d 82 5a 14 add r12,r2,r11 +-.* e9 6c 00 00 ld r11,0\(r12\) +-.* e8 4c 00 08 ld r2,8\(r12\) +-.* 7d 69 03 a6 mtctr r11 +-.* e9 6c 00 10 ld r11,16\(r12\) +-.* 4e 80 04 20 bctr +-.* 60 00 00 00 nop +-.* 60 00 00 00 nop +-.* 60 00 00 00 nop +-.* 38 00 00 00 li r0,0 +-.* 4b ff ff c4 b .* ++.* (7d 88 02 a6|a6 02 88 7d) mflr r12 ++.* (42 9f 00 05|05 00 9f 42) bcl 20,4\*cr7\+so,.* ++.* (7d 68 02 a6|a6 02 68 7d) mflr r11 ++.* (e8 4b ff f0|f0 ff 4b e8) ld r2,-16\(r11\) ++.* (7d 88 03 a6|a6 03 88 7d) mtlr r12 ++.* (7d 82 5a 14|14 5a 82 7d) add r12,r2,r11 ++.* (e9 6c 00 00|00 00 6c e9) ld r11,0\(r12\) ++.* (e8 4c 00 08|08 00 4c e8) ld r2,8\(r12\) ++.* (7d 69 03 a6|a6 03 69 7d) mtctr r11 ++.* (e9 6c 00 10|10 00 6c e9) ld r11,16\(r12\) ++.* (4e 80 04 20|20 04 80 4e) bctr ++.* (60 00 00 00|00 00 00 60) nop ++.* (60 00 00 00|00 00 00 60) nop ++.* (60 00 00 00|00 00 00 60) nop ++.* (38 00 00 00|00 00 00 38) li r0,0 ++.* (4b ff ff c4|c4 ff ff 4b) b .* +diff --git a/ld/testsuite/ld-powerpc/tlstocso.g b/ld/testsuite/ld-powerpc/tlstocso.g +index d670a21..a22497d 100644 +--- a/ld/testsuite/ld-powerpc/tlstocso.g ++++ b/ld/testsuite/ld-powerpc/tlstocso.g +@@ -1,13 +1,13 @@ + #source: tlstoc.s + #as: -a64 +-#ld: -shared -melf64ppc ++#ld: -shared + #objdump: -sj.got + #target: powerpc64*-*-* + +-.*: +file format elf64-powerpc ++.* + + Contents of section \.got: +-.* 00000000 000186c0 00000000 00000000 .* ++ 106c8 00000000 (000186c8|c8860100) 00000000 00000000 .* + .* 00000000 00000000 00000000 00000000 .* + .* 00000000 00000000 00000000 00000000 .* + .* 00000000 00000000 00000000 00000000 .* +diff --git a/ld/testsuite/ld-powerpc/tlstocso.t b/ld/testsuite/ld-powerpc/tlstocso.t +index fe9def4..ce4f44a 100644 +--- a/ld/testsuite/ld-powerpc/tlstocso.t ++++ b/ld/testsuite/ld-powerpc/tlstocso.t +@@ -1,13 +1,13 @@ + #source: tlstoc.s + #as: -a64 +-#ld: -shared -melf64ppc ++#ld: -shared + #objdump: -sj.tdata + #target: powerpc64*-*-* + +-.*: +file format elf64-powerpc ++.* + + Contents of section \.tdata: +-.* 12345678 9abcdef0 23456789 abcdef01 .* +-.* 3456789a bcdef012 456789ab cdef0123 .* +-.* 56789abc def01234 6789abcd ef012345 .* +-.* 789abcde f0123456 .* ++.* (12345678|78563412) (9abcdef0|f0debc9a) (23456789|89674523) (abcdef01|01efcdab) .* ++.* (3456789a|9a785634) (bcdef012|12f0debc) (456789ab|ab896745) (cdef0123|2301efcd) .* ++.* (56789abc|bc9a7856) (def01234|3412f0de) (6789abcd|cdab8967) (ef012345|452301ef) .* ++.* (789abcde|debc9a78) (f0123456|563412f0) .* +diff --git a/ld/testsuite/ld-powerpc/tocopt.out b/ld/testsuite/ld-powerpc/tocopt.out +index 6df909f..b551e86 100644 +--- a/ld/testsuite/ld-powerpc/tocopt.out ++++ b/ld/testsuite/ld-powerpc/tocopt.out +@@ -1,4 +1,4 @@ + .* +-\(\.text\+0x14\): .* 0x3fa00000 .* ++\(\.text\+0x14\): .* + .* +-\(\.text\+0x34\): .* 0x3fa00010 .* ++\(\.text\+0x34\): .* +diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp +index bb4cb0d..3cb8ee1 100644 +--- a/ld/testsuite/lib/ld-lib.exp ++++ b/ld/testsuite/lib/ld-lib.exp +@@ -757,6 +757,12 @@ proc run_dump_test { name {extra_options {}} } { + set dfile $srcdir/$subdir/$opts(dump) + } + ++ if { [string match "*--compress-debug-sections*" $opts(as)] \ ++ && ![is_zlib_supported] } { ++ unsupported $testname ++ return ++ } ++ + # Time to setup xfailures. + foreach targ $opts(xfail) { + setup_xfail $targ +@@ -1244,7 +1250,6 @@ proc run_ld_link_exec_tests { targets_to_xfail ldtests } { + # verbose -log "ld_options is $ld_options" + # verbose -log "as_options is $as_options" + # verbose -log "src_files is $src_files" +-# verbose -log "actions is $actions" + # verbose -log "binfile is $binfile" + + # Assemble each file in the test. +@@ -1261,68 +1266,68 @@ proc run_ld_link_exec_tests { targets_to_xfail ldtests } { + } else { + ld_compile "$CC -c $CFLAGS $cflags" $srcdir/$subdir/$src_file $objfile + } ++ } + +- # We have to use $CC to build PIE and shared library. +- if { [ string match "c" $lang ] } { +- set link_proc ld_simple_link +- set link_cmd $CC +- } elseif { [ string match "c++" $lang ] } { +- set link_proc ld_simple_link +- set link_cmd $CXX +- } elseif { [ string match "-shared" $ld_options ] \ +- || [ string match "-pie" $ld_options ] } { +- set link_proc ld_simple_link +- set link_cmd $CC +- } else { +- set link_proc ld_link +- set link_cmd $ld +- } ++ # We have to use $CC to build PIE and shared library. ++ if { [ string match "c" $lang ] } { ++ set link_proc ld_simple_link ++ set link_cmd $CC ++ } elseif { [ string match "c++" $lang ] } { ++ set link_proc ld_simple_link ++ set link_cmd $CXX ++ } elseif { [ string match "-shared" $ld_options ] \ ++ || [ string match "-pie" $ld_options ] } { ++ set link_proc ld_simple_link ++ set link_cmd $CC ++ } else { ++ set link_proc ld_link ++ set link_cmd $ld ++ } + +- if ![$link_proc $link_cmd $binfile "-L$srcdir/$subdir $ld_options $objfiles"] { +- set failed 1 +- } else { ++ if ![$link_proc $link_cmd $binfile "-L$srcdir/$subdir $ld_options $objfiles"] { ++ set failed 1 ++ } else { ++ set failed 0 ++ } ++ ++ # Check if exec_output is expected. ++ if { $warning != "" } then { ++ verbose -log "returned with: <$exec_output>, expected: <$warning>" ++ if { [regexp $warning $exec_output] } then { + set failed 0 ++ } else { ++ set failed 1 + } ++ } + +- # Check if exec_output is expected. +- if { $warning != "" } then { +- verbose -log "returned with: <$exec_output>, expected: <$warning>" +- if { [regexp $warning $exec_output] } then { +- set failed 0 +- } else { +- set failed 1 +- } +- } ++ if { $failed == 0 } { ++ send_log "Running: $binfile > $binfile.out\n" ++ verbose "Running: $binfile > $binfile.out" ++ catch "exec $binfile > $binfile.out" exec_output + +- if { $failed == 0 } { +- send_log "Running: $binfile > $binfile.out\n" +- verbose "Running: $binfile > $binfile.out" +- catch "exec $binfile > $binfile.out" exec_output ++ if ![string match "" $exec_output] then { ++ send_log "$exec_output\n" ++ verbose "$exec_output" 1 ++ set failed 1 ++ } else { ++ send_log "diff $binfile.out $srcdir/$subdir/$expfile\n" ++ verbose "diff $binfile.out $srcdir/$subdir/$expfile" ++ catch "exec diff $binfile.out $srcdir/$subdir/$expfile" exec_output ++ set exec_output [prune_warnings $exec_output] + + if ![string match "" $exec_output] then { + send_log "$exec_output\n" + verbose "$exec_output" 1 + set failed 1 +- } else { +- send_log "diff $binfile.out $srcdir/$subdir/$expfile\n" +- verbose "diff $binfile.out $srcdir/$subdir/$expfile" +- catch "exec diff $binfile.out $srcdir/$subdir/$expfile" exec_output +- set exec_output [prune_warnings $exec_output] +- +- if ![string match "" $exec_output] then { +- send_log "$exec_output\n" +- verbose "$exec_output" 1 +- set failed 1 +- } + } + } ++ } + +- if { $failed != 0 } { +- fail $testname +- } else { +- set errcnt 0 +- pass $testname +- } ++ if { $failed != 0 } { ++ fail $testname ++ } else { ++ set errcnt 0 ++ pass $testname + } + } + } +diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog +index ca0f49b..e4ae7ce 100644 +--- a/opcodes/ChangeLog ++++ b/opcodes/ChangeLog +@@ -1,3 +1,77 @@ ++2013-02-12 Yufeng Zhang ++ ++ * aarch64-tbl.h (aarch64_opcode_table): Flag sshll, sshll2, ushll and ++ ushll2 with F_HAS_ALIAS. Add entries for sxtl, sxtl2, uxtl and uxtl2. ++ * aarch64-asm.c (convert_xtl_to_shll): New function. ++ (convert_to_real): Handle OP_SXTL, OP_SXTL2, OP_UXTL and OP_UXTL2 by ++ calling convert_xtl_to_shll. ++ * aarch64-dis.c (convert_shll_to_xtl): New function. ++ (convert_to_alias): Handle OP_SXTL, OP_SXTL2, OP_UXTL and OP_UXTL2 by ++ calling convert_shll_to_xtl. ++ * aarch64-gen.c: Update copyright year. ++ * aarch64-asm-2.c: Re-generate. ++ * aarch64-dis-2.c: Re-generate. ++ * aarch64-opc-2.c: Re-generate. ++ ++2013-02-12 Yufeng Zhang ++ ++ * aarch64-opc.c (aarch64_print_operand): Change to print ++ AARCH64_OPND_IMM_MOV in hexadecimal in the instruction and in decimal ++ in comment. ++ * aarch64-tbl.h (aarch64_opcode_table): Remove the 'F_PSEUDO' flag ++ from the opcode entries of OP_MOV_IMM_LOG, OP_MOV_IMM_WIDEN and ++ OP_MOV_IMM_WIDE. ++ ++2013-02-12 Yufeng Zhang ++ ++ * aarch64-opc.c (aarch64_prfops): Update to support PLIL1KEEP, ++ PLIL1STRM, PLIL2KEEP, PLIL2STRM, PLIL3KEEP and PLIL3STRM. ++ ++2013-02-12 Yufeng Zhang ++ ++ * aarch64-opc.c (aarch64_sys_regs): Add rmr_el1, rmr_el2 and ++ rmr_el3; remove daifset and daifclr. ++ ++2013-02-12 Yufeng Zhang ++ ++ * aarch64-opc.c (operand_general_constraint_met_p): Change to ++ check the alignment of addr.offset.imm instead of that of ++ shifter.amount for operand type AARCH64_OPND_ADDR_UIMM12. ++ ++2013-01-22 Alan Modra ++ ++ Apply mainline patches ++ 2012-12-13 Alan Modra ++ PR binutils/14950 ++ * ppc-opc.c (insert_sci8, extract_sci8): Rewrite. ++ (insert_sci8n, extract_sci8n): Likewise. ++ ++ 2012-11-23 Alan Modra ++ * ppc-dis.c (ppc_parse_cpu): Add "sticky" param. Track bits ++ set from ppc_opts.sticky in it. Delete "retain_mask". ++ (powerpc_init_dialect): Choose default dialect from info->mach ++ before parsing -M options. Handle more bfd_mach_ppc variants. ++ Update common default to power7. ++ ++ 2012-10-26 Alan Modra ++ * ppc-opc (powerpc_opcodes): "lfdp" and "stfdp" use DS offset. ++ ++ 2012-10-22 Peter Bergner ++ * ppc-opc.c (powerpc_opcodes) : Fix opcode spelling. ++ ++ 2012-10-05 Peter Bergner ++ * ppc-dis.c (ppc_opts) : Use PPC_OPCODE_ALTIVEC2; ++ * ppc-opc.c (VBA): New define. ++ (powerpc_opcodes) : New extended mnemonics. ++ ++2012-11-20 Kirill Yukhin ++ H.J. Lu ++ ++ PR gas/14859 ++ * i386-opc.tbl: Fix opcode for 64-bit jecxz. ++ * i386-tbl.h: Regenerated. ++ + 2012-10-09 Nagajyothi Eggone + + * i386-gen.c (cpu_flag_init): Add CPU_BDVER3_FLAGS. +@@ -9,7 +83,7 @@ + + 2012-09-18 Kyrylo Tkachov + +- * arm-dis.c: Changed ldra and strl-form mnemonics ++ * arm-dis.c: Changed ldra and strl-form mnemonics + to lda and stl-form. + + 2012-09-18 Chao-ying Fu +diff --git a/opcodes/aarch64-asm-2.c b/opcodes/aarch64-asm-2.c +index b633b86..d3280aa 100644 +--- a/opcodes/aarch64-asm-2.c ++++ b/opcodes/aarch64-asm-2.c +@@ -1,5 +1,5 @@ + /* This file is automatically generated by aarch64-gen. Do not edit! */ +-/* Copyright 2012 Free Software Foundation, Inc. ++/* Copyright 2012, 2013 Free Software Foundation, Inc. + Contributed by ARM Ltd. + + This file is part of the GNU opcodes library. +@@ -76,147 +76,159 @@ aarch64_find_real_opcode (const aarch64_opcode *opcode) + case 259: /* mov */ + value = 258; /* --> orr. */ + break; +- case 427: /* mov */ +- value = 426; /* --> dup. */ ++ case 314: /* sxtl */ ++ value = 313; /* --> sshll. */ + break; +- case 494: /* sxtw */ +- case 493: /* sxth */ +- case 492: /* sxtb */ +- case 495: /* asr */ +- case 491: /* sbfx */ +- case 490: /* sbfiz */ +- value = 489; /* --> sbfm. */ ++ case 316: /* sxtl2 */ ++ value = 315; /* --> sshll2. */ + break; +- case 498: /* bfxil */ +- case 497: /* bfi */ +- value = 496; /* --> bfm. */ ++ case 336: /* uxtl */ ++ value = 335; /* --> ushll. */ + break; +- case 503: /* uxth */ +- case 502: /* uxtb */ +- case 505: /* lsr */ +- case 504: /* lsl */ +- case 501: /* ubfx */ +- case 500: /* ubfiz */ +- value = 499; /* --> ubfm. */ ++ case 338: /* uxtl2 */ ++ value = 337; /* --> ushll2. */ + break; +- case 523: /* cset */ +- case 522: /* cinc */ +- value = 521; /* --> csinc. */ ++ case 431: /* mov */ ++ value = 430; /* --> dup. */ + break; +- case 526: /* csetm */ +- case 525: /* cinv */ +- value = 524; /* --> csinv. */ ++ case 498: /* sxtw */ ++ case 497: /* sxth */ ++ case 496: /* sxtb */ ++ case 499: /* asr */ ++ case 495: /* sbfx */ ++ case 494: /* sbfiz */ ++ value = 493; /* --> sbfm. */ + break; +- case 528: /* cneg */ +- value = 527; /* --> csneg. */ ++ case 502: /* bfxil */ ++ case 501: /* bfi */ ++ value = 500; /* --> bfm. */ + break; +- case 553: /* lsl */ +- value = 552; /* --> lslv. */ ++ case 507: /* uxth */ ++ case 506: /* uxtb */ ++ case 509: /* lsr */ ++ case 508: /* lsl */ ++ case 505: /* ubfx */ ++ case 504: /* ubfiz */ ++ value = 503; /* --> ubfm. */ + break; +- case 555: /* lsr */ +- value = 554; /* --> lsrv. */ ++ case 527: /* cset */ ++ case 526: /* cinc */ ++ value = 525; /* --> csinc. */ + break; +- case 557: /* asr */ +- value = 556; /* --> asrv. */ ++ case 530: /* csetm */ ++ case 529: /* cinv */ ++ value = 528; /* --> csinv. */ + break; +- case 559: /* ror */ +- value = 558; /* --> rorv. */ ++ case 532: /* cneg */ ++ value = 531; /* --> csneg. */ + break; +- case 561: /* mul */ +- value = 560; /* --> madd. */ ++ case 557: /* lsl */ ++ value = 556; /* --> lslv. */ + break; +- case 563: /* mneg */ +- value = 562; /* --> msub. */ ++ case 559: /* lsr */ ++ value = 558; /* --> lsrv. */ + break; +- case 565: /* smull */ +- value = 564; /* --> smaddl. */ ++ case 561: /* asr */ ++ value = 560; /* --> asrv. */ + break; +- case 567: /* smnegl */ +- value = 566; /* --> smsubl. */ ++ case 563: /* ror */ ++ value = 562; /* --> rorv. */ + break; +- case 570: /* umull */ +- value = 569; /* --> umaddl. */ ++ case 565: /* mul */ ++ value = 564; /* --> madd. */ + break; +- case 572: /* umnegl */ +- value = 571; /* --> umsubl. */ ++ case 567: /* mneg */ ++ value = 566; /* --> msub. */ + break; +- case 583: /* ror */ +- value = 582; /* --> extr. */ ++ case 569: /* smull */ ++ value = 568; /* --> smaddl. */ + break; +- case 683: /* strb */ +- value = 681; /* --> sturb. */ ++ case 571: /* smnegl */ ++ value = 570; /* --> smsubl. */ + break; +- case 684: /* ldrb */ +- value = 682; /* --> ldurb. */ ++ case 574: /* umull */ ++ value = 573; /* --> umaddl. */ + break; +- case 686: /* ldrsb */ +- value = 685; /* --> ldursb. */ ++ case 576: /* umnegl */ ++ value = 575; /* --> umsubl. */ + break; +- case 689: /* str */ +- value = 687; /* --> stur. */ ++ case 587: /* ror */ ++ value = 586; /* --> extr. */ + break; +- case 690: /* ldr */ +- value = 688; /* --> ldur. */ ++ case 687: /* strb */ ++ value = 685; /* --> sturb. */ + break; +- case 693: /* strh */ +- value = 691; /* --> sturh. */ ++ case 688: /* ldrb */ ++ value = 686; /* --> ldurb. */ + break; +- case 694: /* ldrh */ +- value = 692; /* --> ldurh. */ ++ case 690: /* ldrsb */ ++ value = 689; /* --> ldursb. */ + break; +- case 696: /* ldrsh */ +- value = 695; /* --> ldursh. */ ++ case 693: /* str */ ++ value = 691; /* --> stur. */ + break; +- case 699: /* str */ +- value = 697; /* --> stur. */ ++ case 694: /* ldr */ ++ value = 692; /* --> ldur. */ + break; +- case 700: /* ldr */ +- value = 698; /* --> ldur. */ ++ case 697: /* strh */ ++ value = 695; /* --> sturh. */ + break; +- case 702: /* ldrsw */ +- value = 701; /* --> ldursw. */ ++ case 698: /* ldrh */ ++ value = 696; /* --> ldurh. */ + break; +- case 704: /* prfm */ +- value = 703; /* --> prfum. */ ++ case 700: /* ldrsh */ ++ value = 699; /* --> ldursh. */ + break; +- case 746: /* bic */ +- value = 745; /* --> and. */ ++ case 703: /* str */ ++ value = 701; /* --> stur. */ + break; +- case 748: /* mov */ +- value = 747; /* --> orr. */ ++ case 704: /* ldr */ ++ value = 702; /* --> ldur. */ + break; +- case 751: /* tst */ +- value = 750; /* --> ands. */ ++ case 706: /* ldrsw */ ++ value = 705; /* --> ldursw. */ + break; +- case 756: /* uxtw */ +- case 755: /* mov */ +- value = 754; /* --> orr. */ ++ case 708: /* prfm */ ++ value = 707; /* --> prfum. */ + break; +- case 758: /* mvn */ +- value = 757; /* --> orn. */ ++ case 750: /* bic */ ++ value = 749; /* --> and. */ + break; +- case 762: /* tst */ +- value = 761; /* --> ands. */ ++ case 752: /* mov */ ++ value = 751; /* --> orr. */ + break; +- case 765: /* mov */ +- value = 764; /* --> movn. */ ++ case 755: /* tst */ ++ value = 754; /* --> ands. */ + break; +- case 767: /* mov */ +- value = 766; /* --> movz. */ ++ case 760: /* uxtw */ ++ case 759: /* mov */ ++ value = 758; /* --> orr. */ + break; +- case 778: /* sevl */ +- case 777: /* sev */ +- case 776: /* wfi */ +- case 775: /* wfe */ +- case 774: /* yield */ +- case 773: /* nop */ +- value = 772; /* --> hint. */ ++ case 762: /* mvn */ ++ value = 761; /* --> orn. */ + break; +- case 787: /* tlbi */ +- case 786: /* ic */ +- case 785: /* dc */ +- case 784: /* at */ +- value = 783; /* --> sys. */ ++ case 766: /* tst */ ++ value = 765; /* --> ands. */ ++ break; ++ case 769: /* mov */ ++ value = 768; /* --> movn. */ ++ break; ++ case 771: /* mov */ ++ value = 770; /* --> movz. */ ++ break; ++ case 782: /* sevl */ ++ case 781: /* sev */ ++ case 780: /* wfi */ ++ case 779: /* wfe */ ++ case 778: /* yield */ ++ case 777: /* nop */ ++ value = 776; /* --> hint. */ ++ break; ++ case 791: /* tlbi */ ++ case 790: /* ic */ ++ case 789: /* dc */ ++ case 788: /* at */ ++ value = 787; /* --> sys. */ + break; + default: return NULL; + } +diff --git a/opcodes/aarch64-asm.c b/opcodes/aarch64-asm.c +index b10a873..16cdaa9 100644 +--- a/opcodes/aarch64-asm.c ++++ b/opcodes/aarch64-asm.c +@@ -1,5 +1,5 @@ + /* aarch64-asm.c -- AArch64 assembler support. +- Copyright 2012 Free Software Foundation, Inc. ++ Copyright 2012, 2013 Free Software Foundation, Inc. + Contributed by ARM Ltd. + + This file is part of the GNU opcodes library. +@@ -952,6 +952,16 @@ convert_ror_to_extr (aarch64_inst *inst) + copy_operand_info (inst, 2, 1); + } + ++/* UXTL ., . ++ is equivalent to: ++ USHLL ., ., #0. */ ++static void ++convert_xtl_to_shll (aarch64_inst *inst) ++{ ++ inst->operands[2].qualifier = inst->operands[1].qualifier; ++ inst->operands[2].imm.value = 0; ++} ++ + /* Convert + LSR , , # + to +@@ -1157,6 +1167,12 @@ convert_to_real (aarch64_inst *inst, const aarch64_opcode *real) + case OP_ROR_IMM: + convert_ror_to_extr (inst); + break; ++ case OP_SXTL: ++ case OP_SXTL2: ++ case OP_UXTL: ++ case OP_UXTL2: ++ convert_xtl_to_shll (inst); ++ break; + default: + break; + } +diff --git a/opcodes/aarch64-dis-2.c b/opcodes/aarch64-dis-2.c +index cf508ae..410bc3d 100644 +--- a/opcodes/aarch64-dis-2.c ++++ b/opcodes/aarch64-dis-2.c +@@ -1,5 +1,5 @@ + /* This file is automatically generated by aarch64-gen. Do not edit! */ +-/* Copyright 2012 Free Software Foundation, Inc. ++/* Copyright 2012, 2013 Free Software Foundation, Inc. + Contributed by ARM Ltd. + + This file is part of the GNU opcodes library. +@@ -40,7 +40,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxxx0000xxx0 + adr. */ +- return 769; ++ return 773; + } + else + { +@@ -48,7 +48,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxxx0000xxx1 + adrp. */ +- return 770; ++ return 774; + } + } + else +@@ -115,7 +115,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx000x0010000 + stxrb. */ +- return 705; ++ return 709; + } + else + { +@@ -123,7 +123,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx000x0010010 + stxrh. */ +- return 711; ++ return 715; + } + } + else +@@ -132,7 +132,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx000x00100x1 + stxr. */ +- return 717; ++ return 721; + } + } + else +@@ -141,7 +141,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx100x00100xx + stxp. */ +- return 719; ++ return 723; + } + } + else +@@ -156,7 +156,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx1xxxxx000x0010000 + stlxrb. */ +- return 706; ++ return 710; + } + else + { +@@ -164,7 +164,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx1xxxxx000x0010010 + stlxrh. */ +- return 712; ++ return 716; + } + } + else +@@ -173,7 +173,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx1xxxxx000x00100x1 + stlxr. */ +- return 718; ++ return 722; + } + } + else +@@ -182,7 +182,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx1xxxxx100x00100xx + stlxp. */ +- return 720; ++ return 724; + } + } + } +@@ -192,7 +192,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx00x00101xx + stnp. */ +- return 727; ++ return 731; + } + } + else +@@ -207,7 +207,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx01x0010000 + stlrb. */ +- return 709; ++ return 713; + } + else + { +@@ -215,7 +215,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx01x0010010 + stlrh. */ +- return 715; ++ return 719; + } + } + else +@@ -224,7 +224,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx01x00100x1 + stlr. */ +- return 725; ++ return 729; + } + } + else +@@ -233,7 +233,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx01x00101xx + stp. */ +- return 736; ++ return 740; + } + } + } +@@ -255,7 +255,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx010x0010000 + ldxrb. */ +- return 707; ++ return 711; + } + else + { +@@ -263,7 +263,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx010x0010010 + ldxrh. */ +- return 713; ++ return 717; + } + } + else +@@ -272,7 +272,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx010x00100x1 + ldxr. */ +- return 721; ++ return 725; + } + } + else +@@ -281,7 +281,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx110x00100xx + ldxp. */ +- return 723; ++ return 727; + } + } + else +@@ -296,7 +296,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx1xxxxx010x0010000 + ldaxrb. */ +- return 708; ++ return 712; + } + else + { +@@ -304,7 +304,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx1xxxxx010x0010010 + ldaxrh. */ +- return 714; ++ return 718; + } + } + else +@@ -313,7 +313,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx1xxxxx010x00100x1 + ldaxr. */ +- return 722; ++ return 726; + } + } + else +@@ -322,7 +322,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx1xxxxx110x00100xx + ldaxp. */ +- return 724; ++ return 728; + } + } + } +@@ -334,7 +334,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx10x001010x + ldnp. */ +- return 728; ++ return 732; + } + else + { +@@ -342,7 +342,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx10x001011x + ldpsw. */ +- return 735; ++ return 739; + } + } + } +@@ -358,7 +358,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx11x0010000 + ldarb. */ +- return 710; ++ return 714; + } + else + { +@@ -366,7 +366,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx11x0010010 + ldarh. */ +- return 716; ++ return 720; + } + } + else +@@ -375,7 +375,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx11x00100x1 + ldar. */ +- return 726; ++ return 730; + } + } + else +@@ -386,7 +386,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx11x001010x + ldp. */ +- return 737; ++ return 741; + } + else + { +@@ -394,7 +394,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx11x001011x + ldpsw. */ +- return 740; ++ return 744; + } + } + } +@@ -412,7 +412,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxxx000110x0 + ldr. */ +- return 741; ++ return 745; + } + else + { +@@ -422,7 +422,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxxx00011001 + ldrsw. */ +- return 743; ++ return 747; + } + else + { +@@ -430,7 +430,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxxx00011011 + prfm. */ +- return 744; ++ return 748; + } + } + } +@@ -452,7 +452,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx00xxxxxxxxxx0000011100 + sturb. */ +- return 681; ++ return 685; + } + else + { +@@ -460,7 +460,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx00xxxxxxxxxx0000011110 + sturh. */ +- return 691; ++ return 695; + } + } + else +@@ -469,7 +469,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx00xxxxxxxxxx00000111x1 + stur. */ +- return 697; ++ return 701; + } + } + else +@@ -482,7 +482,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx00xxxxxxxxxx1000011100 + ldurb. */ +- return 682; ++ return 686; + } + else + { +@@ -490,7 +490,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx00xxxxxxxxxx1000011110 + ldurh. */ +- return 692; ++ return 696; + } + } + else +@@ -499,7 +499,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx00xxxxxxxxxx10000111x1 + ldur. */ +- return 698; ++ return 702; + } + } + } +@@ -513,7 +513,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx00xxxxxxxxxxx100011100 + ldursb. */ +- return 685; ++ return 689; + } + else + { +@@ -521,7 +521,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx00xxxxxxxxxxx100011101 + ldursw. */ +- return 701; ++ return 705; + } + } + else +@@ -532,7 +532,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx00xxxxxxxxxxx100011110 + ldursh. */ +- return 695; ++ return 699; + } + else + { +@@ -540,7 +540,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx00xxxxxxxxxxx100011111 + prfum. */ +- return 703; ++ return 707; + } + } + } +@@ -561,7 +561,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxx00000011100 + sttrb. */ +- return 672; ++ return 676; + } + else + { +@@ -569,7 +569,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxx00000011110 + sttrh. */ +- return 675; ++ return 679; + } + } + else +@@ -578,7 +578,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxx000000111x1 + sttr. */ +- return 678; ++ return 682; + } + } + else +@@ -591,7 +591,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxx01000011100 + ldtrb. */ +- return 673; ++ return 677; + } + else + { +@@ -599,7 +599,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxx01000011110 + ldtrh. */ +- return 676; ++ return 680; + } + } + else +@@ -608,7 +608,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxx010000111x1 + ldtr. */ +- return 679; ++ return 683; + } + } + } +@@ -622,7 +622,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxx0x100011100 + ldtrsb. */ +- return 674; ++ return 678; + } + else + { +@@ -630,7 +630,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxx0x100011101 + ldtrsw. */ +- return 680; ++ return 684; + } + } + else +@@ -639,7 +639,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxx0x10001111x + ldtrsh. */ +- return 677; ++ return 681; + } + } + } +@@ -657,7 +657,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxx10000011100 + strb. */ +- return 660; ++ return 664; + } + else + { +@@ -665,7 +665,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxx10000011110 + strh. */ +- return 665; ++ return 669; + } + } + else +@@ -674,7 +674,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxx100000111x1 + str. */ +- return 668; ++ return 672; + } + } + else +@@ -687,7 +687,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxx11000011100 + ldrb. */ +- return 661; ++ return 665; + } + else + { +@@ -695,7 +695,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxx11000011110 + ldrh. */ +- return 666; ++ return 670; + } + } + else +@@ -704,7 +704,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxx110000111x1 + ldr. */ +- return 669; ++ return 673; + } + } + } +@@ -718,7 +718,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxx1x100011100 + ldrsb. */ +- return 662; ++ return 666; + } + else + { +@@ -726,7 +726,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxx1x100011101 + ldrsw. */ +- return 670; ++ return 674; + } + } + else +@@ -737,7 +737,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxx1x100011110 + ldrsh. */ +- return 667; ++ return 671; + } + else + { +@@ -745,7 +745,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxx1x100011111 + prfm. */ +- return 671; ++ return 675; + } + } + } +@@ -766,7 +766,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1xxxxxxxxxxx0000011100 + strb. */ +- return 637; ++ return 641; + } + else + { +@@ -774,7 +774,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1xxxxxxxxxxx0000011110 + strh. */ +- return 642; ++ return 646; + } + } + else +@@ -783,7 +783,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1xxxxxxxxxxx00000111x1 + str. */ +- return 645; ++ return 649; + } + } + else +@@ -796,7 +796,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1xxxxxxxxxxx1000011100 + ldrb. */ +- return 638; ++ return 642; + } + else + { +@@ -804,7 +804,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1xxxxxxxxxxx1000011110 + ldrh. */ +- return 643; ++ return 647; + } + } + else +@@ -813,7 +813,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1xxxxxxxxxxx10000111x1 + ldr. */ +- return 646; ++ return 650; + } + } + } +@@ -827,7 +827,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1xxxxxxxxxxxx100011100 + ldrsb. */ +- return 639; ++ return 643; + } + else + { +@@ -835,7 +835,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1xxxxxxxxxxxx100011101 + ldrsw. */ +- return 647; ++ return 651; + } + } + else +@@ -844,7 +844,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1xxxxxxxxxxxx10001111x + ldrsh. */ +- return 644; ++ return 648; + } + } + } +@@ -864,7 +864,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx0010011x00 + strb. */ +- return 648; ++ return 652; + } + else + { +@@ -872,7 +872,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx0010011x10 + strh. */ +- return 653; ++ return 657; + } + } + else +@@ -881,7 +881,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx0010011xx1 + str. */ +- return 656; ++ return 660; + } + } + else +@@ -894,7 +894,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx1010011x00 + ldrb. */ +- return 649; ++ return 653; + } + else + { +@@ -902,7 +902,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx1010011x10 + ldrh. */ +- return 654; ++ return 658; + } + } + else +@@ -911,7 +911,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx1010011xx1 + ldr. */ +- return 657; ++ return 661; + } + } + } +@@ -925,7 +925,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxx110011x00 + ldrsb. */ +- return 650; ++ return 654; + } + else + { +@@ -933,7 +933,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxx110011x01 + ldrsw. */ +- return 658; ++ return 662; + } + } + else +@@ -944,7 +944,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxx110011x10 + ldrsh. */ +- return 655; ++ return 659; + } + else + { +@@ -952,7 +952,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxx110011x11 + prfm. */ +- return 659; ++ return 663; + } + } + } +@@ -976,7 +976,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxx00100x00x + and. */ +- return 745; ++ return 749; + } + else + { +@@ -984,7 +984,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxx00100x01x + eor. */ +- return 749; ++ return 753; + } + } + else +@@ -995,7 +995,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxx00100x10x + orr. */ +- return 747; ++ return 751; + } + else + { +@@ -1003,7 +1003,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxx00100x11x + ands. */ +- return 750; ++ return 754; + } + } + } +@@ -1017,7 +1017,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxx10100x00x + movn. */ +- return 764; ++ return 768; + } + else + { +@@ -1025,7 +1025,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxx10100x01x + movz. */ +- return 766; ++ return 770; + } + } + else +@@ -1034,7 +1034,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxx10100x1xx + movk. */ +- return 768; ++ return 772; + } + } + } +@@ -1052,7 +1052,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxx0xx0101000x + and. */ +- return 752; ++ return 756; + } + else + { +@@ -1060,7 +1060,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxx0xx0101001x + eor. */ +- return 759; ++ return 763; + } + } + else +@@ -1071,7 +1071,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxx0xx0101010x + orr. */ +- return 754; ++ return 758; + } + else + { +@@ -1079,7 +1079,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxx0xx0101011x + ands. */ +- return 761; ++ return 765; + } + } + } +@@ -1140,7 +1140,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx00xxxxxxxxx00101011x0x + csel. */ +- return 520; ++ return 524; + } + else + { +@@ -1148,7 +1148,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx00xxxxxxxxx00101011x1x + csinv. */ +- return 524; ++ return 528; + } + } + } +@@ -1162,7 +1162,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx00xxxxxxxxx01001011x0x + ccmn. */ +- return 518; ++ return 522; + } + else + { +@@ -1170,7 +1170,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx00xxxxxxxxx01001011x1x + ccmp. */ +- return 519; ++ return 523; + } + } + else +@@ -1183,7 +1183,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0000xxxxxxx01101011xxx + rbit. */ +- return 543; ++ return 547; + } + else + { +@@ -1191,7 +1191,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0001xxxxxxx01101011xxx + lslv. */ +- return 552; ++ return 556; + } + } + else +@@ -1200,7 +1200,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx001xxxxxxxx01101011xxx + clz. */ +- return 547; ++ return 551; + } + } + } +@@ -1215,7 +1215,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxx0x001011x0x + ccmn. */ +- return 516; ++ return 520; + } + else + { +@@ -1223,7 +1223,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxx0x001011x1x + ccmp. */ +- return 517; ++ return 521; + } + } + else +@@ -1236,7 +1236,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01x0xxxxxxx0x101011x0x + udiv. */ +- return 550; ++ return 554; + } + else + { +@@ -1246,7 +1246,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01x0xxxxxxx0x101011x10 + rev. */ +- return 545; ++ return 549; + } + else + { +@@ -1254,7 +1254,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01x0xxxxxxx0x101011x11 + rev32. */ +- return 549; ++ return 553; + } + } + } +@@ -1264,7 +1264,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01x1xxxxxxx0x101011xxx + asrv. */ +- return 556; ++ return 560; + } + } + } +@@ -1281,7 +1281,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx10xxxxxxxxx00x01011x0x + csinc. */ +- return 521; ++ return 525; + } + else + { +@@ -1289,7 +1289,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx10xxxxxxxxx00x01011x1x + csneg. */ +- return 527; ++ return 531; + } + } + else +@@ -1302,7 +1302,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1000xxxxxxx01x01011xxx + rev16. */ +- return 544; ++ return 548; + } + else + { +@@ -1310,7 +1310,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1001xxxxxxx01x01011xxx + lsrv. */ +- return 554; ++ return 558; + } + } + else +@@ -1319,7 +1319,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx101xxxxxxxx01x01011xxx + cls. */ +- return 548; ++ return 552; + } + } + } +@@ -1333,7 +1333,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx11x0xxxxxxx0xx01011x0x + sdiv. */ +- return 551; ++ return 555; + } + else + { +@@ -1341,7 +1341,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx11x0xxxxxxx0xx01011x1x + rev. */ +- return 546; ++ return 550; + } + } + else +@@ -1350,7 +1350,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx11x1xxxxxxx0xx01011xxx + rorv. */ +- return 558; ++ return 562; + } + } + } +@@ -1366,7 +1366,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxx1xx0101x00x + bic. */ +- return 753; ++ return 757; + } + else + { +@@ -1374,7 +1374,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxx1xx0101x01x + eon. */ +- return 760; ++ return 764; + } + } + else +@@ -1385,7 +1385,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxx1xx0101x10x + orn. */ +- return 757; ++ return 761; + } + else + { +@@ -1393,7 +1393,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxx1xx0101x11x + bics. */ +- return 763; ++ return 767; + } + } + } +@@ -1413,7 +1413,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxx01100x00x + sbfm. */ +- return 489; ++ return 493; + } + else + { +@@ -1421,7 +1421,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxx01100x01x + ubfm. */ +- return 499; ++ return 503; + } + } + else +@@ -1430,7 +1430,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxx01100x1xx + bfm. */ +- return 496; ++ return 500; + } + } + else +@@ -1439,7 +1439,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxx11100xxxx + extr. */ +- return 582; ++ return 586; + } + } + else +@@ -1497,7 +1497,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx00x11011xxx + madd. */ +- return 560; ++ return 564; + } + else + { +@@ -1507,7 +1507,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx01011011xxx + smulh. */ +- return 568; ++ return 572; + } + else + { +@@ -1515,7 +1515,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx01111011xxx + umulh. */ +- return 573; ++ return 577; + } + } + } +@@ -1525,7 +1525,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx1xxxxx0xx11011xxx + msub. */ +- return 562; ++ return 566; + } + } + } +@@ -1582,7 +1582,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx1x011011xxx + smaddl. */ +- return 564; ++ return 568; + } + else + { +@@ -1590,7 +1590,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx1xxxxx1x011011xxx + smsubl. */ +- return 566; ++ return 570; + } + } + } +@@ -1602,7 +1602,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx1x11101xxxx + umaddl. */ +- return 569; ++ return 573; + } + else + { +@@ -1610,7 +1610,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx1xxxxx1x11101xxxx + umsubl. */ +- return 571; ++ return 575; + } + } + } +@@ -1632,7 +1632,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxxxxx10x000 + b. */ +- return 506; ++ return 510; + } + else + { +@@ -1640,7 +1640,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxxxxx10x001 + bl. */ +- return 507; ++ return 511; + } + } + else +@@ -1655,7 +1655,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxxx0010x010 + b.c. */ +- return 515; ++ return 519; + } + else + { +@@ -1669,7 +1669,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + 00xxxxxxxxxxxxxxxxxxx0xx0010x011 + hlt. */ +- return 578; ++ return 582; + } + else + { +@@ -1677,7 +1677,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + 00xxxxxxxxxxxxxxxxxxx1xx0010x011 + brk. */ +- return 577; ++ return 581; + } + } + else +@@ -1688,7 +1688,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + 01xxxxxxxxxxxxxxxxxxx0xx0010x011 + hvc. */ +- return 575; ++ return 579; + } + else + { +@@ -1696,7 +1696,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + 01xxxxxxxxxxxxxxxxxxx1xx0010x011 + dcps2. */ +- return 580; ++ return 584; + } + } + } +@@ -1710,7 +1710,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + 10xxxxxxxxxxxxxxxxxxx0xx0010x011 + svc. */ +- return 574; ++ return 578; + } + else + { +@@ -1718,7 +1718,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + 10xxxxxxxxxxxxxxxxxxx1xx0010x011 + dcps1. */ +- return 579; ++ return 583; + } + } + else +@@ -1729,7 +1729,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + 11xxxxxxxxxxxxxxxxxxx0xx0010x011 + smc. */ +- return 576; ++ return 580; + } + else + { +@@ -1737,7 +1737,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + 11xxxxxxxxxxxxxxxxxxx1xx0010x011 + dcps3. */ +- return 581; ++ return 585; + } + } + } +@@ -1755,7 +1755,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxx0000110x01x + br. */ +- return 508; ++ return 512; + } + else + { +@@ -1763,7 +1763,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxx0010110x01x + eret. */ +- return 511; ++ return 515; + } + } + else +@@ -1772,7 +1772,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxx01x0110x01x + ret. */ +- return 510; ++ return 514; + } + } + else +@@ -1783,7 +1783,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxx1x00110x01x + blr. */ +- return 509; ++ return 513; + } + else + { +@@ -1791,7 +1791,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxx1x10110x01x + drps. */ +- return 512; ++ return 516; + } + } + } +@@ -1810,7 +1810,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxx00xxxxx00xxx1x10x01x + msr. */ +- return 771; ++ return 775; + } + else + { +@@ -1818,7 +1818,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxx01xxxxx00xxx1x10x01x + hint. */ +- return 772; ++ return 776; + } + } + else +@@ -1831,7 +1831,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxx00xxxxx1xxxxxx00xxx1x10x01x + dsb. */ +- return 780; ++ return 784; + } + else + { +@@ -1841,7 +1841,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxx010xxxx1xxxxxx00xxx1x10x01x + clrex. */ +- return 779; ++ return 783; + } + else + { +@@ -1849,7 +1849,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxx011xxxx1xxxxxx00xxx1x10x01x + isb. */ +- return 782; ++ return 786; + } + } + } +@@ -1859,7 +1859,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxx1xxxxxx1xxxxxx00xxx1x10x01x + dmb. */ +- return 781; ++ return 785; + } + } + } +@@ -1871,7 +1871,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxx100xx1x10x01x + sys. */ +- return 783; ++ return 787; + } + else + { +@@ -1879,7 +1879,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxx101xx1x10x01x + sysl. */ +- return 789; ++ return 793; + } + } + } +@@ -1891,7 +1891,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxx10xx1x10x01x + msr. */ +- return 788; ++ return 792; + } + else + { +@@ -1899,7 +1899,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxx11xx1x10x01x + mrs. */ +- return 790; ++ return 794; + } + } + } +@@ -1915,7 +1915,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxxx0010x1xx + cbz. */ +- return 513; ++ return 517; + } + else + { +@@ -1923,7 +1923,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxxx0110x1xx + tbz. */ +- return 791; ++ return 795; + } + } + else +@@ -1934,7 +1934,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxxx1010x1xx + cbnz. */ +- return 514; ++ return 518; + } + else + { +@@ -1942,7 +1942,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxxx1110x1xx + tbnz. */ +- return 792; ++ return 796; + } + } + } +@@ -1965,7 +1965,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx00001100xx + st4. */ +- return 351; ++ return 355; + } + else + { +@@ -1973,7 +1973,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx00001101xx + stnp. */ +- return 729; ++ return 733; + } + } + else +@@ -1988,7 +1988,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxx0xxxxxxx000101100xx + st1. */ +- return 367; ++ return 371; + } + else + { +@@ -1996,7 +1996,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxx0xxxxxxx100101100xx + st2. */ +- return 369; ++ return 373; + } + } + else +@@ -2007,7 +2007,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxx1xxxxxxx000101100xx + st3. */ +- return 368; ++ return 372; + } + else + { +@@ -2015,7 +2015,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxx1xxxxxxx100101100xx + st4. */ +- return 370; ++ return 374; + } + } + } +@@ -2025,7 +2025,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx00101101xx + stp. */ +- return 733; ++ return 737; + } + } + } +@@ -2041,7 +2041,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxx001001100xx + st4. */ +- return 359; ++ return 363; + } + else + { +@@ -2051,7 +2051,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxx0xxxxxxx001101100xx + st1. */ +- return 379; ++ return 383; + } + else + { +@@ -2059,7 +2059,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxx1xxxxxxx001101100xx + st3. */ +- return 380; ++ return 384; + } + } + } +@@ -2071,7 +2071,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxx0xxxxxxx101x01100xx + st2. */ +- return 381; ++ return 385; + } + else + { +@@ -2079,7 +2079,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxx1xxxxxxx101x01100xx + st4. */ +- return 382; ++ return 386; + } + } + } +@@ -2089,7 +2089,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx01x01101xx + stp. */ +- return 738; ++ return 742; + } + } + } +@@ -2105,7 +2105,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx10001100xx + ld4. */ +- return 355; ++ return 359; + } + else + { +@@ -2113,7 +2113,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx10001101xx + ldnp. */ +- return 730; ++ return 734; + } + } + else +@@ -2128,7 +2128,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxx0xxxxxxx010101100xx + ld1. */ +- return 371; ++ return 375; + } + else + { +@@ -2136,7 +2136,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxx0xxxxxxx110101100xx + ld2. */ +- return 375; ++ return 379; + } + } + else +@@ -2147,7 +2147,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxx1xxxxxxx010101100xx + ld3. */ +- return 372; ++ return 376; + } + else + { +@@ -2155,7 +2155,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxx1xxxxxxx110101100xx + ld4. */ +- return 376; ++ return 380; + } + } + } +@@ -2165,7 +2165,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx10101101xx + ldp. */ +- return 734; ++ return 738; + } + } + } +@@ -2181,7 +2181,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxx011001100xx + ld4. */ +- return 363; ++ return 367; + } + else + { +@@ -2191,7 +2191,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxx0xxxxxxx011101100xx + ld1. */ +- return 383; ++ return 387; + } + else + { +@@ -2199,7 +2199,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxx1xxxxxxx011101100xx + ld3. */ +- return 384; ++ return 388; + } + } + } +@@ -2211,7 +2211,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxx0xxxxxxx111x01100xx + ld2. */ +- return 387; ++ return 391; + } + else + { +@@ -2219,7 +2219,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxx1xxxxxxx111x01100xx + ld4. */ +- return 388; ++ return 392; + } + } + } +@@ -2229,7 +2229,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx11x01101xx + ldp. */ +- return 739; ++ return 743; + } + } + } +@@ -2244,7 +2244,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxxxx001110xx + ldr. */ +- return 742; ++ return 746; + } + else + { +@@ -2258,7 +2258,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx00xxxxxxxxxx0x001111xx + stur. */ +- return 687; ++ return 691; + } + else + { +@@ -2266,7 +2266,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx00xxxxxxxxxx1x001111xx + ldur. */ +- return 688; ++ return 692; + } + } + else +@@ -2277,7 +2277,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxxx0x001111xx + str. */ +- return 663; ++ return 667; + } + else + { +@@ -2285,7 +2285,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx01xxxxxxxxxx1x001111xx + ldr. */ +- return 664; ++ return 668; + } + } + } +@@ -2297,7 +2297,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1xxxxxxxxxxx0x001111xx + str. */ +- return 640; ++ return 644; + } + else + { +@@ -2305,7 +2305,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1xxxxxxxxxxx1x001111xx + ldr. */ +- return 641; ++ return 645; + } + } + } +@@ -2318,7 +2318,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx0x10111xxx + str. */ +- return 651; ++ return 655; + } + else + { +@@ -2326,7 +2326,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxxxxxxxx1x10111xxx + ldr. */ +- return 652; ++ return 656; + } + } + } +@@ -2351,7 +2351,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000xxxxxxxx0xx011100xx + tbl. */ +- return 337; ++ return 341; + } + else + { +@@ -2359,7 +2359,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx001xxxxxxxx0xx011100xx + tbx. */ +- return 338; ++ return 342; + } + } + else +@@ -2511,7 +2511,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxx00xxx0xx01111x0x + fcvtzs. */ +- return 586; ++ return 590; + } + else + { +@@ -2519,7 +2519,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxx01xxx0xx01111x0x + scvtf. */ +- return 584; ++ return 588; + } + } + else +@@ -2530,7 +2530,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxx10xxx0xx01111x0x + fcvtzu. */ +- return 587; ++ return 591; + } + else + { +@@ -2538,7 +2538,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxxx11xxx0xx01111x0x + ucvtf. */ +- return 585; ++ return 589; + } + } + } +@@ -2556,7 +2556,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0x000xxxxxx0xx01111x1x + sha1c. */ +- return 536; ++ return 540; + } + else + { +@@ -2564,7 +2564,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0x001xxxxxx0xx01111x1x + sha256h. */ +- return 540; ++ return 544; + } + } + else +@@ -2575,7 +2575,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0x010xxxxxx0xx01111x1x + sha1m. */ +- return 538; ++ return 542; + } + else + { +@@ -2583,7 +2583,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0x011xxxxxx0xx01111x1x + sha256su1. */ +- return 542; ++ return 546; + } + } + } +@@ -2597,7 +2597,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0x100xxxxxx0xx01111x1x + sha1p. */ +- return 537; ++ return 541; + } + else + { +@@ -2605,7 +2605,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0x101xxxxxx0xx01111x1x + sha256h2. */ +- return 541; ++ return 545; + } + } + else +@@ -2614,7 +2614,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0x11xxxxxxx0xx01111x1x + sha1su0. */ +- return 539; ++ return 543; + } + } + } +@@ -2624,7 +2624,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1xxxxxxxxxx0xx01111x1x + dup. */ +- return 426; ++ return 430; + } + } + } +@@ -2700,7 +2700,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000000000001xx01111xxx + fcvtns. */ +- return 588; ++ return 592; + } + else + { +@@ -2708,7 +2708,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000000000011xx01111xxx + fcvtms. */ +- return 598; ++ return 602; + } + } + else +@@ -2719,7 +2719,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000000000101xx01111xxx + fcvtps. */ +- return 596; ++ return 600; + } + else + { +@@ -2727,7 +2727,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000000000111xx01111xxx + fcvtzs. */ +- return 600; ++ return 604; + } + } + } +@@ -2737,7 +2737,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000000001xx1xx01111xxx + fcvtas. */ +- return 592; ++ return 596; + } + } + else +@@ -2748,7 +2748,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000000010xx1xx01111xxx + scvtf. */ +- return 590; ++ return 594; + } + else + { +@@ -2758,7 +2758,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0000000110x1xx01111xxx + fmov. */ +- return 594; ++ return 598; + } + else + { +@@ -2766,7 +2766,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0000000111x1xx01111xxx + fmov. */ +- return 602; ++ return 606; + } + } + } +@@ -2785,7 +2785,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000000100001xx01111xxx + fcvtnu. */ +- return 589; ++ return 593; + } + else + { +@@ -2793,7 +2793,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000000100011xx01111xxx + fcvtmu. */ +- return 599; ++ return 603; + } + } + else +@@ -2804,7 +2804,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000000100101xx01111xxx + fcvtpu. */ +- return 597; ++ return 601; + } + else + { +@@ -2812,7 +2812,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000000100111xx01111xxx + fcvtzu. */ +- return 601; ++ return 605; + } + } + } +@@ -2822,7 +2822,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000000101xx1xx01111xxx + fcvtau. */ +- return 593; ++ return 597; + } + } + else +@@ -2833,7 +2833,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000000110xx1xx01111xxx + ucvtf. */ +- return 591; ++ return 595; + } + else + { +@@ -2843,7 +2843,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0000001110x1xx01111xxx + fmov. */ +- return 595; ++ return 599; + } + else + { +@@ -2851,7 +2851,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0000001111x1xx01111xxx + fmov. */ +- return 603; ++ return 607; + } + } + } +@@ -3001,7 +3001,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000010000xx1xx01111xxx + fmov. */ +- return 610; ++ return 614; + } + else + { +@@ -3009,7 +3009,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000010001xx1xx01111xxx + frintn. */ +- return 615; ++ return 619; + } + } + else +@@ -3020,7 +3020,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000010100xx1xx01111xxx + fneg. */ +- return 612; ++ return 616; + } + else + { +@@ -3028,7 +3028,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000010101xx1xx01111xxx + frintm. */ +- return 617; ++ return 621; + } + } + } +@@ -3042,7 +3042,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000011000xx1xx01111xxx + fabs. */ +- return 611; ++ return 615; + } + else + { +@@ -3050,7 +3050,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000011001xx1xx01111xxx + frintp. */ +- return 616; ++ return 620; + } + } + else +@@ -3061,7 +3061,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000011100xx1xx01111xxx + fsqrt. */ +- return 613; ++ return 617; + } + else + { +@@ -3069,7 +3069,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000011101xx1xx01111xxx + frintz. */ +- return 618; ++ return 622; + } + } + } +@@ -3082,7 +3082,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx00001xx10xx1xx01111xxx + fcvt. */ +- return 614; ++ return 618; + } + else + { +@@ -3094,7 +3094,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000010011xx1xx01111xxx + frinta. */ +- return 619; ++ return 623; + } + else + { +@@ -3102,7 +3102,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000010111xx1xx01111xxx + frintx. */ +- return 620; ++ return 624; + } + } + else +@@ -3111,7 +3111,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx000011x11xx1xx01111xxx + frinti. */ +- return 621; ++ return 625; + } + } + } +@@ -3175,7 +3175,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxx00xxxxx000100xxxxx1xx01111xxx + fcmp. */ +- return 606; ++ return 610; + } + else + { +@@ -3183,7 +3183,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxx01xxxxx000100xxxxx1xx01111xxx + fcmpe. */ +- return 607; ++ return 611; + } + } + else +@@ -3194,7 +3194,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxx10xxxxx000100xxxxx1xx01111xxx + fcmp. */ +- return 608; ++ return 612; + } + else + { +@@ -3202,7 +3202,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxx11xxxxx000100xxxxx1xx01111xxx + fcmpe. */ +- return 609; ++ return 613; + } + } + } +@@ -3585,7 +3585,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx001xxxxxxxx1xx01111x0x + fmov. */ +- return 635; ++ return 639; + } + else + { +@@ -3597,7 +3597,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx00100xxxxxx1xx01111x1x + sqdmlal. */ +- return 339; ++ return 343; + } + else + { +@@ -3605,7 +3605,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx00101xxxxxx1xx01111x1x + sqdmull. */ +- return 341; ++ return 345; + } + } + else +@@ -3614,7 +3614,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0011xxxxxxx1xx01111x1x + sqdmlsl. */ +- return 340; ++ return 344; + } + } + } +@@ -3657,7 +3657,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx010000xxxxx1xx01111x0x + fmul. */ +- return 622; ++ return 626; + } + else + { +@@ -3665,7 +3665,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx010000xxxxx1xx01111x1x + sha1h. */ +- return 533; ++ return 537; + } + } + } +@@ -3733,7 +3733,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx010001xxxxx1xx0111100x + fnmul. */ +- return 630; ++ return 634; + } + else + { +@@ -3741,7 +3741,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx010001xxxxx1xx0111101x + cmgt. */ +- return 393; ++ return 397; + } + } + else +@@ -3750,7 +3750,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx010001xxxxx1xx011111xx + cmge. */ +- return 411; ++ return 415; + } + } + } +@@ -3788,7 +3788,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0100100xx1x1xx01110xxx + aese. */ +- return 529; ++ return 533; + } + } + else +@@ -3843,7 +3843,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx010010xxxxx1xx0111100x + fmax. */ +- return 626; ++ return 630; + } + else + { +@@ -3851,7 +3851,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx010010xxxxx1xx0111101x + sqxtn. */ +- return 397; ++ return 401; + } + } + else +@@ -3860,7 +3860,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx010010xxxxx1xx011111xx + uqxtn. */ +- return 415; ++ return 419; + } + } + } +@@ -3897,7 +3897,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0100110xxx01xx011110xx + fcmgt. */ +- return 402; ++ return 406; + } + else + { +@@ -3905,7 +3905,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0100110xxx01xx011111xx + fcmge. */ +- return 421; ++ return 425; + } + } + } +@@ -3927,7 +3927,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0100110xxx11x001111xxx + fmaxnmp. */ +- return 429; ++ return 433; + } + } + else +@@ -3946,7 +3946,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0100110xxx11x101111xxx + fminnmp. */ +- return 432; ++ return 436; + } + } + } +@@ -3982,7 +3982,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0100111xxxx1x0011110xx + fcvtas. */ +- return 400; ++ return 404; + } + else + { +@@ -3990,7 +3990,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0100111xxxx1x0011111xx + fcvtau. */ +- return 419; ++ return 423; + } + } + } +@@ -4096,7 +4096,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx010100xxxxx1xx0111100x + fadd. */ +- return 624; ++ return 628; + } + else + { +@@ -4104,7 +4104,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx010100xxxxx1xx0111101x + sha256su0. */ +- return 535; ++ return 539; + } + } + else +@@ -4113,7 +4113,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx010100xxxxx1xx011111xx + sqxtun. */ +- return 414; ++ return 418; + } + } + } +@@ -4137,7 +4137,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0101010xxx01xx01111xxx + cmlt. */ +- return 395; ++ return 399; + } + } + else +@@ -4193,7 +4193,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0101011xxx01x0011110xx + fcvtns. */ +- return 398; ++ return 402; + } + else + { +@@ -4201,7 +4201,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0101011xxx01x0011111xx + fcvtnu. */ +- return 417; ++ return 421; + } + } + } +@@ -4234,7 +4234,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0101011xxx01x1011110xx + fcvtps. */ +- return 405; ++ return 409; + } + else + { +@@ -4242,7 +4242,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0101011xxx01x1011111xx + fcvtpu. */ +- return 423; ++ return 427; + } + } + } +@@ -4302,7 +4302,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0101100xx1x1xx01110xxx + aesmc. */ +- return 531; ++ return 535; + } + } + else +@@ -4355,7 +4355,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx010110xxxxx1xx011110xx + fmaxnm. */ +- return 628; ++ return 632; + } + else + { +@@ -4363,7 +4363,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx010110xxxxx1xx011111xx + fcvtxn. */ +- return 416; ++ return 420; + } + } + } +@@ -4383,7 +4383,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx010111xxxxx1xx01111xxx + fcmlt. */ +- return 404; ++ return 408; + } + } + } +@@ -4413,7 +4413,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx011000xxxxx1xx01111x0x + fdiv. */ +- return 623; ++ return 627; + } + else + { +@@ -4421,7 +4421,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx011000xxxxx1xx01111x1x + sha1su1. */ +- return 534; ++ return 538; + } + } + } +@@ -4456,7 +4456,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0110010xxxx1xx011110xx + cmeq. */ +- return 394; ++ return 398; + } + else + { +@@ -4464,7 +4464,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0110010xxxx1xx011111xx + cmle. */ +- return 412; ++ return 416; + } + } + } +@@ -4553,7 +4553,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx011010xxx1x1xx01110xxx + aesd. */ +- return 530; ++ return 534; + } + } + else +@@ -4562,7 +4562,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx011010xxxxx1xx01111xxx + fmin. */ +- return 627; ++ return 631; + } + } + else +@@ -4598,7 +4598,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0110110xxx01xx011110xx + fcmeq. */ +- return 403; ++ return 407; + } + else + { +@@ -4606,7 +4606,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0110110xxx01xx011111xx + fcmle. */ +- return 422; ++ return 426; + } + } + } +@@ -4616,7 +4616,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0110110xxx11xx0111xxxx + faddp. */ +- return 430; ++ return 434; + } + } + else +@@ -4650,7 +4650,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0110111xxxx1x0011110xx + scvtf. */ +- return 401; ++ return 405; + } + else + { +@@ -4658,7 +4658,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0110111xxxx1x0011111xx + ucvtf. */ +- return 420; ++ return 424; + } + } + } +@@ -4691,7 +4691,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0110111xxxx1x1011110xx + frecpe. */ +- return 407; ++ return 411; + } + else + { +@@ -4699,7 +4699,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0110111xxxx1x1011111xx + frsqrte. */ +- return 425; ++ return 429; + } + } + } +@@ -4786,7 +4786,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx011100xxxxx1xx0111100x + fsub. */ +- return 625; ++ return 629; + } + else + { +@@ -4794,7 +4794,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx011100xxxxx1xx0111101x + suqadd. */ +- return 391; ++ return 395; + } + } + else +@@ -4803,7 +4803,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx011100xxxxx1xx011111xx + usqadd. */ +- return 409; ++ return 413; + } + } + } +@@ -4838,7 +4838,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0111010xxxx1xx011110xx + abs. */ +- return 396; ++ return 400; + } + else + { +@@ -4846,7 +4846,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0111010xxxx1xx011111xx + neg. */ +- return 413; ++ return 417; + } + } + } +@@ -4883,7 +4883,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0111011xxx01x0011110xx + fcvtms. */ +- return 399; ++ return 403; + } + else + { +@@ -4891,7 +4891,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0111011xxx01x0011111xx + fcvtmu. */ +- return 418; ++ return 422; + } + } + } +@@ -4924,7 +4924,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0111011xxx01x1011110xx + fcvtzs. */ +- return 406; ++ return 410; + } + else + { +@@ -4932,7 +4932,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0111011xxx01x1011111xx + fcvtzu. */ +- return 424; ++ return 428; + } + } + } +@@ -4953,7 +4953,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0111011xxx11xx01111xxx + addp. */ +- return 428; ++ return 432; + } + } + } +@@ -4992,7 +4992,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0111100xx1x1xx01110xxx + aesimc. */ +- return 532; ++ return 536; + } + } + else +@@ -5025,7 +5025,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx011110xxxxx1xx0111100x + fminnm. */ +- return 629; ++ return 633; + } + else + { +@@ -5033,7 +5033,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx011110xxxxx1xx0111101x + sqabs. */ +- return 392; ++ return 396; + } + } + else +@@ -5042,7 +5042,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx011110xxxxx1xx011111xx + sqneg. */ +- return 410; ++ return 414; + } + } + } +@@ -5087,7 +5087,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0111110xxx11x001111xxx + fmaxp. */ +- return 431; ++ return 435; + } + } + else +@@ -5106,7 +5106,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0111110xxx11x101111xxx + fminp. */ +- return 433; ++ return 437; + } + } + } +@@ -5127,7 +5127,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0111111xxxx1xx01111xxx + frecpx. */ +- return 408; ++ return 412; + } + } + } +@@ -5578,7 +5578,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxx0xxxxx10xxxxxxxxx1xx0111100x + fccmp. */ +- return 604; ++ return 608; + } + else + { +@@ -5586,7 +5586,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxx1xxxxx10xxxxxxxxx1xx0111100x + fccmpe. */ +- return 605; ++ return 609; + } + } + else +@@ -5601,7 +5601,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx10000xxxxxx1xx0111101x + add. */ +- return 447; ++ return 451; + } + else + { +@@ -5609,7 +5609,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx10001xxxxxx1xx0111101x + sshl. */ +- return 445; ++ return 449; + } + } + else +@@ -5618,7 +5618,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1001xxxxxxx1xx0111101x + fcmeq. */ +- return 440; ++ return 444; + } + } + else +@@ -5629,7 +5629,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1010xxxxxxx1xx0111101x + srshl. */ +- return 446; ++ return 450; + } + else + { +@@ -5639,7 +5639,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1011x0xxxxx1xx0111101x + cmgt. */ +- return 443; ++ return 447; + } + else + { +@@ -5647,7 +5647,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1011x1xxxxx1xx0111101x + sqdmulh. */ +- return 438; ++ return 442; + } + } + } +@@ -5665,7 +5665,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx10000xxxxxx1xx011111xx + sub. */ +- return 463; ++ return 467; + } + else + { +@@ -5673,7 +5673,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx10001xxxxxx1xx011111xx + ushl. */ +- return 461; ++ return 465; + } + } + else +@@ -5684,7 +5684,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1001xxxxxxx1x0011111xx + fcmge. */ +- return 454; ++ return 458; + } + else + { +@@ -5692,7 +5692,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1001xxxxxxx1x1011111xx + fcmgt. */ +- return 457; ++ return 461; + } + } + } +@@ -5706,7 +5706,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1010x0xxxxx1xx011111xx + urshl. */ +- return 462; ++ return 466; + } + else + { +@@ -5714,7 +5714,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1010x1xxxxx1xx011111xx + fabd. */ +- return 456; ++ return 460; + } + } + else +@@ -5725,7 +5725,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1011x0xxxxx1xx011111xx + cmhi. */ +- return 459; ++ return 463; + } + else + { +@@ -5733,7 +5733,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1011x1xxxxx1xx011111xx + sqrdmulh. */ +- return 453; ++ return 457; + } + } + } +@@ -6167,7 +6167,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx11xxxxxxxxx1xx0111100x + fcsel. */ +- return 636; ++ return 640; + } + else + { +@@ -6183,7 +6183,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx110000xxxxx1xx0111101x + sqadd. */ +- return 434; ++ return 438; + } + else + { +@@ -6191,7 +6191,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx110001xxxxx1xx0111101x + cmtst. */ +- return 448; ++ return 452; + } + } + else +@@ -6200,7 +6200,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx11001xxxxxx1xx0111101x + sqshl. */ +- return 436; ++ return 440; + } + } + else +@@ -6209,7 +6209,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1101xxxxxxx1xx0111101x + sqsub. */ +- return 435; ++ return 439; + } + } + else +@@ -6222,7 +6222,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1110x0xxxxx1xx0111101x + sqrshl. */ +- return 437; ++ return 441; + } + else + { +@@ -6230,7 +6230,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1110x1xxxxx1xx0111101x + fmulx. */ +- return 439; ++ return 443; + } + } + else +@@ -6241,7 +6241,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx11110xxxxxx1xx0111101x + cmge. */ +- return 444; ++ return 448; + } + else + { +@@ -6251,7 +6251,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx11111xxxxxx1x00111101x + frecps. */ +- return 441; ++ return 445; + } + else + { +@@ -6259,7 +6259,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx11111xxxxxx1x10111101x + frsqrts. */ +- return 442; ++ return 446; + } + } + } +@@ -6280,7 +6280,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx110000xxxxx1xx011111xx + uqadd. */ +- return 449; ++ return 453; + } + else + { +@@ -6288,7 +6288,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx110001xxxxx1xx011111xx + cmeq. */ +- return 464; ++ return 468; + } + } + else +@@ -6297,7 +6297,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx11001xxxxxx1xx011111xx + uqshl. */ +- return 451; ++ return 455; + } + } + else +@@ -6308,7 +6308,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx11010xxxxxx1xx011111xx + uqsub. */ +- return 450; ++ return 454; + } + else + { +@@ -6318,7 +6318,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx11011xxxxxx1x0011111xx + facge. */ +- return 455; ++ return 459; + } + else + { +@@ -6326,7 +6326,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx11011xxxxxx1x1011111xx + facgt. */ +- return 458; ++ return 462; + } + } + } +@@ -6339,7 +6339,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1110xxxxxxx1xx011111xx + uqrshl. */ +- return 452; ++ return 456; + } + else + { +@@ -6347,7 +6347,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1111xxxxxxx1xx011111xx + cmhs. */ +- return 460; ++ return 464; + } + } + } +@@ -6589,7 +6589,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx0xx1111100x + fmadd. */ +- return 631; ++ return 635; + } + else + { +@@ -6597,7 +6597,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx1xx1111100x + fnmadd. */ +- return 633; ++ return 637; + } + } + else +@@ -6612,7 +6612,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0xx000xxxxxxxx1111101x + fmla. */ +- return 347; ++ return 351; + } + else + { +@@ -6620,7 +6620,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0xx010xxxxxxxx1111101x + fmls. */ +- return 348; ++ return 352; + } + } + else +@@ -6631,7 +6631,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0xx100xxxxxxxx1111101x + sqdmlal. */ +- return 342; ++ return 346; + } + else + { +@@ -6639,7 +6639,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0xx110xxxxxxxx1111101x + sqdmlsl. */ +- return 343; ++ return 347; + } + } + } +@@ -6653,7 +6653,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1x00x0xxxxxxxx1111101x + sshr. */ +- return 465; ++ return 469; + } + else + { +@@ -6661,7 +6661,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1x01x0xxxxxxxx1111101x + srshr. */ +- return 467; ++ return 471; + } + } + else +@@ -6674,7 +6674,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1x1000xxxxxxxx1111101x + ssra. */ +- return 466; ++ return 470; + } + else + { +@@ -6682,7 +6682,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1x1010xxxxxxxx1111101x + shl. */ +- return 469; ++ return 473; + } + } + else +@@ -6693,7 +6693,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1x1100xxxxxxxx1111101x + srsra. */ +- return 468; ++ return 472; + } + else + { +@@ -6701,7 +6701,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1x1110xxxxxxxx1111101x + sqshl. */ +- return 470; ++ return 474; + } + } + } +@@ -6720,7 +6720,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxx0000xxxxxxxx111111xx + ushr. */ +- return 475; ++ return 479; + } + else + { +@@ -6728,7 +6728,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxx0010xxxxxxxx111111xx + sri. */ +- return 479; ++ return 483; + } + } + else +@@ -6739,7 +6739,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxx0100xxxxxxxx111111xx + urshr. */ +- return 477; ++ return 481; + } + else + { +@@ -6747,7 +6747,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxx0110xxxxxxxx111111xx + sqshlu. */ +- return 481; ++ return 485; + } + } + } +@@ -6761,7 +6761,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxx1000xxxxxxxx111111xx + usra. */ +- return 476; ++ return 480; + } + else + { +@@ -6769,7 +6769,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxx1010xxxxxxxx111111xx + sli. */ +- return 480; ++ return 484; + } + } + else +@@ -6780,7 +6780,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxx1100xxxxxxxx111111xx + ursra. */ +- return 478; ++ return 482; + } + else + { +@@ -6788,7 +6788,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxx1110xxxxxxxx111111xx + uqshl. */ +- return 482; ++ return 486; + } + } + } +@@ -7057,7 +7057,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx110xx1xxxxxxxx1111010x + sqrshrun. */ +- return 327; ++ return 329; + } + else + { +@@ -7065,7 +7065,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx110xx1xxxxxxxx1111011x + sqrshrun2. */ +- return 328; ++ return 330; + } + } + } +@@ -7100,7 +7100,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1110x1xxxxxxxx1111010x + uqrshrn. */ +- return 331; ++ return 333; + } + else + { +@@ -7108,7 +7108,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1110x1xxxxxxxx1111011x + uqrshrn2. */ +- return 332; ++ return 334; + } + } + } +@@ -7120,7 +7120,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1111x1xxxxxxxx111100xx + fcvtzs. */ +- return 316; ++ return 318; + } + else + { +@@ -7128,7 +7128,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1111x1xxxxxxxx111101xx + fcvtzu. */ +- return 336; ++ return 340; + } + } + } +@@ -7147,7 +7147,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx1xxxxx0xx1111100x + fmsub. */ +- return 632; ++ return 636; + } + else + { +@@ -7155,7 +7155,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx1xxxxx1xx1111100x + fnmsub. */ +- return 634; ++ return 638; + } + } + else +@@ -7168,7 +7168,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0x0xx1xxxxxxxx1111101x + sqdmulh. */ +- return 345; ++ return 349; + } + else + { +@@ -7180,7 +7180,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0x1001xxxxxxxx1111101x + fmul. */ +- return 349; ++ return 353; + } + else + { +@@ -7188,7 +7188,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0x1011xxxxxxxx1111101x + sqrdmulh. */ +- return 346; ++ return 350; + } + } + else +@@ -7197,7 +7197,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0x11x1xxxxxxxx1111101x + sqdmull. */ +- return 344; ++ return 348; + } + } + } +@@ -7211,7 +7211,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx100xx1xxxxxxxx1111101x + scvtf. */ +- return 473; ++ return 477; + } + else + { +@@ -7219,7 +7219,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx101xx1xxxxxxxx1111101x + sqshrn. */ +- return 471; ++ return 475; + } + } + else +@@ -7230,7 +7230,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx11x0x1xxxxxxxx1111101x + sqrshrn. */ +- return 472; ++ return 476; + } + else + { +@@ -7238,7 +7238,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx11x1x1xxxxxxxx1111101x + fcvtzs. */ +- return 474; ++ return 478; + } + } + } +@@ -7252,7 +7252,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx0xxxx1xxxxxxxx111111xx + fmulx. */ +- return 350; ++ return 354; + } + else + { +@@ -7266,7 +7266,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1000x1xxxxxxxx111111xx + sqshrun. */ +- return 483; ++ return 487; + } + else + { +@@ -7274,7 +7274,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1001x1xxxxxxxx111111xx + ucvtf. */ +- return 487; ++ return 491; + } + } + else +@@ -7283,7 +7283,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx101xx1xxxxxxxx111111xx + uqshrn. */ +- return 485; ++ return 489; + } + } + else +@@ -7294,7 +7294,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx110xx1xxxxxxxx111111xx + sqrshrun. */ +- return 484; ++ return 488; + } + else + { +@@ -7304,7 +7304,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1110x1xxxxxxxx111111xx + uqrshrn. */ +- return 486; ++ return 490; + } + else + { +@@ -7312,7 +7312,7 @@ aarch64_opcode_lookup_1 (uint32_t word) + 10987654321098765432109876543210 + xxxxxxxxxx1111x1xxxxxxxx111111xx + fcvtzu. */ +- return 488; ++ return 492; + } + } + } +@@ -7343,81 +7343,81 @@ aarch64_find_next_opcode (const aarch64_opcode *opcode) + int value; + switch (key) + { +- case 727: value = 731; break; /* stnp --> stp. */ +- case 731: return NULL; /* stp --> NULL. */ +- case 728: value = 732; break; /* ldnp --> ldp. */ +- case 732: return NULL; /* ldp --> NULL. */ +- case 351: value = 352; break; /* st4 --> st1. */ +- case 352: value = 353; break; /* st1 --> st2. */ +- case 353: value = 354; break; /* st2 --> st3. */ +- case 354: return NULL; /* st3 --> NULL. */ +- case 359: value = 360; break; /* st4 --> st1. */ +- case 360: value = 361; break; /* st1 --> st2. */ +- case 361: value = 362; break; /* st2 --> st3. */ +- case 362: return NULL; /* st3 --> NULL. */ +- case 355: value = 356; break; /* ld4 --> ld1. */ +- case 356: value = 357; break; /* ld1 --> ld2. */ +- case 357: value = 358; break; /* ld2 --> ld3. */ +- case 358: return NULL; /* ld3 --> NULL. */ +- case 371: value = 373; break; /* ld1 --> ld1r. */ +- case 373: return NULL; /* ld1r --> NULL. */ +- case 375: value = 377; break; /* ld2 --> ld2r. */ +- case 377: return NULL; /* ld2r --> NULL. */ +- case 372: value = 374; break; /* ld3 --> ld3r. */ +- case 374: return NULL; /* ld3r --> NULL. */ +- case 376: value = 378; break; /* ld4 --> ld4r. */ +- case 378: return NULL; /* ld4r --> NULL. */ +- case 363: value = 364; break; /* ld4 --> ld1. */ +- case 364: value = 365; break; /* ld1 --> ld2. */ +- case 365: value = 366; break; /* ld2 --> ld3. */ +- case 366: return NULL; /* ld3 --> NULL. */ +- case 383: value = 385; break; /* ld1 --> ld1r. */ +- case 385: return NULL; /* ld1r --> NULL. */ +- case 384: value = 386; break; /* ld3 --> ld3r. */ +- case 386: return NULL; /* ld3r --> NULL. */ +- case 387: value = 389; break; /* ld2 --> ld2r. */ +- case 389: return NULL; /* ld2r --> NULL. */ +- case 388: value = 390; break; /* ld4 --> ld4r. */ +- case 390: return NULL; /* ld4r --> NULL. */ ++ case 731: value = 735; break; /* stnp --> stp. */ ++ case 735: return NULL; /* stp --> NULL. */ ++ case 732: value = 736; break; /* ldnp --> ldp. */ ++ case 736: return NULL; /* ldp --> NULL. */ ++ case 355: value = 356; break; /* st4 --> st1. */ ++ case 356: value = 357; break; /* st1 --> st2. */ ++ case 357: value = 358; break; /* st2 --> st3. */ ++ case 358: return NULL; /* st3 --> NULL. */ ++ case 363: value = 364; break; /* st4 --> st1. */ ++ case 364: value = 365; break; /* st1 --> st2. */ ++ case 365: value = 366; break; /* st2 --> st3. */ ++ case 366: return NULL; /* st3 --> NULL. */ ++ case 359: value = 360; break; /* ld4 --> ld1. */ ++ case 360: value = 361; break; /* ld1 --> ld2. */ ++ case 361: value = 362; break; /* ld2 --> ld3. */ ++ case 362: return NULL; /* ld3 --> NULL. */ ++ case 375: value = 377; break; /* ld1 --> ld1r. */ ++ case 377: return NULL; /* ld1r --> NULL. */ ++ case 379: value = 381; break; /* ld2 --> ld2r. */ ++ case 381: return NULL; /* ld2r --> NULL. */ ++ case 376: value = 378; break; /* ld3 --> ld3r. */ ++ case 378: return NULL; /* ld3r --> NULL. */ ++ case 380: value = 382; break; /* ld4 --> ld4r. */ ++ case 382: return NULL; /* ld4r --> NULL. */ ++ case 367: value = 368; break; /* ld4 --> ld1. */ ++ case 368: value = 369; break; /* ld1 --> ld2. */ ++ case 369: value = 370; break; /* ld2 --> ld3. */ ++ case 370: return NULL; /* ld3 --> NULL. */ ++ case 387: value = 389; break; /* ld1 --> ld1r. */ ++ case 389: return NULL; /* ld1r --> NULL. */ ++ case 388: value = 390; break; /* ld3 --> ld3r. */ ++ case 390: return NULL; /* ld3r --> NULL. */ ++ case 391: value = 393; break; /* ld2 --> ld2r. */ ++ case 393: return NULL; /* ld2r --> NULL. */ ++ case 392: value = 394; break; /* ld4 --> ld4r. */ ++ case 394: return NULL; /* ld4r --> NULL. */ + case 120: value = 299; break; /* movi --> sshr. */ + case 299: value = 301; break; /* sshr --> srshr. */ + case 301: return NULL; /* srshr --> NULL. */ +- case 127: value = 317; break; /* mvni --> ushr. */ +- case 317: value = 319; break; /* ushr --> urshr. */ +- case 319: value = 321; break; /* urshr --> sri. */ +- case 321: value = 323; break; /* sri --> sqshlu. */ +- case 323: return NULL; /* sqshlu --> NULL. */ ++ case 127: value = 319; break; /* mvni --> ushr. */ ++ case 319: value = 321; break; /* ushr --> urshr. */ ++ case 321: value = 323; break; /* urshr --> sri. */ ++ case 323: value = 325; break; /* sri --> sqshlu. */ ++ case 325: return NULL; /* sqshlu --> NULL. */ + case 121: value = 300; break; /* orr --> ssra. */ + case 300: value = 302; break; /* ssra --> srsra. */ + case 302: value = 303; break; /* srsra --> shl. */ + case 303: value = 304; break; /* shl --> sqshl. */ + case 304: return NULL; /* sqshl --> NULL. */ +- case 128: value = 318; break; /* bic --> usra. */ +- case 318: value = 320; break; /* usra --> ursra. */ +- case 320: value = 322; break; /* ursra --> sli. */ +- case 322: value = 324; break; /* sli --> uqshl. */ +- case 324: return NULL; /* uqshl --> NULL. */ ++ case 128: value = 320; break; /* bic --> usra. */ ++ case 320: value = 322; break; /* usra --> ursra. */ ++ case 322: value = 324; break; /* ursra --> sli. */ ++ case 324: value = 326; break; /* sli --> uqshl. */ ++ case 326: return NULL; /* uqshl --> NULL. */ + case 122: value = 305; break; /* movi --> shrn. */ + case 305: value = 306; break; /* shrn --> shrn2. */ + case 306: value = 313; break; /* shrn2 --> sshll. */ +- case 313: value = 314; break; /* sshll --> sshll2. */ +- case 314: return NULL; /* sshll2 --> NULL. */ +- case 129: value = 325; break; /* mvni --> sqshrun. */ +- case 325: value = 326; break; /* sqshrun --> sqshrun2. */ +- case 326: value = 333; break; /* sqshrun2 --> ushll. */ +- case 333: value = 334; break; /* ushll --> ushll2. */ +- case 334: return NULL; /* ushll2 --> NULL. */ ++ case 313: value = 315; break; /* sshll --> sshll2. */ ++ case 315: return NULL; /* sshll2 --> NULL. */ ++ case 129: value = 327; break; /* mvni --> sqshrun. */ ++ case 327: value = 328; break; /* sqshrun --> sqshrun2. */ ++ case 328: value = 335; break; /* sqshrun2 --> ushll. */ ++ case 335: value = 337; break; /* ushll --> ushll2. */ ++ case 337: return NULL; /* ushll2 --> NULL. */ + case 123: value = 309; break; /* orr --> sqshrn. */ + case 309: value = 310; break; /* sqshrn --> sqshrn2. */ + case 310: return NULL; /* sqshrn2 --> NULL. */ +- case 130: value = 329; break; /* bic --> uqshrn. */ +- case 329: value = 330; break; /* uqshrn --> uqshrn2. */ +- case 330: return NULL; /* uqshrn2 --> NULL. */ +- case 125: value = 315; break; /* movi --> scvtf. */ +- case 315: return NULL; /* scvtf --> NULL. */ ++ case 130: value = 331; break; /* bic --> uqshrn. */ ++ case 331: value = 332; break; /* uqshrn --> uqshrn2. */ ++ case 332: return NULL; /* uqshrn2 --> NULL. */ ++ case 125: value = 317; break; /* movi --> scvtf. */ ++ case 317: return NULL; /* scvtf --> NULL. */ + case 132: value = 133; break; /* movi --> movi. */ +- case 133: value = 335; break; /* movi --> ucvtf. */ +- case 335: return NULL; /* ucvtf --> NULL. */ ++ case 133: value = 339; break; /* movi --> ucvtf. */ ++ case 339: return NULL; /* ucvtf --> NULL. */ + default: return NULL; + } + +@@ -7447,46 +7447,50 @@ aarch64_find_alias_opcode (const aarch64_opcode *opcode) + case 142: value = 143; break; /* ins --> mov. */ + case 203: value = 204; break; /* not --> mvn. */ + case 258: value = 259; break; /* orr --> mov. */ +- case 426: value = 427; break; /* dup --> mov. */ +- case 489: value = 494; break; /* sbfm --> sxtw. */ +- case 496: value = 498; break; /* bfm --> bfxil. */ +- case 499: value = 503; break; /* ubfm --> uxth. */ +- case 521: value = 523; break; /* csinc --> cset. */ +- case 524: value = 526; break; /* csinv --> csetm. */ +- case 527: value = 528; break; /* csneg --> cneg. */ +- case 552: value = 553; break; /* lslv --> lsl. */ +- case 554: value = 555; break; /* lsrv --> lsr. */ +- case 556: value = 557; break; /* asrv --> asr. */ +- case 558: value = 559; break; /* rorv --> ror. */ +- case 560: value = 561; break; /* madd --> mul. */ +- case 562: value = 563; break; /* msub --> mneg. */ +- case 564: value = 565; break; /* smaddl --> smull. */ +- case 566: value = 567; break; /* smsubl --> smnegl. */ +- case 569: value = 570; break; /* umaddl --> umull. */ +- case 571: value = 572; break; /* umsubl --> umnegl. */ +- case 582: value = 583; break; /* extr --> ror. */ +- case 681: value = 683; break; /* sturb --> strb. */ +- case 682: value = 684; break; /* ldurb --> ldrb. */ +- case 685: value = 686; break; /* ldursb --> ldrsb. */ +- case 687: value = 689; break; /* stur --> str. */ +- case 688: value = 690; break; /* ldur --> ldr. */ +- case 691: value = 693; break; /* sturh --> strh. */ +- case 692: value = 694; break; /* ldurh --> ldrh. */ +- case 695: value = 696; break; /* ldursh --> ldrsh. */ +- case 697: value = 699; break; /* stur --> str. */ +- case 698: value = 700; break; /* ldur --> ldr. */ +- case 701: value = 702; break; /* ldursw --> ldrsw. */ +- case 703: value = 704; break; /* prfum --> prfm. */ +- case 745: value = 746; break; /* and --> bic. */ +- case 747: value = 748; break; /* orr --> mov. */ +- case 750: value = 751; break; /* ands --> tst. */ +- case 754: value = 756; break; /* orr --> uxtw. */ +- case 757: value = 758; break; /* orn --> mvn. */ +- case 761: value = 762; break; /* ands --> tst. */ +- case 764: value = 765; break; /* movn --> mov. */ +- case 766: value = 767; break; /* movz --> mov. */ +- case 772: value = 778; break; /* hint --> sevl. */ +- case 783: value = 787; break; /* sys --> tlbi. */ ++ case 313: value = 314; break; /* sshll --> sxtl. */ ++ case 315: value = 316; break; /* sshll2 --> sxtl2. */ ++ case 335: value = 336; break; /* ushll --> uxtl. */ ++ case 337: value = 338; break; /* ushll2 --> uxtl2. */ ++ case 430: value = 431; break; /* dup --> mov. */ ++ case 493: value = 498; break; /* sbfm --> sxtw. */ ++ case 500: value = 502; break; /* bfm --> bfxil. */ ++ case 503: value = 507; break; /* ubfm --> uxth. */ ++ case 525: value = 527; break; /* csinc --> cset. */ ++ case 528: value = 530; break; /* csinv --> csetm. */ ++ case 531: value = 532; break; /* csneg --> cneg. */ ++ case 556: value = 557; break; /* lslv --> lsl. */ ++ case 558: value = 559; break; /* lsrv --> lsr. */ ++ case 560: value = 561; break; /* asrv --> asr. */ ++ case 562: value = 563; break; /* rorv --> ror. */ ++ case 564: value = 565; break; /* madd --> mul. */ ++ case 566: value = 567; break; /* msub --> mneg. */ ++ case 568: value = 569; break; /* smaddl --> smull. */ ++ case 570: value = 571; break; /* smsubl --> smnegl. */ ++ case 573: value = 574; break; /* umaddl --> umull. */ ++ case 575: value = 576; break; /* umsubl --> umnegl. */ ++ case 586: value = 587; break; /* extr --> ror. */ ++ case 685: value = 687; break; /* sturb --> strb. */ ++ case 686: value = 688; break; /* ldurb --> ldrb. */ ++ case 689: value = 690; break; /* ldursb --> ldrsb. */ ++ case 691: value = 693; break; /* stur --> str. */ ++ case 692: value = 694; break; /* ldur --> ldr. */ ++ case 695: value = 697; break; /* sturh --> strh. */ ++ case 696: value = 698; break; /* ldurh --> ldrh. */ ++ case 699: value = 700; break; /* ldursh --> ldrsh. */ ++ case 701: value = 703; break; /* stur --> str. */ ++ case 702: value = 704; break; /* ldur --> ldr. */ ++ case 705: value = 706; break; /* ldursw --> ldrsw. */ ++ case 707: value = 708; break; /* prfum --> prfm. */ ++ case 749: value = 750; break; /* and --> bic. */ ++ case 751: value = 752; break; /* orr --> mov. */ ++ case 754: value = 755; break; /* ands --> tst. */ ++ case 758: value = 760; break; /* orr --> uxtw. */ ++ case 761: value = 762; break; /* orn --> mvn. */ ++ case 765: value = 766; break; /* ands --> tst. */ ++ case 768: value = 769; break; /* movn --> mov. */ ++ case 770: value = 771; break; /* movz --> mov. */ ++ case 776: value = 782; break; /* hint --> sevl. */ ++ case 787: value = 791; break; /* sys --> tlbi. */ + default: return NULL; + } + +@@ -7502,28 +7506,28 @@ aarch64_find_next_alias_opcode (const aarch64_opcode *opcode) + switch (key) + { + case 26: value = 25; break; /* negs --> cmp. */ +- case 494: value = 493; break; /* sxtw --> sxth. */ +- case 493: value = 492; break; /* sxth --> sxtb. */ +- case 492: value = 495; break; /* sxtb --> asr. */ +- case 495: value = 491; break; /* asr --> sbfx. */ +- case 491: value = 490; break; /* sbfx --> sbfiz. */ +- case 498: value = 497; break; /* bfxil --> bfi. */ +- case 503: value = 502; break; /* uxth --> uxtb. */ +- case 502: value = 505; break; /* uxtb --> lsr. */ +- case 505: value = 504; break; /* lsr --> lsl. */ +- case 504: value = 501; break; /* lsl --> ubfx. */ +- case 501: value = 500; break; /* ubfx --> ubfiz. */ +- case 523: value = 522; break; /* cset --> cinc. */ +- case 526: value = 525; break; /* csetm --> cinv. */ +- case 756: value = 755; break; /* uxtw --> mov. */ +- case 778: value = 777; break; /* sevl --> sev. */ +- case 777: value = 776; break; /* sev --> wfi. */ +- case 776: value = 775; break; /* wfi --> wfe. */ +- case 775: value = 774; break; /* wfe --> yield. */ +- case 774: value = 773; break; /* yield --> nop. */ +- case 787: value = 786; break; /* tlbi --> ic. */ +- case 786: value = 785; break; /* ic --> dc. */ +- case 785: value = 784; break; /* dc --> at. */ ++ case 498: value = 497; break; /* sxtw --> sxth. */ ++ case 497: value = 496; break; /* sxth --> sxtb. */ ++ case 496: value = 499; break; /* sxtb --> asr. */ ++ case 499: value = 495; break; /* asr --> sbfx. */ ++ case 495: value = 494; break; /* sbfx --> sbfiz. */ ++ case 502: value = 501; break; /* bfxil --> bfi. */ ++ case 507: value = 506; break; /* uxth --> uxtb. */ ++ case 506: value = 509; break; /* uxtb --> lsr. */ ++ case 509: value = 508; break; /* lsr --> lsl. */ ++ case 508: value = 505; break; /* lsl --> ubfx. */ ++ case 505: value = 504; break; /* ubfx --> ubfiz. */ ++ case 527: value = 526; break; /* cset --> cinc. */ ++ case 530: value = 529; break; /* csetm --> cinv. */ ++ case 760: value = 759; break; /* uxtw --> mov. */ ++ case 782: value = 781; break; /* sevl --> sev. */ ++ case 781: value = 780; break; /* sev --> wfi. */ ++ case 780: value = 779; break; /* wfi --> wfe. */ ++ case 779: value = 778; break; /* wfe --> yield. */ ++ case 778: value = 777; break; /* yield --> nop. */ ++ case 791: value = 790; break; /* tlbi --> ic. */ ++ case 790: value = 789; break; /* ic --> dc. */ ++ case 789: value = 788; break; /* dc --> at. */ + default: return NULL; + } + +diff --git a/opcodes/aarch64-dis.c b/opcodes/aarch64-dis.c +index d6bfc9d..fb3981c 100644 +--- a/opcodes/aarch64-dis.c ++++ b/opcodes/aarch64-dis.c +@@ -1,5 +1,5 @@ + /* aarch64-dis.c -- AArch64 disassembler. +- Copyright 2009, 2010, 2011, 2012 Free Software Foundation, Inc. ++ Copyright 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. + Contributed by ARM Ltd. + + This file is part of the GNU opcodes library. +@@ -1473,6 +1473,20 @@ convert_extr_to_ror (aarch64_inst *inst) + return 0; + } + ++/* UXTL ., . ++ is equivalent to: ++ USHLL ., ., #0. */ ++static int ++convert_shll_to_xtl (aarch64_inst *inst) ++{ ++ if (inst->operands[2].imm.value == 0) ++ { ++ inst->operands[2].type = AARCH64_OPND_NIL; ++ return 1; ++ } ++ return 0; ++} ++ + /* Convert + UBFM , , #, #63. + to +@@ -1726,6 +1740,11 @@ convert_to_alias (aarch64_inst *inst, const aarch64_opcode *alias) + return convert_movebitmask_to_mov (inst); + case OP_ROR_IMM: + return convert_extr_to_ror (inst); ++ case OP_SXTL: ++ case OP_SXTL2: ++ case OP_UXTL: ++ case OP_UXTL2: ++ return convert_shll_to_xtl (inst); + default: + return 0; + } +diff --git a/opcodes/aarch64-gen.c b/opcodes/aarch64-gen.c +index b087236..b329cb6 100644 +--- a/opcodes/aarch64-gen.c ++++ b/opcodes/aarch64-gen.c +@@ -1,6 +1,6 @@ + /* aarch64-gen.c -- Generate tables and routines for opcode lookup and + instruction encoding and decoding. +- Copyright 2012 Free Software Foundation, Inc. ++ Copyright 2012, 2013 Free Software Foundation, Inc. + Contributed by ARM Ltd. + + This file is part of the GNU opcodes library. +@@ -1242,7 +1242,7 @@ main (int argc, char **argv) + print_divide_result (decoder_tree); + + printf ("/* This file is automatically generated by aarch64-gen. Do not edit! */\n"); +- printf ("/* Copyright 2012 Free Software Foundation, Inc.\n\ ++ printf ("/* Copyright 2012, 2013 Free Software Foundation, Inc.\n\ + Contributed by ARM Ltd.\n\ + \n\ + This file is part of the GNU opcodes library.\n\ +diff --git a/opcodes/aarch64-opc-2.c b/opcodes/aarch64-opc-2.c +index 68681f6..58e20ab 100644 +--- a/opcodes/aarch64-opc-2.c ++++ b/opcodes/aarch64-opc-2.c +@@ -1,5 +1,5 @@ + /* This file is automatically generated by aarch64-gen. Do not edit! */ +-/* Copyright 2012 Free Software Foundation, Inc. ++/* Copyright 2012, 2013 Free Software Foundation, Inc. + Contributed by ARM Ltd. + + This file is part of the GNU opcodes library. +@@ -119,70 +119,74 @@ const struct aarch64_operand aarch64_operands[] = + static const unsigned op_enum_table [] = + { + 0, +- 648, +- 649, +- 650, ++ 652, + 653, + 654, +- 655, +- 656, + 657, +- 651, +- 652, + 658, + 659, +- 681, +- 682, ++ 660, ++ 661, ++ 655, ++ 656, ++ 662, ++ 663, + 685, +- 691, +- 692, ++ 686, ++ 689, + 695, +- 697, +- 698, +- 687, +- 688, ++ 696, ++ 699, + 701, +- 703, +- 741, +- 742, +- 743, +- 744, ++ 702, ++ 691, ++ 692, ++ 705, ++ 707, ++ 745, ++ 746, ++ 747, ++ 748, + 12, +- 506, +- 507, +- 764, +- 766, ++ 510, ++ 511, + 768, +- 748, +- 767, +- 765, ++ 770, ++ 772, ++ 752, ++ 771, ++ 769, + 259, +- 495, ++ 499, ++ 509, ++ 508, ++ 750, + 505, +- 504, +- 746, +- 501, +- 498, +- 491, +- 490, +- 497, +- 500, + 502, +- 503, +- 756, ++ 495, ++ 494, ++ 501, ++ 504, ++ 506, ++ 507, ++ 760, + 125, +- 522, +- 525, +- 528, +- 523, + 526, +- 614, ++ 529, ++ 532, ++ 527, ++ 530, ++ 618, + 160, + 161, + 162, + 163, +- 416, +- 583, ++ 420, ++ 587, ++ 314, ++ 316, ++ 336, ++ 338, + }; + + /* Given the opcode enumerator OP, return the pointer to the corresponding +diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c +index 68572f8..990ed3e 100644 +--- a/opcodes/aarch64-opc.c ++++ b/opcodes/aarch64-opc.c +@@ -1,5 +1,5 @@ + /* aarch64-opc.c -- AArch64 opcode support. +- Copyright 2009, 2010, 2011, 2012 Free Software Foundation, Inc. ++ Copyright 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. + Contributed by ARM Ltd. + + This file is part of the GNU opcodes library. +@@ -334,10 +334,10 @@ const struct aarch64_name_value_pair aarch64_barrier_options[16] = + { "sy", 0xf }, + }; + +-/* op -> op: load = 0 store = 1 ++/* op -> op: load = 0 instruction = 1 store = 2 + l -> level: 1-3 + t -> temporal: temporal (retained) = 0 non-temporal (streaming) = 1 */ +-#define B(op,l,t) ((((op) * 2) << 3) | (((l) - 1) << 1) | (t)) ++#define B(op,l,t) (((op) << 3) | (((l) - 1) << 1) | (t)) + const struct aarch64_name_value_pair aarch64_prfops[32] = + { + { "pldl1keep", B(0, 1, 0) }, +@@ -348,20 +348,20 @@ const struct aarch64_name_value_pair aarch64_prfops[32] = + { "pldl3strm", B(0, 3, 1) }, + { "#0x06", 0x06 }, + { "#0x07", 0x07 }, +- { "#0x08", 0x08 }, +- { "#0x09", 0x09 }, +- { "#0x0a", 0x0a }, +- { "#0x0b", 0x0b }, +- { "#0x0c", 0x0c }, +- { "#0x0d", 0x0d }, ++ { "plil1keep", B(1, 1, 0) }, ++ { "plil1strm", B(1, 1, 1) }, ++ { "plil2keep", B(1, 2, 0) }, ++ { "plil2strm", B(1, 2, 1) }, ++ { "plil3keep", B(1, 3, 0) }, ++ { "plil3strm", B(1, 3, 1) }, + { "#0x0e", 0x0e }, + { "#0x0f", 0x0f }, +- { "pstl1keep", B(1, 1, 0) }, +- { "pstl1strm", B(1, 1, 1) }, +- { "pstl2keep", B(1, 2, 0) }, +- { "pstl2strm", B(1, 2, 1) }, +- { "pstl3keep", B(1, 3, 0) }, +- { "pstl3strm", B(1, 3, 1) }, ++ { "pstl1keep", B(2, 1, 0) }, ++ { "pstl1strm", B(2, 1, 1) }, ++ { "pstl2keep", B(2, 2, 0) }, ++ { "pstl2strm", B(2, 2, 1) }, ++ { "pstl3keep", B(2, 3, 0) }, ++ { "pstl3strm", B(2, 3, 1) }, + { "#0x16", 0x16 }, + { "#0x17", 0x17 }, + { "#0x18", 0x18 }, +@@ -1426,7 +1426,7 @@ operand_general_constraint_met_p (const aarch64_opnd_info *opnds, int idx, + 0, 4095 * size); + return 0; + } +- if (!value_aligned_p (opnd->shifter.amount, size)) ++ if (!value_aligned_p (opnd->addr.offset.imm, size)) + { + set_unaligned_error (mismatch_detail, idx, size); + return 0; +@@ -2433,10 +2433,26 @@ aarch64_print_operand (char *buf, size_t size, bfd_vma pc, + case AARCH64_OPND_IMMR: + case AARCH64_OPND_IMMS: + case AARCH64_OPND_FBITS: +- case AARCH64_OPND_IMM_MOV: + snprintf (buf, size, "#%" PRIi64, opnd->imm.value); + break; + ++ case AARCH64_OPND_IMM_MOV: ++ switch (aarch64_get_qualifier_esize (opnds[0].qualifier)) ++ { ++ case 4: /* e.g. MOV Wd, #. */ ++ { ++ int imm32 = opnd->imm.value; ++ snprintf (buf, size, "#0x%-20x\t// #%d", imm32, imm32); ++ } ++ break; ++ case 8: /* e.g. MOV Xd, #. */ ++ snprintf (buf, size, "#0x%-20" PRIx64 "\t// #%" PRIi64, ++ opnd->imm.value, opnd->imm.value); ++ break; ++ default: assert (0); ++ } ++ break; ++ + case AARCH64_OPND_FPIMM0: + snprintf (buf, size, "#0.0"); + break; +@@ -2771,6 +2787,9 @@ const struct aarch64_name_value_pair aarch64_sys_regs [] = + { "rvbar_el1", CPENC(3,0,C12,C0,1) }, /* RO */ + { "rvbar_el2", CPENC(3,4,C12,C0,1) }, /* RO */ + { "rvbar_el3", CPENC(3,6,C12,C0,1) }, /* RO */ ++ { "rmr_el1", CPENC(3,0,C12,C0,2) }, ++ { "rmr_el2", CPENC(3,4,C12,C0,2) }, ++ { "rmr_el3", CPENC(3,6,C12,C0,2) }, + { "isr_el1", CPENC(3,0,C12,C1,0) }, /* RO */ + { "contextidr_el1", CPENC(3,0,C13,C0,1) }, + { "tpidr_el0", CPENC(3,3,C13,C0,2) }, +@@ -2962,10 +2981,6 @@ const struct aarch64_name_value_pair aarch64_sys_regs [] = + { "pmevtyper29_el0", CPENC(3,3,C14,C15,5) }, + { "pmevtyper30_el0", CPENC(3,3,C14,C15,6) }, + { "pmccfiltr_el0", CPENC(3,3,C14,C15,7) }, +- +- { "daifset", CPENC(0,3,C4,C0,6) }, +- { "daifclr", CPENC(0,3,C4,C0,7) }, +- + { 0, CPENC(0,0,0,0,0) }, + }; + +diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h +index d360b14..495bbe3 100644 +--- a/opcodes/aarch64-tbl.h ++++ b/opcodes/aarch64-tbl.h +@@ -1,6 +1,6 @@ + /* aarch64-tbl.h -- AArch64 opcode description table and instruction + operand description table. +- Copyright 2012 Free Software Foundation, Inc. ++ Copyright 2012, 2013 Free Software Foundation, Inc. + + This file is part of the GNU opcodes library. + +@@ -1534,8 +1534,10 @@ struct aarch64_opcode aarch64_opcode_table[] = + {"sqshrn2", 0x4f009400, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN2, 0}, + {"sqrshrn", 0xf009c00, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN, 0}, + {"sqrshrn2", 0x4f009c00, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN2, 0}, +- {"sshll", 0xf00a400, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFTL, 0}, +- {"sshll2", 0x4f00a400, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFTL2, 0}, ++ {"sshll", 0xf00a400, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFTL, F_HAS_ALIAS}, ++ {"sxtl", 0xf00a400, 0xff87fc00, asimdshf, OP_SXTL, SIMD, OP2 (Vd, Vn), QL_V2LONGBHS, F_ALIAS | F_CONV}, ++ {"sshll2", 0x4f00a400, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFTL2, F_HAS_ALIAS}, ++ {"sxtl2", 0x4f00a400, 0xff87fc00, asimdshf, OP_SXTL2, SIMD, OP2 (Vd, Vn), QL_V2LONGBHS2, F_ALIAS | F_CONV}, + {"scvtf", 0xf00e400, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT_SD, 0}, + {"fcvtzs", 0xf00fc00, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT_SD, 0}, + {"ushr", 0x2f000400, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT, 0}, +@@ -1554,8 +1556,10 @@ struct aarch64_opcode aarch64_opcode_table[] = + {"uqshrn2", 0x6f009400, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN2, 0}, + {"uqrshrn", 0x2f009c00, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN, 0}, + {"uqrshrn2", 0x6f009c00, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN2, 0}, +- {"ushll", 0x2f00a400, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFTL, 0}, +- {"ushll2", 0x6f00a400, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFTL2, 0}, ++ {"ushll", 0x2f00a400, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFTL, F_HAS_ALIAS}, ++ {"uxtl", 0x2f00a400, 0xff87fc00, asimdshf, OP_UXTL, SIMD, OP2 (Vd, Vn), QL_V2LONGBHS, F_ALIAS | F_CONV}, ++ {"ushll2", 0x6f00a400, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFTL2, F_HAS_ALIAS}, ++ {"uxtl2", 0x6f00a400, 0xff87fc00, asimdshf, OP_UXTL2, SIMD, OP2 (Vd, Vn), QL_V2LONGBHS2, F_ALIAS | F_CONV}, + {"ucvtf", 0x2f00e400, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT_SD, 0}, + {"fcvtzu", 0x2f00fc00, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT_SD, 0}, + /* AdvSIMD TBL/TBX. */ +@@ -2017,7 +2021,7 @@ struct aarch64_opcode aarch64_opcode_table[] = + {"and", 0x12000000, 0x7f800000, log_imm, 0, CORE, OP3 (Rd_SP, Rn, LIMM), QL_R2NIL, F_HAS_ALIAS | F_SF}, + {"bic", 0x12000000, 0x7f800000, log_imm, OP_BIC, CORE, OP3 (Rd_SP, Rn, LIMM), QL_R2NIL, F_ALIAS | F_PSEUDO | F_SF}, + {"orr", 0x32000000, 0x7f800000, log_imm, 0, CORE, OP3 (Rd_SP, Rn, LIMM), QL_R2NIL, F_HAS_ALIAS | F_SF}, +- {"mov", 0x320003e0, 0x7f8003e0, log_imm, OP_MOV_IMM_LOG, CORE, OP2 (Rd_SP, IMM_MOV), QL_R1NIL, F_ALIAS | F_PSEUDO | F_P1 | F_SF | F_CONV}, ++ {"mov", 0x320003e0, 0x7f8003e0, log_imm, OP_MOV_IMM_LOG, CORE, OP2 (Rd_SP, IMM_MOV), QL_R1NIL, F_ALIAS | F_P1 | F_SF | F_CONV}, + {"eor", 0x52000000, 0x7f800000, log_imm, 0, CORE, OP3 (Rd_SP, Rn, LIMM), QL_R2NIL, F_SF}, + {"ands", 0x72000000, 0x7f800000, log_imm, 0, CORE, OP3 (Rd, Rn, LIMM), QL_R2NIL, F_HAS_ALIAS | F_SF}, + {"tst", 0x7200001f, 0x7f80001f, log_imm, 0, CORE, OP2 (Rn, LIMM), QL_R1NIL, F_ALIAS | F_SF}, +@@ -2036,9 +2040,9 @@ struct aarch64_opcode aarch64_opcode_table[] = + {"bics", 0x6a200000, 0x7f200000, log_shift, 0, CORE, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_SF}, + /* Move wide (immediate). */ + {"movn", 0x12800000, 0x7f800000, movewide, OP_MOVN, CORE, OP2 (Rd, HALF), QL_DST_R, F_SF | F_HAS_ALIAS}, +- {"mov", 0x12800000, 0x7f800000, movewide, OP_MOV_IMM_WIDEN, CORE, OP2 (Rd, IMM_MOV), QL_DST_R, F_SF | F_ALIAS | F_PSEUDO | F_CONV}, ++ {"mov", 0x12800000, 0x7f800000, movewide, OP_MOV_IMM_WIDEN, CORE, OP2 (Rd, IMM_MOV), QL_DST_R, F_SF | F_ALIAS | F_CONV}, + {"movz", 0x52800000, 0x7f800000, movewide, OP_MOVZ, CORE, OP2 (Rd, HALF), QL_DST_R, F_SF | F_HAS_ALIAS}, +- {"mov", 0x52800000, 0x7f800000, movewide, OP_MOV_IMM_WIDE, CORE, OP2 (Rd, IMM_MOV), QL_DST_R, F_SF | F_ALIAS | F_PSEUDO | F_CONV}, ++ {"mov", 0x52800000, 0x7f800000, movewide, OP_MOV_IMM_WIDE, CORE, OP2 (Rd, IMM_MOV), QL_DST_R, F_SF | F_ALIAS | F_CONV}, + {"movk", 0x72800000, 0x7f800000, movewide, OP_MOVK, CORE, OP2 (Rd, HALF), QL_DST_R, F_SF}, + /* PC-rel. addressing. */ + {"adr", 0x10000000, 0x9f000000, pcreladdr, 0, CORE, OP2 (Rd, ADDR_PCREL21), QL_ADRP, 0}, +diff --git a/opcodes/i386-opc.tbl b/opcodes/i386-opc.tbl +index 8b08edc..482bd7b 100644 +--- a/opcodes/i386-opc.tbl ++++ b/opcodes/i386-opc.tbl +@@ -390,7 +390,7 @@ jg, 1, 0x7f, None, 1, 0, Jump|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, + // jcxz vs. jecxz is chosen on the basis of the address size prefix. + jcxz, 1, 0xe3, None, 1, CpuNo64, JumpByte|Size16|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Disp8|Disp16|Disp32 } + jecxz, 1, 0xe3, None, 1, CpuNo64, JumpByte|Size32|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Disp8|Disp16|Disp32 } +-jecxz, 1, 0x67e3, None, 2, Cpu64, JumpByte|Size32|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Disp8|Disp32|Disp32S } ++jecxz, 1, 0xe3, None, 1, Cpu64, JumpByte|Size32|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Disp8|Disp32|Disp32S } + jrcxz, 1, 0xe3, None, 1, Cpu64, JumpByte|Size64|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|NoRex64, { Disp8|Disp32|Disp32S } + + // The loop instructions also use the address size prefix to select +diff --git a/opcodes/i386-tbl.h b/opcodes/i386-tbl.h +index 001a966..a3a3e64 100644 +--- a/opcodes/i386-tbl.h ++++ b/opcodes/i386-tbl.h +@@ -3417,7 +3417,7 @@ const insn_template i386_optab[] = + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, +- { "jecxz", 1, 0x67e3, None, 2, ++ { "jecxz", 1, 0xe3, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, +diff --git a/opcodes/ppc-dis.c b/opcodes/ppc-dis.c +index 44310e8..41dce27 100644 +--- a/opcodes/ppc-dis.c ++++ b/opcodes/ppc-dis.c +@@ -88,7 +88,7 @@ struct ppc_mopt ppc_opts[] = { + | PPC_OPCODE_A2), + 0 }, + { "altivec", (PPC_OPCODE_PPC), +- PPC_OPCODE_ALTIVEC }, ++ PPC_OPCODE_ALTIVEC | PPC_OPCODE_ALTIVEC2 }, + { "any", 0, + PPC_OPCODE_ANY }, + { "booke", (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE), +@@ -211,13 +211,8 @@ get_powerpc_dialect (struct disassemble_info *info) + /* Handle -m and -M options that set cpu type, and .machine arg. */ + + ppc_cpu_t +-ppc_parse_cpu (ppc_cpu_t ppc_cpu, const char *arg) ++ppc_parse_cpu (ppc_cpu_t ppc_cpu, ppc_cpu_t *sticky, const char *arg) + { +- const ppc_cpu_t retain_mask = (PPC_OPCODE_ALTIVEC | PPC_OPCODE_VSX +- | PPC_OPCODE_SPE | PPC_OPCODE_ANY +- | PPC_OPCODE_VLE | PPC_OPCODE_PMR); +- /* Sticky bits. */ +- ppc_cpu_t retain_flags = ppc_cpu & retain_mask; + unsigned int i; + + for (i = 0; i < sizeof (ppc_opts) / sizeof (ppc_opts[0]); i++) +@@ -225,8 +220,8 @@ ppc_parse_cpu (ppc_cpu_t ppc_cpu, const char *arg) + { + if (ppc_opts[i].sticky) + { +- retain_flags |= ppc_opts[i].sticky; +- if ((ppc_cpu & ~retain_mask) != 0) ++ *sticky |= ppc_opts[i].sticky; ++ if ((ppc_cpu & ~*sticky) != 0) + break; + } + ppc_cpu = ppc_opts[i].cpu; +@@ -235,7 +230,7 @@ ppc_parse_cpu (ppc_cpu_t ppc_cpu, const char *arg) + if (i >= sizeof (ppc_opts) / sizeof (ppc_opts[0])) + return 0; + +- ppc_cpu |= retain_flags; ++ ppc_cpu |= *sticky; + return ppc_cpu; + } + +@@ -245,12 +240,75 @@ static void + powerpc_init_dialect (struct disassemble_info *info) + { + ppc_cpu_t dialect = 0; ++ ppc_cpu_t sticky = 0; + char *arg; + struct dis_private *priv = calloc (sizeof (*priv), 1); + + if (priv == NULL) + priv = &private; + ++ switch (info->mach) ++ { ++ case bfd_mach_ppc_403: ++ case bfd_mach_ppc_403gc: ++ dialect = (PPC_OPCODE_PPC | PPC_OPCODE_403); ++ break; ++ case bfd_mach_ppc_405: ++ dialect = (PPC_OPCODE_PPC | PPC_OPCODE_403 | PPC_OPCODE_405); ++ break; ++ case bfd_mach_ppc_601: ++ dialect = (PPC_OPCODE_PPC | PPC_OPCODE_601); ++ break; ++ case bfd_mach_ppc_a35: ++ case bfd_mach_ppc_rs64ii: ++ case bfd_mach_ppc_rs64iii: ++ dialect = (PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_64); ++ break; ++ case bfd_mach_ppc_e500: ++ dialect = (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE | PPC_OPCODE_SPE ++ | PPC_OPCODE_ISEL | PPC_OPCODE_EFS | PPC_OPCODE_BRLOCK ++ | PPC_OPCODE_PMR | PPC_OPCODE_CACHELCK | PPC_OPCODE_RFMCI ++ | PPC_OPCODE_E500); ++ break; ++ case bfd_mach_ppc_e500mc: ++ dialect = (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE | PPC_OPCODE_ISEL ++ | PPC_OPCODE_PMR | PPC_OPCODE_CACHELCK | PPC_OPCODE_RFMCI ++ | PPC_OPCODE_E500MC); ++ break; ++ case bfd_mach_ppc_e500mc64: ++ dialect = (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE | PPC_OPCODE_ISEL ++ | PPC_OPCODE_PMR | PPC_OPCODE_CACHELCK | PPC_OPCODE_RFMCI ++ | PPC_OPCODE_E500MC | PPC_OPCODE_64 | PPC_OPCODE_POWER5 ++ | PPC_OPCODE_POWER6 | PPC_OPCODE_POWER7); ++ break; ++ case bfd_mach_ppc_e5500: ++ dialect = (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE | PPC_OPCODE_ISEL ++ | PPC_OPCODE_PMR | PPC_OPCODE_CACHELCK | PPC_OPCODE_RFMCI ++ | PPC_OPCODE_E500MC | PPC_OPCODE_64 | PPC_OPCODE_POWER4 ++ | PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6 ++ | PPC_OPCODE_POWER7); ++ break; ++ case bfd_mach_ppc_e6500: ++ dialect = (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE | PPC_OPCODE_ISEL ++ | PPC_OPCODE_PMR | PPC_OPCODE_CACHELCK | PPC_OPCODE_RFMCI ++ | PPC_OPCODE_E500MC | PPC_OPCODE_64 | PPC_OPCODE_ALTIVEC ++ | PPC_OPCODE_ALTIVEC2 | PPC_OPCODE_E6500 | PPC_OPCODE_POWER4 ++ | PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6 | PPC_OPCODE_POWER7); ++ break; ++ case bfd_mach_ppc_titan: ++ dialect = (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE | PPC_OPCODE_PMR ++ | PPC_OPCODE_RFMCI | PPC_OPCODE_TITAN); ++ break; ++ case bfd_mach_ppc_vle: ++ dialect = (PPC_OPCODE_PPC | PPC_OPCODE_ISEL | PPC_OPCODE_VLE); ++ break; ++ default: ++ dialect = (PPC_OPCODE_PPC | PPC_OPCODE_ISEL | PPC_OPCODE_64 ++ | PPC_OPCODE_POWER4 | PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6 ++ | PPC_OPCODE_POWER7 | PPC_OPCODE_ALTIVEC | PPC_OPCODE_VSX ++ | PPC_OPCODE_ANY); ++ } ++ + arg = info->disassembler_options; + while (arg != NULL) + { +@@ -260,7 +318,7 @@ powerpc_init_dialect (struct disassemble_info *info) + if (end != NULL) + *end = 0; + +- if ((new_cpu = ppc_parse_cpu (dialect, arg)) != 0) ++ if ((new_cpu = ppc_parse_cpu (dialect, &sticky, arg)) != 0) + dialect = new_cpu; + else if (strcmp (arg, "32") == 0) + dialect &= ~(ppc_cpu_t) PPC_OPCODE_64; +@@ -274,20 +332,6 @@ powerpc_init_dialect (struct disassemble_info *info) + arg = end; + } + +- if ((dialect & ~(ppc_cpu_t) PPC_OPCODE_64) == 0) +- { +- if (info->mach == bfd_mach_ppc64) +- dialect |= PPC_OPCODE_64; +- else +- dialect &= ~(ppc_cpu_t) PPC_OPCODE_64; +- if (info->mach == bfd_mach_ppc_vle) +- dialect |= PPC_OPCODE_PPC | PPC_OPCODE_VLE; +- else +- /* Choose a reasonable default. */ +- dialect |= (PPC_OPCODE_PPC | PPC_OPCODE_COMMON | PPC_OPCODE_601 +- | PPC_OPCODE_ALTIVEC); +- } +- + info->private_data = priv; + POWERPC_DIALECT(info) = dialect; + } +diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c +index 5d970aa..d6c232d 100644 +--- a/opcodes/ppc-opc.c ++++ b/opcodes/ppc-opc.c +@@ -156,6 +156,9 @@ const struct powerpc_operand powerpc_operands[] = + /* The BB field in an XL form instruction when it must be the same + as the BA field in the same instruction. */ + #define BBA BB + 1 ++ /* The VB field in a VX form instruction when it must be the same ++ as the VA field in the same instruction. */ ++#define VBA BBA + { 0x1f, 11, insert_bba, extract_bba, PPC_OPERAND_FAKE }, + + /* The BD field in a B form instruction. The lower two bits are +@@ -1631,62 +1634,50 @@ insert_sci8 (unsigned long insn, + ppc_cpu_t dialect ATTRIBUTE_UNUSED, + const char **errmsg) + { +- int fill = 0; +- int scale_factor = 0; +- long ui8 = value; ++ unsigned int fill_scale = 0; ++ unsigned long ui8 = value; + +- if ((value & 0xff000000) == (unsigned int) value) +- { +- scale_factor = 3; +- ui8 = value >> 24; +- fill = 0; +- } +- else if ((value & 0xff0000) == (unsigned int) value) ++ if ((ui8 & 0xffffff00) == 0) ++ ; ++ else if ((ui8 & 0xffffff00) == 0xffffff00) ++ fill_scale = 0x400; ++ else if ((ui8 & 0xffff00ff) == 0) + { +- scale_factor = 2; +- ui8 = value >> 16; +- fill = 0; ++ fill_scale = 1 << 8; ++ ui8 >>= 8; + } +- else if ((value & 0xff00) == (unsigned int) value) ++ else if ((ui8 & 0xffff00ff) == 0xffff00ff) + { +- scale_factor = 1; +- ui8 = value >> 8; +- fill = 0; ++ fill_scale = 0x400 | (1 << 8); ++ ui8 >>= 8; + } +- else if ((value & 0xff) == value) ++ else if ((ui8 & 0xff00ffff) == 0) + { +- scale_factor = 0; +- ui8 = value; +- fill = 0; ++ fill_scale = 2 << 8; ++ ui8 >>= 16; + } +- else if ((value & 0xffffff00) == 0xffffff00) ++ else if ((ui8 & 0xff00ffff) == 0xff00ffff) + { +- scale_factor = 0; +- ui8 = (value & 0xff); +- fill = 1; ++ fill_scale = 0x400 | (2 << 8); ++ ui8 >>= 16; + } +- else if ((value & 0xffff00ff) == 0xffff00ff) ++ else if ((ui8 & 0x00ffffff) == 0) + { +- scale_factor = 1; +- ui8 = (value & 0xff00) >> 8; +- fill = 1; ++ fill_scale = 3 << 8; ++ ui8 >>= 24; + } +- else if ((value & 0xff00ffff) == 0xff00ffff) ++ else if ((ui8 & 0x00ffffff) == 0x00ffffff) + { +- scale_factor = 2; +- ui8 = (value & 0xff0000) >> 16; +- fill = 1; ++ fill_scale = 0x400 | (3 << 8); ++ ui8 >>= 24; + } +- else if ((value & 0x00ffffff) == 0x00ffffff) ++ else + { +- scale_factor = 3; +- ui8 = (value & 0xff000000) >> 24; +- fill = 1; ++ *errmsg = _("illegal immediate value"); ++ ui8 = 0; + } +- else +- *errmsg = _("illegal immediate value"); + +- return insn | (fill << 10) | (scale_factor << 8) | (ui8 & 0xff); ++ return insn | fill_scale | (ui8 & 0xff); + } + + static long +@@ -1694,43 +1685,30 @@ extract_sci8 (unsigned long insn, + ppc_cpu_t dialect ATTRIBUTE_UNUSED, + int *invalid ATTRIBUTE_UNUSED) + { +- int scale_factor, fill; +- scale_factor = (insn & 0x300) >> 8; +- fill = (insn & 0x00000400) >> 10; +- +- if (fill == 0) +- return (insn & 0xff) << (scale_factor << 3); +- +- /* Fill is one. */ +- if (scale_factor == 0) +- return (insn & 0xff) | 0xffffff00; +- else if (scale_factor == 1) +- return 0xffff00ff | ((insn & 0xff) << (scale_factor << 3)); +- else if (scale_factor == 2) +- return 0xff00ffff | (insn & 0xff << (scale_factor << 3)); +- else /* scale_factor 3 */ +- return 0x00ffffff | (insn & 0xff << (scale_factor << 3)); ++ int fill = insn & 0x400; ++ int scale_factor = (insn & 0x300) >> 5; ++ long value = (insn & 0xff) << scale_factor; ++ ++ if (fill != 0) ++ value |= ~((long) 0xff << scale_factor); ++ return value; + } + + static unsigned long + insert_sci8n (unsigned long insn, + long value, +- ppc_cpu_t dialect ATTRIBUTE_UNUSED, ++ ppc_cpu_t dialect, + const char **errmsg) + { +- insn = insert_sci8 (insn, -(value & 0xff) & 0xff, 0, errmsg); +- /* Set the F bit. */ +- return insn | 0x400; ++ return insert_sci8 (insn, -value, dialect, errmsg); + } + + static long + extract_sci8n (unsigned long insn, +- ppc_cpu_t dialect ATTRIBUTE_UNUSED, +- int *invalid ATTRIBUTE_UNUSED) ++ ppc_cpu_t dialect, ++ int *invalid) + { +- int scale_factor; +- scale_factor = (insn & 0x300) >> 8; +- return -(((insn & 0xff) ^ 0x80) - 0x80) << (scale_factor << 3); ++ return -extract_sci8 (insn, dialect, invalid); + } + + static unsigned long +@@ -3106,6 +3084,7 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"vmulesb", VX (4, 776), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}}, + {"evlhhesplat", VX (4, 777), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, EVUIMM_2, RA}}, + {"vcfux", VX (4, 778), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VB, UIMM}}, ++{"vcuxwfp", VX (4, 778), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VB, UIMM}}, + {"evlhhousplatx",VX(4, 780), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}}, + {"vspltisb", VX (4, 780), VXVB_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, SIMM}}, + {"evlhhousplat",VX (4, 781), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, EVUIMM_2, RA}}, +@@ -3146,6 +3125,7 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"vcmpgtsh", VXR(4, 838,0), VXR_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}}, + {"vmulesh", VX (4, 840), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}}, + {"vcfsx", VX (4, 842), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VB, UIMM}}, ++{"vcsxwfp", VX (4, 842), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VB, UIMM}}, + {"vspltish", VX (4, 844), VXVB_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, SIMM}}, + {"vupkhpx", VX (4, 846), VXVA_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VB}}, + {"mullhw", XRC(4, 424,0), X_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}}, +@@ -3159,11 +3139,13 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"vsraw", VX (4, 900), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}}, + {"vcmpgtsw", VXR(4, 902,0), VXR_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}}, + {"vctuxs", VX (4, 906), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VB, UIMM}}, ++{"vcfpuxws", VX (4, 906), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VB, UIMM}}, + {"vspltisw", VX (4, 908), VXVB_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, SIMM}}, + {"maclhwsu", XO (4, 460,0,0),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}}, + {"maclhwsu.", XO (4, 460,0,1),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}}, + {"vcmpbfp", VXR(4, 966,0), VXR_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}}, + {"vctsxs", VX (4, 970), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VB, UIMM}}, ++{"vcfpsxws", VX (4, 970), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VB, UIMM}}, + {"vupklpx", VX (4, 974), VXVA_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VB}}, + {"maclhws", XO (4, 492,0,0),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}}, + {"maclhws.", XO (4, 492,0,1),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}}, +@@ -3234,6 +3216,7 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"vsubuwm", VX (4,1152), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}}, + {"vavguw", VX (4,1154), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}}, + {"vabsduw", VX (4,1155), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}}, ++{"vmr", VX (4,1156), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VBA}}, + {"vor", VX (4,1156), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}}, + {"vcmpequw.", VXR(4, 134,1), VXR_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}}, + {"udi2fcm.", APU(4, 579,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}}, +@@ -3268,6 +3251,7 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"vavgsb", VX (4,1282), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}}, + {"evmhessfaaw", VX (4,1283), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}}, + {"evmhousiaaw", VX (4,1284), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}}, ++{"vnot", VX (4,1284), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VBA}}, + {"vnor", VX (4,1284), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}}, + {"evmhossiaaw", VX (4,1285), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}}, + {"udi4fcm.", APU(4, 643,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}}, +@@ -4818,6 +4802,8 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"mfdvlim", XSPR(31,339,883), XSPR_MASK, TITAN, PPCNONE, {RT}}, + {"mfclcsr", XSPR(31,339,884), XSPR_MASK, TITAN, PPCNONE, {RT}}, + {"mfccr1", XSPR(31,339,888), XSPR_MASK, TITAN, PPCNONE, {RT}}, ++{"mfppr", XSPR(31,339,896), XSPR_MASK, POWER7, PPCNONE, {RT}}, ++{"mfppr32", XSPR(31,339,898), XSPR_MASK, POWER7, PPCNONE, {RT}}, + {"mfrstcfg", XSPR(31,339,923), XSPR_MASK, TITAN, PPCNONE, {RT}}, + {"mfdcdbtrl", XSPR(31,339,924), XSPR_MASK, TITAN, PPCNONE, {RT}}, + {"mfdcdbtrh", XSPR(31,339,925), XSPR_MASK, TITAN, PPCNONE, {RT}}, +@@ -5121,6 +5107,8 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"mtdvlim", XSPR(31,467,883), XSPR_MASK, TITAN, PPCNONE, {RS}}, + {"mtclcsr", XSPR(31,467,884), XSPR_MASK, TITAN, PPCNONE, {RS}}, + {"mtccr1", XSPR(31,467,888), XSPR_MASK, TITAN, PPCNONE, {RS}}, ++{"mtppr", XSPR(31,467,896), XSPR_MASK, POWER7, PPCNONE, {RS}}, ++{"mtppr32", XSPR(31,467,898), XSPR_MASK, POWER7, PPCNONE, {RS}}, + {"mtummcr0", XSPR(31,467,936), XSPR_MASK, PPC750, PPCNONE, {RS}}, + {"mtupmc1", XSPR(31,467,937), XSPR_MASK, PPC750, PPCNONE, {RS}}, + {"mtupmc2", XSPR(31,467,938), XSPR_MASK, PPC750, PPCNONE, {RS}}, +@@ -5713,7 +5701,7 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"psq_l", OP(56), OP_MASK, PPCPS, PPCNONE, {FRT,PSD,RA,PSW,PSQ}}, + {"lfq", OP(56), OP_MASK, POWER2, PPCNONE, {FRT, D, RA0}}, + +-{"lfdp", OP(57), OP_MASK, POWER6, POWER7, {FRTp, D, RA0}}, ++{"lfdp", OP(57), OP_MASK, POWER6, POWER7, {FRTp, DS, RA0}}, + {"psq_lu", OP(57), OP_MASK, PPCPS, PPCNONE, {FRT,PSD,RA,PSW,PSQ}}, + {"lfqu", OP(57), OP_MASK, POWER2, PPCNONE, {FRT, D, RA0}}, + +@@ -5976,7 +5964,7 @@ const struct powerpc_opcode powerpc_opcodes[] = { + {"psq_st", OP(60), OP_MASK, PPCPS, PPCNONE, {FRS,PSD,RA,PSW,PSQ}}, + {"stfq", OP(60), OP_MASK, POWER2, PPCNONE, {FRS, D, RA}}, + +-{"stfdp", OP(61), OP_MASK, POWER6, POWER7, {FRSp, D, RA0}}, ++{"stfdp", OP(61), OP_MASK, POWER6, POWER7, {FRSp, DS, RA0}}, + {"psq_stu", OP(61), OP_MASK, PPCPS, PPCNONE, {FRS,PSD,RA,PSW,PSQ}}, + {"stfqu", OP(61), OP_MASK, POWER2, PPCNONE, {FRS, D, RA}}, + --- binutils-2.23.1.orig/debian/patches/014_hash_style-both.patch +++ binutils-2.23.1/debian/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"}); + --- binutils-2.23.1.orig/debian/patches/161_gold_dummy_zoption.diff +++ binutils-2.23.1/debian/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 +@@ -1241,6 +1241,9 @@ + DEFINE_bool_alias(textoff, text, options::DASH_Z, '\0', + N_("Permit relocations in read-only segments (default)"), + NULL, true); ++ DEFINE_bool(buildd, options::DASH_Z, '\0', false, ++ N_("Dummy z option"), ++ NULL); + + public: + typedef options::Dir_list Dir_list; +--- a/gold/options.cc ++++ b/gold/options.cc +@@ -896,6 +896,8 @@ + { + 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); --- binutils-2.23.1.orig/debian/patches/128_build_id.patch +++ binutils-2.23.1/debian/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; --- binutils-2.23.1.orig/debian/patches/armhf-sf-float-abi-flags.diff +++ binutils-2.23.1/debian/patches/armhf-sf-float-abi-flags.diff @@ -0,0 +1,369 @@ +>From 0a02e2d8e2ffb551a3a3699dd09ec9f69393e327 Mon Sep 17 00:00:00 2001 +From: Steve McIntyre +Date: Tue, 4 Sep 2012 17:48:06 +0100 +Subject: [PATCH] Add new ARM hard-float/soft-float ABI flags for EABI_VER5 + +bfd: + * elf32-arm.c (elf32_arm_print_private_bfd_data): Recognise and + display the new ARM hard-float/soft-float ABI flags for EABI_VER5 + (elf32_arm_post_process_headers): Add the hard-float/soft-float + ABI flag as appropriate for ET_DYN/ET_EXEC in EABI_VER5. + +binutils: + * readelf.c (decode_ARM_machine_flags): Recognise and display the + new ARM hard-float/soft-float ABI flags for EABI_VER5. Split out + the code for EABI_VER4 and EABI_VER5 to allow this. + +elfcpp: + * arm.h: New enum for EABI soft- and hard-float flags. + +gold: + * gold.cc (Target_arm::do_adjust_elf_header): Add the + hard-float/soft-float ABI flag as appropriate for ET_DYN/ET_EXEC + in EABI_VER5. + +include: + * elf/arm.h (EF_ARM_ABI_FLOAT_SOFT): New define. + (EF_ARM_ABI_FLOAT_HARD): Likewise. + +ld/testsuite: + * ld-arm/eabi-hard-float.s: New test source. + * ld-arm/eabi-soft-float.s: New test source. + * ld-arm/eabi-hard-float.d: New test. + * ld-arm/eabi-soft-float.d: New test. + * ld-arm/eabi-soft-float-ABI4.d: New test. + * ld-arm/eabi-soft-float-r.d: New test. + * ld-arm/arm-elf.xp: Use the new tests. +--- + bfd/elf32-arm.c | 19 +++++++++++++++ + binutils/readelf.c | 35 ++++++++++++++++++++++++++-- + elfcpp/arm.h | 8 +++++++ + gold/arm.cc | 22 ++++++++++++++--- + include/elf/arm.h | 5 ++++ + ld/testsuite/ld-arm/arm-elf.exp | 15 ++++++++++++ + ld/testsuite/ld-arm/eabi-hard-float.d | 12 ++++++++++ + ld/testsuite/ld-arm/eabi-hard-float.s | 9 +++++++ + ld/testsuite/ld-arm/eabi-soft-float-ABI4.d | 12 ++++++++++ + ld/testsuite/ld-arm/eabi-soft-float-r.d | 12 ++++++++++ + ld/testsuite/ld-arm/eabi-soft-float.d | 12 ++++++++++ + ld/testsuite/ld-arm/eabi-soft-float.s | 8 +++++++ + 18 files changed, 203 insertions(+), 5 deletions(-) + create mode 100644 ld/testsuite/ld-arm/eabi-hard-float.d + create mode 100644 ld/testsuite/ld-arm/eabi-hard-float.s + create mode 100644 ld/testsuite/ld-arm/eabi-soft-float-ABI4.d + create mode 100644 ld/testsuite/ld-arm/eabi-soft-float-r.d + create mode 100644 ld/testsuite/ld-arm/eabi-soft-float.d + create mode 100644 ld/testsuite/ld-arm/eabi-soft-float.s + +diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c +index 633bb64..fefc7db 100644 +--- a/bfd/elf32-arm.c ++++ b/bfd/elf32-arm.c +@@ -12110,6 +12110,15 @@ elf32_arm_print_private_bfd_data (bfd *abfd, void * ptr) + + case EF_ARM_EABI_VER5: + fprintf (file, _(" [Version5 EABI]")); ++ ++ if (flags & EF_ARM_ABI_FLOAT_SOFT) ++ fprintf (file, _(" [soft-float ABI]")); ++ ++ if (flags & EF_ARM_ABI_FLOAT_HARD) ++ fprintf (file, _(" [hard-float ABI]")); ++ ++ flags &= ~(EF_ARM_ABI_FLOAT_SOFT | EF_ARM_ABI_FLOAT_HARD); ++ + eabi: + if (flags & EF_ARM_BE8) + fprintf (file, _(" [BE8]")); +@@ -14417,6 +14426,16 @@ elf32_arm_post_process_headers (bfd * abfd, struct bfd_link_info * link_info ATT + if (globals != NULL && globals->byteswap_code) + i_ehdrp->e_flags |= EF_ARM_BE8; + } ++ ++ if (EF_ARM_EABI_VERSION (i_ehdrp->e_flags) == EF_ARM_EABI_VER5 ++ && ((i_ehdrp->e_type == ET_DYN) || (i_ehdrp->e_type == ET_EXEC))) ++ { ++ int abi = bfd_elf_get_obj_attr_int (abfd, OBJ_ATTR_PROC, Tag_ABI_VFP_args); ++ if (abi) ++ i_ehdrp->e_flags |= EF_ARM_ABI_FLOAT_HARD; ++ else ++ i_ehdrp->e_flags |= EF_ARM_ABI_FLOAT_SOFT; ++ } + } + + static enum elf_reloc_type_class +diff --git a/binutils/readelf.c b/binutils/readelf.c +index 2fbf2ae..d69dcfc 100644 +--- a/binutils/readelf.c ++++ b/binutils/readelf.c +@@ -2104,11 +2104,34 @@ decode_ARM_machine_flags (unsigned e_flags, char buf[]) + + case EF_ARM_EABI_VER4: + strcat (buf, ", Version4 EABI"); +- goto eabi; ++ while (e_flags) ++ { ++ unsigned flag; ++ ++ /* Process flags one bit at a time. */ ++ flag = e_flags & - e_flags; ++ e_flags &= ~ flag; ++ ++ switch (flag) ++ { ++ case EF_ARM_BE8: ++ strcat (buf, ", BE8"); ++ break; ++ ++ case EF_ARM_LE8: ++ strcat (buf, ", LE8"); ++ break; ++ ++ default: ++ unknown = 1; ++ break; ++ } ++ break; ++ } ++ break; + + case EF_ARM_EABI_VER5: + strcat (buf, ", Version5 EABI"); +- eabi: + while (e_flags) + { + unsigned flag; +@@ -2127,6 +2150,14 @@ decode_ARM_machine_flags (unsigned e_flags, char buf[]) + strcat (buf, ", LE8"); + break; + ++ case EF_ARM_ABI_FLOAT_SOFT: /* Conflicts with EF_ARM_SOFT_FLOAT. */ ++ strcat (buf, ", soft-float ABI"); ++ break; ++ ++ case EF_ARM_ABI_FLOAT_HARD: /* Conflicts with EF_ARM_VFP_FLOAT. */ ++ strcat (buf, ", hard-float ABI"); ++ break; ++ + default: + unknown = 1; + break; +diff --git a/elfcpp/arm.h b/elfcpp/arm.h +index cb85eeb..4cb79d6 100644 +--- a/elfcpp/arm.h ++++ b/elfcpp/arm.h +@@ -222,6 +222,14 @@ inline Elf_Word + arm_eabi_version(Elf_Word flags) + { return flags & EF_ARM_EABIMASK; } + ++// EABI_VER5 e_flags values for identifying soft- and hard-float ABI ++// choice. ++enum ++{ ++ EF_ARM_ABI_FLOAT_SOFT = 0x200, ++ EF_ARM_ABI_FLOAT_HARD = 0x400, ++}; ++ + // Values for the Tag_CPU_arch EABI attribute. + enum + { +diff --git a/gold/arm.cc b/gold/arm.cc +index fa257a7..30db5a2 100644 +--- a/gold/arm.cc ++++ b/gold/arm.cc +@@ -2476,7 +2476,7 @@ class Target_arm : public Sized_target<32, big_endian> + { return new Arm_output_section(name, type, flags); } + + void +- do_adjust_elf_header(unsigned char* view, int len) const; ++ do_adjust_elf_header(unsigned char* view, int len); + + // We only need to generate stubs, and hence perform relaxation if we are + // not doing relocatable linking. +@@ -10011,15 +10011,16 @@ template + void + Target_arm::do_adjust_elf_header( + unsigned char* view, +- int len) const ++ int len) + { + gold_assert(len == elfcpp::Elf_sizes<32>::ehdr_size); + + elfcpp::Ehdr<32, big_endian> ehdr(view); ++ elfcpp::Elf_Word flags = this->processor_specific_flags(); + unsigned char e_ident[elfcpp::EI_NIDENT]; + memcpy(e_ident, ehdr.get_e_ident(), elfcpp::EI_NIDENT); + +- if (elfcpp::arm_eabi_version(this->processor_specific_flags()) ++ if (elfcpp::arm_eabi_version(flags) + == elfcpp::EF_ARM_EABI_UNKNOWN) + e_ident[elfcpp::EI_OSABI] = elfcpp::ELFOSABI_ARM; + else +@@ -10028,6 +10029,21 @@ Target_arm::do_adjust_elf_header( + + // FIXME: Do EF_ARM_BE8 adjustment. + ++ // If we're working in EABI_VER5, set the hard/soft float ABI flags ++ // as appropriate. ++ if (elfcpp::arm_eabi_version(flags) == elfcpp::EF_ARM_EABI_VER5) ++ { ++ elfcpp::Elf_Half type = ehdr.get_e_type(); ++ if (type == elfcpp::ET_EXEC || type == elfcpp::ET_DYN) ++ { ++ Object_attribute* attr = this->get_aeabi_object_attribute(elfcpp::Tag_ABI_VFP_args); ++ if (attr->int_value()) ++ flags |= elfcpp::EF_ARM_ABI_FLOAT_HARD; ++ else ++ flags |= elfcpp::EF_ARM_ABI_FLOAT_SOFT; ++ this->set_processor_specific_flags(flags); ++ } ++ } + elfcpp::Ehdr_write<32, big_endian> oehdr(view); + oehdr.put_e_ident(e_ident); + } +diff --git a/include/elf/arm.h b/include/elf/arm.h +index 8ea3fe8..d799303 100644 +--- a/include/elf/arm.h ++++ b/include/elf/arm.h +@@ -46,6 +46,11 @@ + #define EF_ARM_MAPSYMSFIRST 0x10 /* NB conflicts with EF_APCS_FLOAT. */ + #define EF_ARM_EABIMASK 0xFF000000 + ++/* New constants defined in the ARM ELF spec. version XXX. ++ Only valid in conjunction with EF_ARM_EABI_VER5. */ ++#define EF_ARM_ABI_FLOAT_SOFT 0x200 /* NB conflicts with EF_ARM_SOFT_FLOAT. */ ++#define EF_ARM_ABI_FLOAT_HARD 0x400 /* NB conflicts with EF_ARM_VFP_FLOAT. */ ++ + /* Constants defined in AAELF. */ + #define EF_ARM_BE8 0x00800000 + #define EF_ARM_LE8 0x00400000 +diff --git a/ld/testsuite/ld-arm/arm-elf.exp b/ld/testsuite/ld-arm/arm-elf.exp +index 8e15ffe..81ee0bd 100644 +--- a/ld/testsuite/ld-arm/arm-elf.exp ++++ b/ld/testsuite/ld-arm/arm-elf.exp +@@ -271,6 +271,21 @@ set armelftests_common { + {"Simple non-PIC shared library (no PLT check)" "-shared" "" {arm-lib.s} + {{objdump -Rw arm-lib.r}} + "arm-lib.so"} ++ {"EABI soft-float ET_EXEC ABI flag" "-T arm.ld" "-mfloat-abi=soft -meabi=5" {eabi-soft-float.s} ++ {{readelf -h eabi-soft-float.d}} ++ "eabi-soft-float"} ++ {"EABI hard-float ET_EXEC ABI flag" "-T arm.ld" "-mfloat-abi=hard -meabi=5" {eabi-hard-float.s} ++ {{readelf -h eabi-hard-float.d}} ++ "eabi-hard-float"} ++ {"EABI hard-float ET_DYN ABI flag" "-shared" "-mfloat-abi=hard -meabi=5" {eabi-hard-float.s} ++ {{readelf -h eabi-hard-float.d}} ++ "eabi-hard-float.so"} ++ {"EABI ABI flags wrong ABI version" "-T arm.ld" "-mfloat-abi=soft -meabi=4" {eabi-soft-float.s} ++ {{readelf -h eabi-soft-float-ABI4.d}} ++ "eabi-soft-float-no-flags"} ++ {"EABI ABI flags ld -r" "-r" "-mfloat-abi=soft -meabi=5" {eabi-soft-float.s} ++ {{readelf -h eabi-soft-float-r.d}} ++ "eabi-soft-float-r.o"} + } + + set armelftests_nonacl { +diff --git a/ld/testsuite/ld-arm/eabi-hard-float.d b/ld/testsuite/ld-arm/eabi-hard-float.d +new file mode 100644 +index 0000000..bc8cc3f +--- /dev/null ++++ b/ld/testsuite/ld-arm/eabi-hard-float.d +@@ -0,0 +1,12 @@ ++#source: eabi-hard-float.s ++#as: ++#ld: -r ++#readelf: -h ++# This test is only valid on ELF based ports. ++# not-target: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix* ++# Check that we set the hard-float ABI flag directly ++ ++ELF Header: ++#... ++ Flags: 0x5000400, Version5 EABI, hard-float ABI ++#... +diff --git a/ld/testsuite/ld-arm/eabi-hard-float.s b/ld/testsuite/ld-arm/eabi-hard-float.s +new file mode 100644 +index 0000000..3d49794 +--- /dev/null ++++ b/ld/testsuite/ld-arm/eabi-hard-float.s +@@ -0,0 +1,9 @@ ++ .cpu cortex-a9 ++ .fpu vfpv3 ++ .eabi_attribute Tag_ABI_VFP_args, 1 ++ .file "eabi-hard-float.s" ++ .globl _start ++ .type _start,%function ++_start: ++ .size _start,.-_start ++ +diff --git a/ld/testsuite/ld-arm/eabi-soft-float-ABI4.d b/ld/testsuite/ld-arm/eabi-soft-float-ABI4.d +new file mode 100644 +index 0000000..1804826 +--- /dev/null ++++ b/ld/testsuite/ld-arm/eabi-soft-float-ABI4.d +@@ -0,0 +1,12 @@ ++#source: eabi-soft-float.s ++#as: ++#ld: -r ++#readelf: -h ++# This test is only valid on ELF based ports. ++# not-target: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix* ++# if we compile for EABI ver4, ld should *not* set either of the float ABI flags ++ ++ELF Header: ++#... ++ Flags: 0x4000000, Version4 EABI ++#... +diff --git a/ld/testsuite/ld-arm/eabi-soft-float-r.d b/ld/testsuite/ld-arm/eabi-soft-float-r.d +new file mode 100644 +index 0000000..262d482 +--- /dev/null ++++ b/ld/testsuite/ld-arm/eabi-soft-float-r.d +@@ -0,0 +1,12 @@ ++#source: eabi-soft-float.s ++#as: ++#ld: -r ++#readelf: -h ++# This test is only valid on ELF based ports. ++# not-target: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix* ++# if we call "ld -r", it should *not* set either of the float ABI flags ++ ++ELF Header: ++#... ++ Flags: 0x5000000, Version5 EABI ++#... +diff --git a/ld/testsuite/ld-arm/eabi-soft-float.d b/ld/testsuite/ld-arm/eabi-soft-float.d +new file mode 100644 +index 0000000..6cc7086 +--- /dev/null ++++ b/ld/testsuite/ld-arm/eabi-soft-float.d +@@ -0,0 +1,12 @@ ++#source: eabi-soft-float.s ++#as: ++#ld: -r ++#readelf: -h ++# This test is only valid on ELF based ports. ++# not-target: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix* ++# Check that we set the soft-float ABI flag directly ++ ++ELF Header: ++#... ++ Flags: 0x5000200, Version5 EABI, soft-float ABI ++#... +diff --git a/ld/testsuite/ld-arm/eabi-soft-float.s b/ld/testsuite/ld-arm/eabi-soft-float.s +new file mode 100644 +index 0000000..f23fb17 +--- /dev/null ++++ b/ld/testsuite/ld-arm/eabi-soft-float.s +@@ -0,0 +1,8 @@ ++ .cpu cortex-a9 ++ .fpu vfpv3 ++ .eabi_attribute Tag_ABI_VFP_args, 0 ++ .file "eabi-soft-float.s" ++ .globl _start ++ .type _start,%function ++_start: ++ .size _start,.-_start +-- +1.7.9.5 + --- binutils-2.23.1.orig/debian/patches/014_hash_style-gnu.patch +++ binutils-2.23.1/debian/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"}); + --- binutils-2.23.1.orig/debian/patches/002_gprof_profile_arcs.patch +++ binutils-2.23.1/debian/patches/002_gprof_profile_arcs.patch @@ -0,0 +1,27 @@ +Author: Chris Chimelis +Description: Add more documentation about profiling and -fprofile-arcs. +--- a/gprof/gprof.texi ++++ b/gprof/gprof.texi +@@ -148,6 +148,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 +@@ -279,6 +283,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 --- binutils-2.23.1.orig/debian/patches/binutils-texi.diff +++ binutils-2.23.1/debian/patches/binutils-texi.diff @@ -0,0 +1,59 @@ +Subject: Fix use of @itemx in binutils doc + + * doc/binutils.texi (elfedit): Fix use of @itemx in @table. + +--- a/binutils/doc/binutils.texi ++++ b/binutils/doc/binutils.texi +@@ -12,7 +12,7 @@ + @c man begin COPYRIGHT + Copyright @copyright{} 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, +-2010, 2011, 2012 ++2010, 2011, 2012, 2013 + Free Software Foundation, Inc. + + Permission is granted to copy, distribute and/or modify this document +@@ -4384,7 +4384,7 @@ equivalent. At least one of the @option{--output-mach}, + + @table @env + +-@itemx --input-mach=@var{machine} ++@item --input-mach=@var{machine} + Set the matching input ELF machine type to @var{machine}. If + @option{--input-mach} isn't specified, it will match any ELF + machine types. +@@ -4392,21 +4392,21 @@ machine types. + The supported ELF machine types are, @var{L1OM}, @var{K1OM} and + @var{x86-64}. + +-@itemx --output-mach=@var{machine} ++@item --output-mach=@var{machine} + Change the ELF machine type in the ELF header to @var{machine}. The + supported ELF machine types are the same as @option{--input-mach}. + +-@itemx --input-type=@var{type} ++@item --input-type=@var{type} + Set the matching input ELF file type to @var{type}. If + @option{--input-type} isn't specified, it will match any ELF file types. + + The supported ELF file types are, @var{rel}, @var{exec} and @var{dyn}. + +-@itemx --output-type=@var{type} ++@item --output-type=@var{type} + Change the ELF file type in the ELF header to @var{type}. The + supported ELF types are the same as @option{--input-type}. + +-@itemx --input-osabi=@var{osabi} ++@item --input-osabi=@var{osabi} + Set the matching input ELF file OSABI to @var{osabi}. If + @option{--input-osabi} isn't specified, it will match any ELF OSABIs. + +@@ -4416,7 +4416,7 @@ The supported ELF OSABIs are, @var{none}, @var{HPUX}, @var{NetBSD}, + @var{FreeBSD}, @var{TRU64}, @var{Modesto}, @var{OpenBSD}, @var{OpenVMS}, + @var{NSK}, @var{AROS} and @var{FenixOS}. + +-@itemx --output-osabi=@var{osabi} ++@item --output-osabi=@var{osabi} + Change the ELF OSABI in the ELF header to @var{osabi}. The + supported ELF OSABI are the same as @option{--input-osabi}. + --- binutils-2.23.1.orig/debian/patches/003_gprof_see_also_monitor.patch +++ binutils-2.23.1/debian/patches/003_gprof_see_also_monitor.patch @@ -0,0 +1,13 @@ +Author: Chris Chimelis +Description: Don't mention monitor(3) which doesn't exist in Debian. (#160654) +--- a/gprof/gprof.texi ++++ b/gprof/gprof.texi +@@ -196,7 +196,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; --- binutils-2.23.1.orig/debian/patches/131_ld_bootstrap_testsuite.patch +++ binutils-2.23.1/debian/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 +@@ -45,6 +45,15 @@ + 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 +@@ -83,6 +92,11 @@ + 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 { +@@ -117,6 +131,10 @@ + if { $plugins == "yes" } { + set extralibs "$extralibs -ldl" + } ++ ++ if { $plugins == "yes" } { ++ set extralibs "$extralibs -ldl" ++ } + + # On Irix 5, linking with --static only works if all the files are + # compiled using -non_shared. --- binutils-2.23.1.orig/debian/patches/branch-version.diff +++ binutils-2.23.1/debian/patches/branch-version.diff @@ -0,0 +1,52 @@ +diff --git a/bfd/Makefile.am b/bfd/Makefile.am +index ea4fd28..8610d5e 100644 +--- a/bfd/Makefile.am ++++ b/bfd/Makefile.am +@@ -4,7 +4,7 @@ AUTOMAKE_OPTIONS = 1.11 no-dist foreign + ACLOCAL_AMFLAGS = -I . -I .. -I ../config + + # Uncomment the following line when doing a release. +-RELEASE=y ++# RELEASE=y + + INCDIR = $(srcdir)/../include + CSEARCH = -I. -I$(srcdir) -I$(INCDIR) +diff --git a/bfd/Makefile.in b/bfd/Makefile.in +index 741809c..34196aa 100644 +--- a/bfd/Makefile.in ++++ b/bfd/Makefile.in +@@ -320,7 +320,7 @@ AUTOMAKE_OPTIONS = 1.11 no-dist foreign + ACLOCAL_AMFLAGS = -I . -I .. -I ../config + + # Uncomment the following line when doing a release. +-RELEASE = y ++# RELEASE=y + INCDIR = $(srcdir)/../include + CSEARCH = -I. -I$(srcdir) -I$(INCDIR) + SUBDIRS = doc po +diff --git a/bfd/configure b/bfd/configure +index bc242b9..d31f0d9 100755 +--- a/bfd/configure ++++ b/bfd/configure +@@ -3988,7 +3988,7 @@ fi + + # Define the identity of the package. + PACKAGE=bfd +- VERSION=2.22 ++ VERSION=2.22.0 + + + cat >>confdefs.h <<_ACEOF +diff --git a/bfd/configure.in b/bfd/configure.in +index 435aaaa..9ba3000 100644 +--- a/bfd/configure.in ++++ b/bfd/configure.in +@@ -8,7 +8,7 @@ AC_CONFIG_SRCDIR([libbfd.c]) + AC_CANONICAL_TARGET + AC_ISC_POSIX + +-AM_INIT_AUTOMAKE(bfd, 2.22) ++AM_INIT_AUTOMAKE(bfd, 2.22.0) + + dnl These must be called before LT_INIT, because it may want + dnl to call AC_CHECK_PROG. --- binutils-2.23.1.orig/debian/patches/134_gold_no_spu.patch +++ binutils-2.23.1/debian/patches/134_gold_no_spu.patch @@ -0,0 +1,13 @@ +Author: +Description: Description: Don't configure gold for spu target. +--- a/Makefile.in ++++ b/Makefile.in +@@ -15622,7 +15622,7 @@ + srcdiroption="--srcdir=$${topdir}/gold"; \ + libsrcdir="$$s/gold"; \ + $(SHELL) $${libsrcdir}/configure \ +- $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ ++ $$(echo $(HOST_CONFIGARGS) |sed 's/,spu//') --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + || exit 1 + @endif gold --- binutils-2.23.1.orig/debian/patches/013_bash_in_ld_testsuite.patch +++ binutils-2.23.1/debian/patches/013_bash_in_ld_testsuite.patch @@ -0,0 +1,26 @@ +Author: Matthias Klose +Description: Explicitely use bash for the ld testsuite. +--- a/ld/testsuite/config/default.exp ++++ b/ld/testsuite/config/default.exp +@@ -120,10 +120,10 @@ + #makefile rules, with embedded shell variable expansions. + #make wants $$shell_var, we want $shell_var ... + set cmd "host='$target_triplet' && . $srcdir/../configure.host && sed -e 's,\\\$\\\$,\$,g' < +Date: Fri, 27 Jul 2012 14:16:34 +0100 +Subject: [PATCH] Added R_AARCH64_GOT_LD_PREL19 reloc implementation. + +Testcases added for reloc in GAS and LD. +--- + bfd/elf64-aarch64.c | 28 +++++- + bfd/reloc.c | 8 ++ + gas/config/tc-aarch64.c | 123 ++++++++++++++------ + gas/testsuite/gas/aarch64/reloc-insn.d | 36 ++++--- + gas/testsuite/gas/aarch64/reloc-insn.s | 6 + + include/elf/aarch64.h | 1 + + ld/testsuite/ld-aarch64/aarch64-elf.exp | 7 +- + ld/testsuite/ld-aarch64/emit-relocs-309-low-bad.d | 5 + + ld/testsuite/ld-aarch64/emit-relocs-309-low.d | 12 ++ + ld/testsuite/ld-aarch64/emit-relocs-309-up-bad.d | 5 + + ld/testsuite/ld-aarch64/emit-relocs-309-up.d | 12 ++ + ld/testsuite/ld-aarch64/emit-relocs-309.s | 14 +++ + 12 files changed, 202 insertions(+), 55 deletions(-) + create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-309-low-bad.d + create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-309-low.d + create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-309-up-bad.d + create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-309-up.d + create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-309.s + +diff --git a/bfd/elf64-aarch64.c b/bfd/elf64-aarch64.c +index 6299074..06c976f 100644 +--- a/bfd/elf64-aarch64.c ++++ b/bfd/elf64-aarch64.c +@@ -908,7 +908,23 @@ static reloc_howto_type elf64_aarch64_howto_table[] = + EMPTY_HOWTO (306), + EMPTY_HOWTO (307), + EMPTY_HOWTO (308), +- EMPTY_HOWTO (309), ++ ++ /* Set a load-literal immediate field to bits ++ 0x1FFFFC of G(S)-P */ ++ HOWTO (R_AARCH64_GOT_LD_PREL19, /* type */ ++ 2, /* rightshift */ ++ 2, /* size (0 = byte,1 = short,2 = long) */ ++ 19, /* bitsize */ ++ TRUE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ bfd_elf_generic_reloc, /* special_function */ ++ "R_AARCH64_GOT_LD_PREL19", /* name */ ++ FALSE, /* partial_inplace */ ++ 0xffffe0, /* src_mask */ ++ 0xffffe0, /* dst_mask */ ++ TRUE), /* pcrel_offset */ ++ + EMPTY_HOWTO (310), + + /* Get to the page for the GOT entry for the symbol +@@ -1427,6 +1443,7 @@ static const struct elf64_aarch64_reloc_map elf64_aarch64_reloc_map[] = + {BFD_RELOC_AARCH64_CALL26, R_AARCH64_CALL26}, + + /* Relocations for PIC. */ ++ {BFD_RELOC_AARCH64_GOT_LD_PREL19, R_AARCH64_GOT_LD_PREL19}, + {BFD_RELOC_AARCH64_ADR_GOT_PAGE, R_AARCH64_ADR_GOT_PAGE}, + {BFD_RELOC_AARCH64_LD64_GOT_LO12_NC, R_AARCH64_LD64_GOT_LO12_NC}, + +@@ -2143,6 +2160,10 @@ aarch64_resolve_relocation (unsigned int r_type, bfd_vma place, bfd_vma value, + value = PG (value + addend) - PG (place); + break; + ++ case R_AARCH64_GOT_LD_PREL19: ++ value = value + addend - place; ++ break; ++ + case R_AARCH64_ADR_GOT_PAGE: + case R_AARCH64_TLSDESC_ADR_PAGE: + case R_AARCH64_TLSGD_ADR_PAGE21: +@@ -3362,6 +3383,7 @@ bfd_elf_aarch64_put_addend (bfd *abfd, + break; + + case R_AARCH64_LD_PREL_LO19: ++ case R_AARCH64_GOT_LD_PREL19: + if (old_addend & ((1 << howto->rightshift) - 1)) + return bfd_reloc_overflow; + contents = reencode_ld_lit_ofs_19 (contents, addend); +@@ -3570,6 +3592,7 @@ aarch64_reloc_got_type (unsigned int r_type) + { + case R_AARCH64_LD64_GOT_LO12_NC: + case R_AARCH64_ADR_GOT_PAGE: ++ case R_AARCH64_GOT_LD_PREL19: + return GOT_NORMAL; + + case R_AARCH64_TLSGD_ADR_PAGE21: +@@ -3992,6 +4015,7 @@ elf64_aarch64_final_link_relocate (reloc_howto_type *howto, + + case R_AARCH64_LD64_GOT_LO12_NC: + case R_AARCH64_ADR_GOT_PAGE: ++ case R_AARCH64_GOT_LD_PREL19: + if (globals->root.sgot == NULL) + BFD_ASSERT (h != NULL); + +@@ -5116,6 +5140,7 @@ elf64_aarch64_check_relocs (bfd *abfd, struct bfd_link_info *info, + /* RR: We probably want to keep a consistency check that + there are no dangling GOT_PAGE relocs. */ + case R_AARCH64_LD64_GOT_LO12_NC: ++ case R_AARCH64_GOT_LD_PREL19: + case R_AARCH64_ADR_GOT_PAGE: + case R_AARCH64_TLSGD_ADR_PAGE21: + case R_AARCH64_TLSGD_ADD_LO12_NC: +@@ -5201,6 +5226,7 @@ elf64_aarch64_check_relocs (bfd *abfd, struct bfd_link_info *info, + + case R_AARCH64_ADR_PREL_PG_HI21_NC: + case R_AARCH64_ADR_PREL_PG_HI21: ++ case R_AARCH64_ADR_PREL_LO21: + if (h != NULL && info->executable) + { + /* If this reloc is in a read-only section, we might +diff --git a/bfd/reloc.c b/bfd/reloc.c +index 47d052d..a0b185f 100644 +--- a/bfd/reloc.c ++++ b/bfd/reloc.c +@@ -5889,6 +5889,14 @@ ENUMDOC + AArch64 ADD immediate instruction, holding bits 0 to 11 of the address. + Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. + ENUM ++ BFD_RELOC_AARCH64_GOT_LD_PREL19 ++ENUMDOC ++ AArch64 Load Literal instruction, holding a 19 bit PC relative word ++ offset of the global offset table entry for a symbol. The lowest two ++ bits must be zero and are not stored in the instruction, giving a 21 ++ bit signed byte offset. This relocation type requires signed overflow ++ checking. ++ENUM + BFD_RELOC_AARCH64_ADR_GOT_PAGE + ENUMDOC + Get to the page base of the global offset table entry for a symbol as +diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c +index 4333e8e..e695e88 100644 +--- a/gas/config/tc-aarch64.c ++++ b/gas/config/tc-aarch64.c +@@ -2298,6 +2298,12 @@ static struct reloc_table_entry reloc_table[] = { + BFD_RELOC_AARCH64_MOVW_G3, + 0, + 0}, ++ /* Get to the GOT entry for a symbol. */ ++ {"got_prel19", 0, ++ 0, ++ 0, ++ 0, ++ BFD_RELOC_AARCH64_GOT_LD_PREL19}, + /* Get to the page containing GOT entry for a symbol. */ + {"got", 1, + BFD_RELOC_AARCH64_ADR_GOT_PAGE, +@@ -2816,14 +2822,53 @@ parse_address_main (char **str, aarch64_opnd_info *operand, int reloc, + operand->addr.pcrel = 1; + operand->addr.preind = 1; + +- if (skip_past_char (&p, '=')) +- /* =immediate; need to generate the literal in the liternal pool. */ +- inst.gen_lit_pool = 1; ++ /* #:: */ ++ skip_past_char (&p, '#'); ++ if (reloc && skip_past_char (&p, ':')) ++ { ++ struct reloc_table_entry *entry; ++ ++ /* Try to parse a relocation modifier. Anything else is ++ an error. */ ++ entry = find_reloc_table_entry (&p); ++ if (! entry) ++ { ++ set_syntax_error (_("unknown relocation modifier")); ++ return FALSE; ++ } ++ ++ if (entry->ldst_type == 0) ++ { ++ set_syntax_error ++ (_("this relocation modifier is not allowed on this " ++ "instruction")); ++ return FALSE; ++ } ++ ++ /* #:: */ ++ if (! my_get_expression (exp, &p, GE_NO_PREFIX, 1)) ++ { ++ set_syntax_error (_("invalid relocation expression")); ++ return FALSE; ++ } + +- if (! my_get_expression (exp, &p, GE_NO_PREFIX, 1)) ++ /* #:: */ ++ /* Record the load/store relocation type. */ ++ inst.reloc.type = entry->ldst_type; ++ inst.reloc.pc_rel = entry->pc_rel; ++ } ++ else + { +- set_syntax_error (_("invalid address")); +- return FALSE; ++ ++ if (skip_past_char (&p, '=')) ++ /* =immediate; need to generate the literal in the literal pool. */ ++ inst.gen_lit_pool = 1; ++ ++ if (!my_get_expression (exp, &p, GE_NO_PREFIX, 1)) ++ { ++ set_syntax_error (_("invalid address")); ++ return FALSE; ++ } + } + + *str = p; +@@ -4889,37 +4934,39 @@ parse_operands (char *str, const aarch64_opcode *opcode) + else + { + info->imm.value = 0; +- switch (opcode->iclass) +- { +- case compbranch: +- case condbranch: +- /* e.g. CBZ or B.COND */ +- gas_assert (operands[i] == AARCH64_OPND_ADDR_PCREL19); +- inst.reloc.type = BFD_RELOC_AARCH64_BRANCH19; +- break; +- case testbranch: +- /* e.g. TBZ */ +- gas_assert (operands[i] == AARCH64_OPND_ADDR_PCREL14); +- inst.reloc.type = BFD_RELOC_AARCH64_TSTBR14; +- break; +- case branch_imm: +- /* e.g. B or BL */ +- gas_assert (operands[i] == AARCH64_OPND_ADDR_PCREL26); +- inst.reloc.type = (opcode->op == OP_BL) +- ? BFD_RELOC_AARCH64_CALL26 : BFD_RELOC_AARCH64_JUMP26; +- break; +- case loadlit: +- gas_assert (operands[i] == AARCH64_OPND_ADDR_PCREL19); +- inst.reloc.type = BFD_RELOC_AARCH64_LD_LO19_PCREL; +- break; +- case pcreladdr: +- gas_assert (operands[i] == AARCH64_OPND_ADDR_PCREL21); +- inst.reloc.type = BFD_RELOC_AARCH64_ADR_LO21_PCREL; +- break; +- default: +- gas_assert (0); +- abort (); +- } ++ if (inst.reloc.type == BFD_RELOC_UNUSED) ++ switch (opcode->iclass) ++ { ++ case compbranch: ++ case condbranch: ++ /* e.g. CBZ or B.COND */ ++ gas_assert (operands[i] == AARCH64_OPND_ADDR_PCREL19); ++ inst.reloc.type = BFD_RELOC_AARCH64_BRANCH19; ++ break; ++ case testbranch: ++ /* e.g. TBZ */ ++ gas_assert (operands[i] == AARCH64_OPND_ADDR_PCREL14); ++ inst.reloc.type = BFD_RELOC_AARCH64_TSTBR14; ++ break; ++ case branch_imm: ++ /* e.g. B or BL */ ++ gas_assert (operands[i] == AARCH64_OPND_ADDR_PCREL26); ++ inst.reloc.type = ++ (opcode->op == OP_BL) ? BFD_RELOC_AARCH64_CALL26 ++ : BFD_RELOC_AARCH64_JUMP26; ++ break; ++ case loadlit: ++ gas_assert (operands[i] == AARCH64_OPND_ADDR_PCREL19); ++ inst.reloc.type = BFD_RELOC_AARCH64_LD_LO19_PCREL; ++ break; ++ case pcreladdr: ++ gas_assert (operands[i] == AARCH64_OPND_ADDR_PCREL21); ++ inst.reloc.type = BFD_RELOC_AARCH64_ADR_LO21_PCREL; ++ break; ++ default: ++ gas_assert (0); ++ abort (); ++ } + inst.reloc.pc_rel = 1; + } + break; +@@ -6418,6 +6465,7 @@ md_apply_fix (fixS * fixP, valueT * valP, segT seg) + case BFD_RELOC_AARCH64_LDST32_LO12: + case BFD_RELOC_AARCH64_LDST64_LO12: + case BFD_RELOC_AARCH64_LDST128_LO12: ++ case BFD_RELOC_AARCH64_GOT_LD_PREL19: + case BFD_RELOC_AARCH64_ADR_GOT_PAGE: + case BFD_RELOC_AARCH64_LD64_GOT_LO12_NC: + /* Should always be exported to object file, see +@@ -6575,6 +6623,7 @@ aarch64_force_relocation (struct fix *fixp) + case BFD_RELOC_AARCH64_LDST32_LO12: + case BFD_RELOC_AARCH64_LDST64_LO12: + case BFD_RELOC_AARCH64_LDST128_LO12: ++ case BFD_RELOC_AARCH64_GOT_LD_PREL19: + /* Always leave these relocations for the linker. */ + return 1; + +diff --git a/gas/testsuite/gas/aarch64/reloc-insn.d b/gas/testsuite/gas/aarch64/reloc-insn.d +index ce37b92..7eb13a2 100644 +--- a/gas/testsuite/gas/aarch64/reloc-insn.d ++++ b/gas/testsuite/gas/aarch64/reloc-insn.d +@@ -37,12 +37,12 @@ Disassembly of section \.text: + 5c: f2d75301 movk x1, #0xba98, lsl #32 + 60: f2aeca81 movk x1, #0x7654, lsl #16 + 64: f2864201 movk x1, #0x3210 +- 68: 58000920 ldr x0, 18c ++ 68: 58000960 ldr x0, 194 + 6c: 58000001 ldr x1, 0 + 6c: R_AARCH64_LD_PREL_LO19 \.data\+0x8 + 70: 58000002 ldr x2, 0 + 70: R_AARCH64_LD_PREL_LO19 xdata\+0xc +- 74: 100008c0 adr x0, 18c ++ 74: 10000900 adr x0, 194 + 78: 10000001 adr x1, 0 + 78: R_AARCH64_ADR_PREL_LO21 \.data\+0x8 + 7c: 10000002 adr x2, 0 +@@ -54,7 +54,7 @@ Disassembly of section \.text: + 88: 10000005 adr x5, 0 + 88: R_AARCH64_ADR_PREL_LO21 xdata\+0xff8 + 8c: 90000000 adrp x0, 0 +- 8c: R_AARCH64_ADR_PREL_PG_HI21 \.text\+0x18c ++ 8c: R_AARCH64_ADR_PREL_PG_HI21 \.text\+0x194 + 90: 90000001 adrp x1, 0 + 90: R_AARCH64_ADR_PREL_PG_HI21 \.data\+0x8 + 94: 90000002 adrp x2, 0 +@@ -66,7 +66,7 @@ Disassembly of section \.text: + a0: 90000005 adrp x5, 0 + a0: R_AARCH64_ADR_PREL_PG_HI21 xdata\+0xff8 + a4: 90000000 adrp x0, 0 +- a4: R_AARCH64_ADR_PREL_PG_HI21 \.text\+0x18c ++ a4: R_AARCH64_ADR_PREL_PG_HI21 \.text\+0x194 + a8: 90000001 adrp x1, 0 + a8: R_AARCH64_ADR_PREL_PG_HI21 \.data\+0x8 + ac: 90000002 adrp x2, 0 +@@ -78,7 +78,7 @@ Disassembly of section \.text: + b8: 90000005 adrp x5, 0 + b8: R_AARCH64_ADR_PREL_PG_HI21 xdata\+0xff8 + bc: 91000000 add x0, x0, #0x0 +- bc: R_AARCH64_ADD_ABS_LO12_NC \.text\+0x18c ++ bc: R_AARCH64_ADD_ABS_LO12_NC \.text\+0x194 + c0: 91000021 add x1, x1, #0x0 + c0: R_AARCH64_ADD_ABS_LO12_NC \.data\+0x8 + c4: 91000042 add x2, x2, #0x0 +@@ -91,7 +91,7 @@ Disassembly of section \.text: + d0: R_AARCH64_ADD_ABS_LO12_NC xdata\+0xff8 + d4: 913ffcc6 add x6, x6, #0xfff + d8: 39400000 ldrb w0, \[x0\] +- d8: R_AARCH64_LDST8_ABS_LO12_NC \.text\+0x18c ++ d8: R_AARCH64_LDST8_ABS_LO12_NC \.text\+0x194 + dc: 39400021 ldrb w1, \[x1\] + dc: R_AARCH64_LDST8_ABS_LO12_NC \.data\+0x8 + e0: 39400042 ldrb w2, \[x2\] +@@ -103,22 +103,22 @@ Disassembly of section \.text: + ec: 394000a5 ldrb w5, \[x5\] + ec: R_AARCH64_LDST8_ABS_LO12_NC xdata\+0xff8 + f0: 397ffcc6 ldrb w6, \[x6,#4095\] +- f4: 360004e0 tbz w0, #0, 190 ++ f4: 36000520 tbz w0, #0, 198 + f8: b6f80001 tbz x1, #63, 0 + f8: R_AARCH64_TSTBR14 xlab +- fc: 374004a2 tbnz w2, #8, 190 ++ fc: 374004e2 tbnz w2, #8, 198 + 100: b7780002 tbnz x2, #47, 0 + 100: R_AARCH64_TSTBR14 xlab +- 104: 54000460 b\.eq 190 ++ 104: 540004a0 b\.eq 198 + 108: 54000000 b\.eq 0 + 108: R_AARCH64_CONDBR19 xlab +- 10c: b4000420 cbz x0, 190 ++ 10c: b4000460 cbz x0, 198 + 110: b500001e cbnz x30, 0 + 110: R_AARCH64_CONDBR19 xlab +- 114: 1400001f b 190 ++ 114: 14000021 b 198 + 118: 14000000 b 0 + 118: R_AARCH64_JUMP26 xlab +- 11c: 9400001d bl 190 ++ 11c: 9400001f bl 198 + 120: 94000000 bl 0 + 120: R_AARCH64_CALL26 xlab + 124: d2e24680 movz x0, #0x1234, lsl #48 +@@ -142,7 +142,7 @@ Disassembly of section \.text: + 16c: f8500020 ldr x0, \[x1,#-256\] + 170: f97ffc20 ldr x0, \[x1,#32760\] + 174: 79400000 ldrh w0, \[x0\] +- 174: R_AARCH64_LDST16_ABS_LO12_NC \.text\+0x18c ++ 174: R_AARCH64_LDST16_ABS_LO12_NC \.text\+0x194 + 178: b9400021 ldr w1, \[x1\] + 178: R_AARCH64_LDST32_ABS_LO12_NC \.data\+0x8 + 17c: f9400042 ldr x2, \[x2\] +@@ -151,7 +151,11 @@ Disassembly of section \.text: + 180: R_AARCH64_LDST128_ABS_LO12_NC xlit + 184: f98000f0 prfm pstl1keep, \[x7\] + 184: R_AARCH64_LDST64_ABS_LO12_NC \.data\+0x100c +- 188: d65f03c0 ret ++ 188: 58000000 ldr x0, 1 ++ 188: R_AARCH64_GOT_LD_PREL19 cdata ++ 18c: 39400001 ldrb w1, \[x0\] ++ 190: d65f03c0 ret + +-000000000000018c : +- 18c: deadf00d \.word 0xdeadf00d ++ ++0000000000000194 : ++ 194: deadf00d \.word 0xdeadf00d +diff --git a/gas/testsuite/gas/aarch64/reloc-insn.s b/gas/testsuite/gas/aarch64/reloc-insn.s +index d6e6aa6..1d13900 100644 +--- a/gas/testsuite/gas/aarch64/reloc-insn.s ++++ b/gas/testsuite/gas/aarch64/reloc-insn.s +@@ -176,6 +176,10 @@ func: + + // BFD_RELOC_AARCH64_LDST64_LO12 + prfm pstl1keep, [x7, #:lo12:ldata+4100] ++ ++ // BFD_RELOC_AARCH64_GOT_LD_PREL19 ++ ldr x0, :got_prel19:cdata ++ ldrb w1, [x0] + + ret + +@@ -201,3 +205,5 @@ ldata: .xword 0x1122334455667788 + .set u64, 0xfedcba9876543210 + .set bit1,0xf000000000000000 + .set bit2,~0xf ++ ++.comm cdata,1,8 +diff --git a/include/elf/aarch64.h b/include/elf/aarch64.h +index 7787c68..e3af444 100644 +--- a/include/elf/aarch64.h ++++ b/include/elf/aarch64.h +@@ -153,6 +153,7 @@ RELOC_NUMBER (R_AARCH64_LDST64_ABS_LO12_NC, 286) + /* LD/ST128: (S+A) & 0xff0 */ + RELOC_NUMBER (R_AARCH64_LDST128_ABS_LO12_NC, 299) + ++RELOC_NUMBER (R_AARCH64_GOT_LD_PREL19, 309) + RELOC_NUMBER (R_AARCH64_ADR_GOT_PAGE, 311) + RELOC_NUMBER (R_AARCH64_LD64_GOT_LO12_NC, 312) + +#diff --git a/ld/testsuite/ld-aarch64/aarch64-elf.exp b/ld/testsuite/ld-aarch64/aarch64-elf.exp +#index eefe05a..7e5d73e 100644 +#--- a/ld/testsuite/ld-aarch64/aarch64-elf.exp +#+++ b/ld/testsuite/ld-aarch64/aarch64-elf.exp +#@@ -78,7 +78,12 @@ run_dump_test "emit-relocs-286" +# run_dump_test "emit-relocs-286-bad" +# # 287-298 are not done yet +# run_dump_test "emit-relocs-299" +#-# 300-310 are not done yet +#+# 300-308 are not done yet +#+run_dump_test "emit-relocs-309-up" +#+run_dump_test "emit-relocs-309-low" +#+run_dump_test "emit-relocs-309-up-bad" +#+run_dump_test "emit-relocs-309-low-bad" +#+# 310 not done yet +# run_dump_test "emit-relocs-311" +# run_dump_test "emit-relocs-312" +# +diff --git a/ld/testsuite/ld-aarch64/emit-relocs-309-low-bad.d b/ld/testsuite/ld-aarch64/emit-relocs-309-low-bad.d +new file mode 100644 +index 0000000..6c2d0dc +--- /dev/null ++++ b/ld/testsuite/ld-aarch64/emit-relocs-309-low-bad.d +@@ -0,0 +1,5 @@ ++#name: aarch64-emit-relocs-309-low-bad ++#source: emit-relocs-309.s ++#as: ++#ld: -Ttext 0xFFFFFD --section-start .got=0x0 ++#error: .*relocation truncated to fit: R_AARCH64_GOT_LD_PREL19.* +diff --git a/ld/testsuite/ld-aarch64/emit-relocs-309-low.d b/ld/testsuite/ld-aarch64/emit-relocs-309-low.d +new file mode 100644 +index 0000000..4dee982 +--- /dev/null ++++ b/ld/testsuite/ld-aarch64/emit-relocs-309-low.d +@@ -0,0 +1,12 @@ ++#name: aarch64-emit-relocs-309-low ++#source: emit-relocs-309.s ++#as: ++#ld: -Ttext 0xFFFFC --section-start .got=0x0 ++#objdump: -dr ++#... ++ ++Disassembly of section \.text: ++ ++00000000000ffffc <_start>: ++ ffffc: d503201f nop ++ 100000: 58800000 ldr x0, 0 <_GLOBAL_OFFSET_TABLE_-0x8> +diff --git a/ld/testsuite/ld-aarch64/emit-relocs-309-up-bad.d b/ld/testsuite/ld-aarch64/emit-relocs-309-up-bad.d +new file mode 100644 +index 0000000..802b51e +--- /dev/null ++++ b/ld/testsuite/ld-aarch64/emit-relocs-309-up-bad.d +@@ -0,0 +1,5 @@ ++#name: aarch64-emit-relocs-309-up-bad ++#source: emit-relocs-309.s ++#as: ++#ld: -Ttext 0x0 --section-start .got=0x100001 ++#error: .*relocation truncated to fit: R_AARCH64_GOT_LD_PREL19.* +diff --git a/ld/testsuite/ld-aarch64/emit-relocs-309-up.d b/ld/testsuite/ld-aarch64/emit-relocs-309-up.d +new file mode 100644 +index 0000000..dc2bb55 +--- /dev/null ++++ b/ld/testsuite/ld-aarch64/emit-relocs-309-up.d +@@ -0,0 +1,12 @@ ++#name: aarch64-emit-relocs-309-up ++#source: emit-relocs-309.s ++#as: ++#ld: -Ttext 0x0 --section-start .got=0x100000 ++#objdump: -dr ++#... ++ ++Disassembly of section \.text: ++ ++0000000000000000 <_start>: ++ 0: d503201f nop ++ 4: 587fffe0 ldr x0, 100000 <_stack\+0x80000> +diff --git a/ld/testsuite/ld-aarch64/emit-relocs-309.s b/ld/testsuite/ld-aarch64/emit-relocs-309.s +new file mode 100644 +index 0000000..d66c64b +--- /dev/null ++++ b/ld/testsuite/ld-aarch64/emit-relocs-309.s +@@ -0,0 +1,14 @@ ++# R_AARCH64_GOT_LD_PREL19 must satisfy condition: ++# ++# -2^20 <= G(S) - P < 2^20 ++# ++ ++ .comm src,1,8 ++ ++ .global _start ++ ++ .text ++ ++_start: ++ nop ++ ldr x0, :got_prel19:src +-- +1.7.5.2 +diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h +index bc5ed0c..c37c005 100644 +--- a/bfd/bfd-in2.h ++++ b/bfd/bfd-in2.h +@@ -5072,6 +5072,13 @@ the dynamic object into the runtime process image. */ + Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */ + BFD_RELOC_AARCH64_ADD_LO12, + ++/* AArch64 Load Literal instruction, holding a 19 bit PC relative word ++offset of the global offset table entry for a symbol. The lowest two ++bits must be zero and are not stored in the instruction, giving a 21 ++bit signed byte offset. This relocation type requires signed overflow ++checking. */ ++ BFD_RELOC_AARCH64_GOT_LD_PREL19, ++ + /* Get to the page base of the global offset table entry for a symbol as + part of an ADRP instruction using a 21 bit PC relative value.Used in + conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC. */ +diff --git a/bfd/libbfd.h b/bfd/libbfd.h +index 2e9d706..fe126e6 100644 +--- a/bfd/libbfd.h ++++ b/bfd/libbfd.h +@@ -2421,6 +2421,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@", + "BFD_RELOC_MICROBLAZE_32_GOTOFF", + "BFD_RELOC_MICROBLAZE_COPY", + "BFD_RELOC_AARCH64_ADD_LO12", ++ "BFD_RELOC_AARCH64_GOT_LD_PREL19", + "BFD_RELOC_AARCH64_ADR_GOT_PAGE", + "BFD_RELOC_AARCH64_ADR_HI21_PCREL", + "BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL", --- binutils-2.23.1.orig/debian/patches/168_pr14918.diff +++ binutils-2.23.1/debian/patches/168_pr14918.diff @@ -0,0 +1,29 @@ +# DP: Fix PR ld/14918: linking with -flto always links in libgcc_s.so + +2012-12-06 H.J. Lu + + PR ld/14918 + * plugin.c (plugin_opt_plugin_arg): Ignore -pass-through=. + +diff --git a/ld/plugin.c b/ld/plugin.c +index da99e77..2966f0f 100644 +--- a/ld/plugin.c ++++ b/ld/plugin.c +@@ -217,6 +220,17 @@ plugin_opt_plugin_arg (const char *arg) + if (!last_plugin) + return set_plugin_error (_("")); + ++ /* Ignore -pass-through= from GCC driver. */ ++ if (*arg == '-') ++ { ++ const char *p; ++ for (p = arg + 1; p; p++) ++ if (*p != '-') ++ break; ++ if (strncmp (p, "pass-through=", 13) == 0) ++ return 0; ++ } ++ + newarg = xmalloc (sizeof *newarg); + newarg->arg = arg; + newarg->next = NULL; --- binutils-2.23.1.orig/debian/patches/164_ld_doc_remove_xref.diff +++ binutils-2.23.1/debian/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.texinfo ++++ b/ld/ld.texinfo +@@ -7485,7 +7485,8 @@ + 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 --- binutils-2.23.1.orig/debian/patches/srec_scan_null_deref.diff +++ binutils-2.23.1/debian/patches/srec_scan_null_deref.diff @@ -0,0 +1,13 @@ +# DP: #684903, fix srec_scan null dereference. + +--- a/bfd/srec.c 2012-08-14 10:10:14.857621139 -0400 ++++ b/bfd/srec.c 2012-08-14 10:10:21.217621258 -0400 +@@ -478,6 +478,8 @@ + } + + check_sum = bytes = HEX (hdr + 1); ++ if (bytes == 0) goto error_return; ++ + if (bytes * 2 > bufsize) + { + if (buf != NULL) --- binutils-2.23.1.orig/debian/patches/128_ppc64_powerpc_biarch.patch +++ binutils-2.23.1/debian/patches/128_ppc64_powerpc_biarch.patch @@ -0,0 +1,15 @@ +--- a/ld/emulparams/elf32ppccommon.sh ++++ b/ld/emulparams/elf32ppccommon.sh +@@ -48,3 +48,12 @@ + case "$EMULATION_NAME" in + *64*) LIBPATH_SUFFIX=64 ;; + 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 --- binutils-2.23.1.orig/debian/patches/series +++ binutils-2.23.1/debian/patches/series @@ -0,0 +1,28 @@ +branch-updates.diff +#branch-version.diff +001_ld_makefile_patch.patch +002_gprof_profile_arcs.patch +003_gprof_see_also_monitor.patch +006_better_file_error.patch +012_check_ldrunpath_length.patch +013_bash_in_ld_testsuite.patch +#014_hash_style-both.patch +127_x86_64_i386_biarch.patch +128_ppc64_powerpc_biarch.patch +129_ld_mulitarch_dirs.patch +130_gold_disable_testsuite_build.patch +131_ld_bootstrap_testsuite.patch +134_gold_no_spu.patch +135_bfd_version.patch +157_ar_scripts_with_tilde.patch +158_ld_system_root.patch +161_gold_dummy_zoption.diff +163_multiarch_search_path.patch +aarch64-got-ld-prel19-reloc.diff +armhf-sf-float-abi-flags.diff +# only applied for GFDL builds +ld-fuse-option.diff +168_pr14918.diff +binutils-texi.diff +srec_scan_null_deref.diff +#164_ld_doc_remove_xref.diff --- binutils-2.23.1.orig/debian/patches/001_ld_makefile_patch.patch +++ binutils-2.23.1/debian/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 +@@ -37,7 +37,7 @@ + # 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 +@@ -367,7 +367,7 @@ + # 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 --- binutils-2.23.1.orig/debian/patches/157_ar_scripts_with_tilde.patch +++ binutils-2.23.1/debian/patches/157_ar_scripts_with_tilde.patch @@ -0,0 +1,11 @@ +--- a/binutils/arlex.l ++++ b/binutils/arlex.l +@@ -79,7 +79,7 @@ + "(" { return '('; } + ")" { return ')'; } + "," { return ','; } +-[A-Za-z0-9/\\$:.\-\_]+ { ++[A-Za-z0-9/\\$:.\-\_~]+ { + yylval.name = xstrdup (yytext); + return FILENAME; + } --- binutils-2.23.1.orig/debian/patches/ld-fuse-option.diff +++ binutils-2.23.1/debian/patches/ld-fuse-option.diff @@ -0,0 +1,41 @@ +# DP: Add fuse-ld= for GCC linker option compatibility in ld and gold. + +ld/ + +2012-11-28 H.J. Lu + + * lexsup.c (ld_options): Add fuse-ld= for GCC linker option + compatibility. + +gold/ + +2012-11-28 H.J. Lu + + * options.h (General_options): Add -fuse-ld= for GCC linker + option compatibility. + +--- a/ld/lexsup.c ++++ b/ld/lexsup.c +@@ -175,6 +175,9 @@ static const struct ld_option ld_options[] = + '\0', NULL, N_("Ignored for GCC LTO option compatibility"), + ONE_DASH }, + #endif /* ENABLE_PLUGINS */ ++ { {"fuse-ld=", required_argument, NULL, OPTION_IGNORE}, ++ '\0', NULL, N_("Ignored for GCC linker option compatibility"), ++ ONE_DASH }, + { {"Qy", no_argument, NULL, OPTION_IGNORE}, + '\0', NULL, N_("Ignored for SVR4 compatibility"), ONE_DASH }, + { {"emit-relocs", no_argument, NULL, 'q'}, +--- a/gold/options.h ++++ b/gold/options.h +@@ -1178,6 +1178,10 @@ class General_options + DEFINE_special(end_lib, options::TWO_DASHES, '\0', + N_("End a library "), NULL); + ++ DEFINE_string(fuse_ld, options::ONE_DASH, '\0', "", ++ N_("Ignored for GCC linker option compatibility"), ++ ""); ++ + // The -z options. + + DEFINE_bool(combreloc, options::DASH_Z, '\0', true, --- binutils-2.23.1.orig/debian/patches/006_better_file_error.patch +++ binutils-2.23.1/debian/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 +@@ -199,6 +199,13 @@ + { + 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) --- binutils-2.23.1.orig/debian/patches/163_multiarch_search_path.patch +++ binutils-2.23.1/debian/patches/163_multiarch_search_path.patch @@ -0,0 +1,89 @@ +# DP: multiarch search paths + +Index: b/gold/Makefile.am +=================================================================== +--- a/gold/Makefile.am 2012-07-31 20:41:40.000000000 +0000 ++++ b/gold/Makefile.am 2012-07-31 20:42:12.412313288 +0000 +@@ -15,7 +15,7 @@ + -I$(srcdir) -I$(srcdir)/../include -I$(srcdir)/../elfcpp \ + -DLOCALEDIR="\"$(datadir)/locale\"" \ + -DBINDIR="\"$(bindir)\"" -DTOOLBINDIR="\"$(tooldir)/bin\"" \ +- -DTOOLLIBDIR="\"$(tooldir)/lib\"" @INCINTL@ ++ -DTOOLLIBDIR="\"$(tooldir)/lib\"" @INCINTL@ @MULTIARCH_DIRNAME@ + + LIBIBERTY = ../libiberty/libiberty.a + +Index: b/gold/configure +=================================================================== +--- a/gold/configure 2012-07-31 20:13:41.000000000 +0000 ++++ b/gold/configure 2012-07-31 20:47:33.480320543 +0000 +@@ -594,6 +594,7 @@ + MAINT + MAINTAINER_MODE_FALSE + MAINTAINER_MODE_TRUE ++MULTIARCH_DIRNAME + HAVE_PUBNAMES_FALSE + HAVE_PUBNAMES_TRUE + CXXCPP +@@ -7453,6 +7454,14 @@ + 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; } +Index: b/gold/configure.ac +=================================================================== +--- a/gold/configure.ac 2012-07-31 20:13:41.000000000 +0000 ++++ b/gold/configure.ac 2012-07-31 20:42:12.416313288 +0000 +@@ -575,6 +575,14 @@ + 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) +Index: b/gold/options.cc +=================================================================== +--- a/gold/options.cc 2012-07-31 20:41:40.000000000 +0000 ++++ b/gold/options.cc 2012-07-31 20:42:12.416313288 +0000 +@@ -1142,6 +1142,10 @@ + || 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"); + } +Index: b/gold/Makefile.in +=================================================================== +--- a/gold/Makefile.in 2012-07-31 20:41:40.000000000 +0000 ++++ b/gold/Makefile.in 2012-07-31 20:42:12.416313288 +0000 +@@ -371,7 +371,7 @@ + -I$(srcdir) -I$(srcdir)/../include -I$(srcdir)/../elfcpp \ + -DLOCALEDIR="\"$(datadir)/locale\"" \ + -DBINDIR="\"$(bindir)\"" -DTOOLBINDIR="\"$(tooldir)/bin\"" \ +- -DTOOLLIBDIR="\"$(tooldir)/lib\"" @INCINTL@ ++ -DTOOLLIBDIR="\"$(tooldir)/lib\"" @INCINTL@ @MULTIARCH_DIRNAME@ + + LIBIBERTY = ../libiberty/libiberty.a + @PLUGINS_TRUE@LIBDL = -ldl --- binutils-2.23.1.orig/debian/patches/135_bfd_version.patch +++ binutils-2.23.1/debian/patches/135_bfd_version.patch @@ -0,0 +1,43 @@ +Author: +Description: Description: Fix bfd version handling for extra builds + +--- a/bfd/Makefile.am ++++ b/bfd/Makefile.am +@@ -986,14 +986,14 @@ + + bfdver.h: $(srcdir)/version.h $(srcdir)/Makefile.in + @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_version=`echo "$(VERSION)" | sed -e 's/-.*$$//' | sed -e 's/\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\).*/\1.00\2.00\3.00\4.00\5/' -e 's/\([^\.]*\)\..*\(..\)\..*\(..\)\..*\(..\)\..*\(..\)$$/\1\2\3\4\5/'` ;\ ++ bfd_version_string="\"`echo $(VERSION) | sed -e 's/-.*$$//'`\"" ;\ + bfd_soversion="$(VERSION)" ;\ + bfd_version_package="\"$(PKGVERSION)\"" ;\ + report_bugs_to="\"$(REPORT_BUGS_TO)\"" ;\ + if test "x$(RELEASE)" = x ; then \ + bfd_version_date=`sed -n -e 's/.*DATE //p' < $(srcdir)/version.h` ;\ +- bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\ ++ bfd_version_string="\"`echo $(VERSION) | sed -e 's/-.*$$//'`.$${bfd_version_date}\"" ;\ + bfd_soversion="$(VERSION).$${bfd_version_date}" ;\ + fi ;\ + sed -e "s,@bfd_version@,$$bfd_version," \ +--- a/bfd/Makefile.in ++++ b/bfd/Makefile.in +@@ -2036,14 +2036,14 @@ + + bfdver.h: $(srcdir)/version.h $(srcdir)/Makefile.in + @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_version=`echo "$(VERSION)" | sed -e 's/-.*$$//' | sed -e 's/\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\).*/\1.00\2.00\3.00\4.00\5/' -e 's/\([^\.]*\)\..*\(..\)\..*\(..\)\..*\(..\)\..*\(..\)$$/\1\2\3\4\5/'` ;\ ++ bfd_version_string="\"`echo $(VERSION) | sed -e 's/-.*$$//'`\"" ;\ + bfd_soversion="$(VERSION)" ;\ + bfd_version_package="\"$(PKGVERSION)\"" ;\ + report_bugs_to="\"$(REPORT_BUGS_TO)\"" ;\ + if test "x$(RELEASE)" = x ; then \ + bfd_version_date=`sed -n -e 's/.*DATE //p' < $(srcdir)/version.h` ;\ +- bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\ ++ bfd_version_string="\"`echo $(VERSION) | sed -e 's/-.*$$//'`.$${bfd_version_date}\"" ;\ + bfd_soversion="$(VERSION).$${bfd_version_date}" ;\ + fi ;\ + sed -e "s,@bfd_version@,$$bfd_version," \ --- binutils-2.23.1.orig/debian/patches/branch-updates.diff.orig +++ binutils-2.23.1/debian/patches/branch-updates.diff.orig @@ -0,0 +1,4709 @@ +# DP: updates from the binutils-2.22 branch + +# git diff 10968a312d8c536be9993ed06bc88fbe0860d95d 0add40a869f7ebc0403de8aea5429b858f8e30da +# exclude bfd/{configure{,.ac},Makefile.{am,in}} + +diff --git a/bfd/ChangeLog b/bfd/ChangeLog +index 65db027..87498f0 100644 +--- a/bfd/ChangeLog ++++ b/bfd/ChangeLog +@@ -1,3 +1,160 @@ ++2012-02-01 Nick Clifton ++ ++ * Import this patch from the mainline: ++ 2012-01-05 Nick Clifton ++ ++ PR ld/12161 ++ * elf32-avr.c (elf32_avr_relax_delete_bytes): Read in relocs if ++ necessary. ++ ++2012-01-27 John David Anglin ++ ++ Backport from mainline: ++ 2011-12-11 John Davis Anglin ++ ++ PR binutils/13476 ++ * elf32-hppa.c (final_link_relocate): Convert R_PARISC_TLS_GD21L, ++ R_PARISC_TLS_LDM21L and R_PARISC_TLS_IE21L relocations to ++ R_PARISC_DPREL21L when not doing a shared link. Likewise convert ++ R_PARISC_TLS_GD14R, R_PARISC_TLS_LDM14R and R_PARISC_TLS_IE14R to ++ R_PARISC_DPREL14R. Handle R_PARISC_TLS_GD21L, R_PARISC_TLS_LDM21L ++ and R_PARISC_TLS_IE21L with R_PARISC_DLTIND21L. ++ ++ Backport from mainline: ++ 2011-11-06 John David Anglin ++ ++ PR ld/13387 ++ * elf32-hppa.c (elf32_hppa_hide_symbol): Make STT_GNU_IFUNC symbol ++ go through PLT. Reset plt field with init_plt_offset. ++ (elf32_hppa_adjust_dynamic_symbol): Ensure that a PLT slot is ++ allocated for symbols referenced by a plabel. ++ ++2012-01-10 H.J. Lu ++ ++ Backport from mainline: ++ PR ld/13581 ++ * elf64-x86-64.c (elf_x86_64_relocate_section): Remove ABI_64_P ++ check on R_X86_64_PCXX. ++ ++2011-12-19 Chung-Lin Tang ++ ++ Backport from mainline: ++ ++ 2011-12-19 Chung-Lin Tang ++ ++ * reloc.c (BFD_RELOC_MIPS16_TLS_GD,BFD_RELOC_MIPS16_TLS_LDM, ++ BFD_RELOC_MIPS16_TLS_DTPREL_HI16,BFD_RELOC_MIPS16_TLS_DTPREL_LO16, ++ BFD_RELOC_MIPS16_TLS_GOTTPREL,BFD_RELOC_MIPS16_TLS_TPREL_HI16, ++ BFD_RELOC_MIPS16_TLS_TPREL_LO16): New relocations for MIPS16 TLS. ++ * bfd-in2.h (bfd_reloc_code_real): Regenerate. ++ * libbfd.h (bfd_reloc_code_real_names): Regenerate. ++ * elf32-mips.c (elf_mips16_howto_table_rel): Add R_MIPS16_TLS_* ++ entries. ++ (mips16_reloc_map): Add BFD_RELOC_MIPS16_TLS_* to R_MIPS16_TLS_* ++ mappings. ++ * elfn32-mips.c (elf_mips16_howto_table_rel, ++ elf_mips16_howto_table_rela): Add R_MIPS16_TLS_* entries. ++ (mips16_reloc_map): Add BFD_RELOC_MIPS16_TLS_* to R_MIPS16_TLS_* ++ mappings. ++ * elf64-mips.c (mips16_elf64_howto_table_rel, ++ mips16_elf64_howto_table_rela): Add R_MIPS16_TLS_* entries. ++ (mips16_reloc_map): Add BFD_RELOC_MIPS16_TLS_* to R_MIPS16_TLS_* ++ mappings. ++ * elfxx-mips.c (TLS_RELOC_P,mips16_reloc_p, ++ _bfd_mips_elf_check_relocs): Add cases for R_MIPS16_TLS_* relocations. ++ (tls_gd_reloc_p): Add R_MIPS16_TLS_GD case. ++ (tls_ldm_reloc_p): Add R_MIPS16_TLS_LDM case. ++ (tls_gottprel_reloc_p): Add R_MIPS16_TLS_GOTTPREL case. ++ (mips_elf_calculate_relocation): Add cases for R_MIPS16_TLS_*, ++ R_MIPS_TLS_DTPREL32/64, and R_MIPS_TLS_TPREL32/64 relocations. ++ ++2011-12-19 Chung-Lin Tang ++ ++ Backport from mainline: ++ ++ 2011-12-19 Chung-Lin Tang ++ Catherine Moore ++ Sandra Loosemore ++ Richard Sandiford ++ ++ * elfxx-mips.c (mips_elf_local_pic_function_p): Return true when ++ H is a MIPS16 function with a kept 32-bit stub. Update comments. ++ (mips_elf_get_la25_target): New function. ++ (mips_elf_add_la25_intro): Change to use mips_elf_get_la25_target(). ++ (mips_elf_add_la25_stub): Move compute of use_trampoline_p down, ++ change to use mips_elf_get_la25_target(). ++ (mips_elf_relocation_needs_la25_stub): Add target_is_16_bit_code_p ++ parameter, add switch case for R_MIPS16_26. ++ (mips_elf_calculate_relocation): Redirect relocation to point to the ++ LA25 stub if it exists, instead of the MIPS16 stub. Update arguments ++ of call to mips_elf_relocation_needs_la25_stub(), don't use la25 stub ++ for mips16->mips16 calls. ++ (_bfd_mips_elf_check_relocs): Update arguments of call to ++ mips_elf_relocation_needs_la25_stub(). ++ (mips_elf_create_la25_stub): Change to use mips_elf_get_la25_target(). ++ ++2011-12-19 Chung-Lin Tang ++ ++ Backport from mainline: ++ ++ 2011-12-13 Chung-Lin Tang ++ ++ * elfxx-mips.c (mips_elf_calculate_relocation): Correct ++ R_MIPS16_HI16/R_MIPS16_LO16 handling of two cleared lower bits, ++ update comments. ++ ++2011-12-10 David Daney ++ ++ Backport from mainline: ++ ++ 2011-12-10 David Daney ++ ++ * elfxx-mips.c (mips_elf_link_hash_table.rld_value): Remove. ++ (mips_elf_link_hash_table.rld_symbol): New field; ++ (MIPS_ELF_RLD_MAP_SIZE): New macro. ++ (_bfd_mips_elf_add_symbol_hook): Remember __rld_obj_head symbol ++ in rld_symbol. ++ (_bfd_mips_elf_create_dynamic_sections): Remember __rld_map symbol ++ in rld_symbol. ++ (_bfd_mips_elf_size_dynamic_sections): Set correct size for .rld_map. ++ (_bfd_mips_elf_finish_dynamic_symbol): Remove .rld_map handling. ++ (_bfd_mips_elf_finish_dynamic_sections): Use rld_symbol to ++ calculate DT_MIPS_RLD_MAP value. ++ (_bfd_mips_elf_link_hash_table_create): Initialize rld_symbol, ++ quit initializing rld_value. ++ ++2011-12-03 Alan Modra ++ ++ PR ld/13468 ++ * elflink.c (bfd_elf_final_link): Don't segfault when checking ++ for DT_TEXTREL and .dynamic does not exist. ++ ++2011-12-03 Alan Modra ++ ++ PR ld/13470 ++ * elf32-ppc.c (ppc_elf_copy_indirect_symbol): Revert substantive ++ change in 2011-07-01 commit. Comment. ++ * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise. ++ ++2011-12-01 Mikael Pettersson ++ ++ Apply mainline patches ++ * elf32-m68k.c (elf_m68k_check_relocs) : For ++ non-SEC_ALLOC sections break before GOT and PLT accounting. ++ ++2011-12-01 Hans-Peter Nilsson ++ ++ Apply mainline patches ++ * elf32-cris.c (cris_elf_check_relocs) : Move early break for ++ non-SEC_ALLOC sections before GOT and PLT accounting. ++ ++2011-11-21 Tristan Gingold ++ ++ * configure.in: Bump version to 2.22.0 ++ * Makefile.am (RELEASE): Unset. ++ * configure, Makefile.in: Regenerate. ++ + 2011-11-21 Tristan Gingold + + * configure.in: Bump version to 2.22 +diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h +index 22fcdf6..cd90740 100644 +--- a/bfd/bfd-in2.h ++++ b/bfd/bfd-in2.h +@@ -2780,6 +2780,15 @@ to compensate for the borrow when the low bits are added. */ + /* MIPS16 low 16 bits. */ + BFD_RELOC_MIPS16_LO16, + ++/* MIPS16 TLS relocations */ ++ BFD_RELOC_MIPS16_TLS_GD, ++ BFD_RELOC_MIPS16_TLS_LDM, ++ BFD_RELOC_MIPS16_TLS_DTPREL_HI16, ++ BFD_RELOC_MIPS16_TLS_DTPREL_LO16, ++ BFD_RELOC_MIPS16_TLS_GOTTPREL, ++ BFD_RELOC_MIPS16_TLS_TPREL_HI16, ++ BFD_RELOC_MIPS16_TLS_TPREL_LO16, ++ + /* Relocation against a MIPS literal section. */ + BFD_RELOC_MIPS_LITERAL, + BFD_RELOC_MICROMIPS_LITERAL, +diff --git a/bfd/elf32-avr.c b/bfd/elf32-avr.c +index 6d20aef..a7f9217 100644 +--- a/bfd/elf32-avr.c ++++ b/bfd/elf32-avr.c +@@ -1503,11 +1503,18 @@ elf32_avr_relax_delete_bytes (bfd *abfd, + bfd_vma symval; + bfd_vma shrinked_insn_address; + ++ if (isec->reloc_count == 0) ++ continue; ++ + shrinked_insn_address = (sec->output_section->vma + + sec->output_offset + addr - count); + +- irelend = elf_section_data (isec)->relocs + isec->reloc_count; +- for (irel = elf_section_data (isec)->relocs; ++ irel = elf_section_data (isec)->relocs; ++ /* PR 12161: Read in the relocs for this section if necessary. */ ++ if (irel == NULL) ++ irel = _bfd_elf_link_read_relocs (abfd, isec, NULL, NULL, FALSE); ++ ++ for (irelend = irel + isec->reloc_count; + irel < irelend; + irel++) + { +@@ -1564,6 +1571,9 @@ elf32_avr_relax_delete_bytes (bfd *abfd, + /* else...Reference symbol is extern. No need for adjusting + the addend. */ + } ++ ++ if (elf_section_data (isec)->relocs == NULL) ++ free (irelend - isec->reloc_count); + } + } + +diff --git a/bfd/elf32-cris.c b/bfd/elf32-cris.c +index 243a8ec..310f6d1 100644 +--- a/bfd/elf32-cris.c ++++ b/bfd/elf32-cris.c +@@ -3579,6 +3579,12 @@ cris_elf_check_relocs (bfd *abfd, + sec, + cris_elf_howto_table[r_type].name); + } ++ ++ /* We don't need to handle relocs into sections not going into ++ the "real" output. */ ++ if ((sec->flags & SEC_ALLOC) == 0) ++ break; ++ + if (h != NULL) + { + h->non_got_ref = 1; +@@ -3608,11 +3614,6 @@ cris_elf_check_relocs (bfd *abfd, + if (! info->shared) + break; + +- /* We don't need to handle relocs into sections not going into +- the "real" output. */ +- if ((sec->flags & SEC_ALLOC) == 0) +- break; +- + /* We may need to create a reloc section in the dynobj and made room + for this reloc. */ + if (sreloc == NULL) +diff --git a/bfd/elf32-hppa.c b/bfd/elf32-hppa.c +index 7f0f2cb..dcf6df0 100644 +--- a/bfd/elf32-hppa.c ++++ b/bfd/elf32-hppa.c +@@ -1789,10 +1789,12 @@ elf32_hppa_hide_symbol (struct bfd_link_info *info, + } + } + +- if (! hppa_elf_hash_entry (eh)->plabel) ++ /* STT_GNU_IFUNC symbol must go through PLT. */ ++ if (! hppa_elf_hash_entry (eh)->plabel ++ && eh->type != STT_GNU_IFUNC) + { + eh->needs_plt = 0; +- eh->plt = elf_hash_table (info)->init_plt_refcount; ++ eh->plt = elf_hash_table (info)->init_plt_offset; + } + } + +@@ -1814,6 +1816,13 @@ elf32_hppa_adjust_dynamic_symbol (struct bfd_link_info *info, + if (eh->type == STT_FUNC + || eh->needs_plt) + { ++ /* If the symbol is used by a plabel, we must allocate a PLT slot. ++ The refcounts are not reliable when it has been hidden since ++ hide_symbol can be called before the plabel flag is set. */ ++ if (hppa_elf_hash_entry (eh)->plabel ++ && eh->plt.refcount <= 0) ++ eh->plt.refcount = 1; ++ + if (eh->plt.refcount <= 0 + || (eh->def_regular + && eh->root.type != bfd_link_hash_defweak +@@ -3340,10 +3349,16 @@ final_link_relocate (asection *input_section, + switch (r_type) + { + case R_PARISC_DLTIND21L: ++ case R_PARISC_TLS_GD21L: ++ case R_PARISC_TLS_LDM21L: ++ case R_PARISC_TLS_IE21L: + r_type = R_PARISC_DPREL21L; + break; + + case R_PARISC_DLTIND14R: ++ case R_PARISC_TLS_GD14R: ++ case R_PARISC_TLS_LDM14R: ++ case R_PARISC_TLS_IE14R: + r_type = R_PARISC_DPREL14R; + break; + +@@ -3409,53 +3424,48 @@ final_link_relocate (asection *input_section, + case R_PARISC_DPREL21L: + case R_PARISC_DPREL14R: + case R_PARISC_DPREL14F: +- case R_PARISC_TLS_GD21L: +- case R_PARISC_TLS_LDM21L: +- case R_PARISC_TLS_IE21L: + /* Convert instructions that use the linkage table pointer (r19) to + instructions that use the global data pointer (dp). This is the + most efficient way of using PIC code in an incomplete executable, + but the user must follow the standard runtime conventions for + accessing data for this to work. */ +- if (orig_r_type == R_PARISC_DLTIND21L +- || (!info->shared +- && (r_type == R_PARISC_TLS_GD21L +- || r_type == R_PARISC_TLS_LDM21L +- || r_type == R_PARISC_TLS_IE21L))) ++ if (orig_r_type != r_type) + { +- /* Convert addil instructions if the original reloc was a +- DLTIND21L. GCC sometimes uses a register other than r19 for +- the operation, so we must convert any addil instruction +- that uses this relocation. */ +- if ((insn & 0xfc000000) == ((int) OP_ADDIL << 26)) +- insn = ADDIL_DP; +- else +- /* We must have a ldil instruction. It's too hard to find +- and convert the associated add instruction, so issue an +- error. */ +- (*_bfd_error_handler) +- (_("%B(%A+0x%lx): %s fixup for insn 0x%x is not supported in a non-shared link"), +- input_bfd, +- input_section, +- (long) offset, +- howto->name, +- insn); +- } +- else if (orig_r_type == R_PARISC_DLTIND14F) +- { +- /* This must be a format 1 load/store. Change the base +- register to dp. */ +- insn = (insn & 0xfc1ffff) | (27 << 21); ++ if (r_type == R_PARISC_DPREL21L) ++ { ++ /* GCC sometimes uses a register other than r19 for the ++ operation, so we must convert any addil instruction ++ that uses this relocation. */ ++ if ((insn & 0xfc000000) == ((int) OP_ADDIL << 26)) ++ insn = ADDIL_DP; ++ else ++ /* We must have a ldil instruction. It's too hard to find ++ and convert the associated add instruction, so issue an ++ error. */ ++ (*_bfd_error_handler) ++ (_("%B(%A+0x%lx): %s fixup for insn 0x%x is not supported in a non-shared link"), ++ input_bfd, ++ input_section, ++ (long) offset, ++ howto->name, ++ insn); ++ } ++ else if (r_type == R_PARISC_DPREL14F) ++ { ++ /* This must be a format 1 load/store. Change the base ++ register to dp. */ ++ insn = (insn & 0xfc1ffff) | (27 << 21); ++ } + } + +- /* For all the DP relative relocations, we need to examine the symbol's +- section. If it has no section or if it's a code section, then +- "data pointer relative" makes no sense. In that case we don't +- adjust the "value", and for 21 bit addil instructions, we change the +- source addend register from %dp to %r0. This situation commonly +- arises for undefined weak symbols and when a variable's "constness" +- is declared differently from the way the variable is defined. For +- instance: "extern int foo" with foo defined as "const int foo". */ ++ /* For all the DP relative relocations, we need to examine the symbol's ++ section. If it has no section or if it's a code section, then ++ "data pointer relative" makes no sense. In that case we don't ++ adjust the "value", and for 21 bit addil instructions, we change the ++ source addend register from %dp to %r0. This situation commonly ++ arises for undefined weak symbols and when a variable's "constness" ++ is declared differently from the way the variable is defined. For ++ instance: "extern int foo" with foo defined as "const int foo". */ + if (sym_sec == NULL || (sym_sec->flags & SEC_CODE) != 0) + { + if ((insn & ((0x3f << 26) | (0x1f << 21))) +@@ -3472,6 +3482,9 @@ final_link_relocate (asection *input_section, + case R_PARISC_DLTIND21L: + case R_PARISC_DLTIND14R: + case R_PARISC_DLTIND14F: ++ case R_PARISC_TLS_GD21L: ++ case R_PARISC_TLS_LDM21L: ++ case R_PARISC_TLS_IE21L: + case R_PARISC_TLS_GD14R: + case R_PARISC_TLS_LDM14R: + case R_PARISC_TLS_IE14R: +diff --git a/bfd/elf32-m68k.c b/bfd/elf32-m68k.c +index 612525c..3e9ada9 100644 +--- a/bfd/elf32-m68k.c ++++ b/bfd/elf32-m68k.c +@@ -2816,6 +2816,11 @@ elf_m68k_check_relocs (abfd, info, sec, relocs) + case R_68K_8: + case R_68K_16: + case R_68K_32: ++ /* We don't need to handle relocs into sections not going into ++ the "real" output. */ ++ if ((sec->flags & SEC_ALLOC) == 0) ++ break; ++ + if (h != NULL) + { + /* Make sure a plt entry is created for this symbol if it +@@ -2829,8 +2834,7 @@ elf_m68k_check_relocs (abfd, info, sec, relocs) + + /* If we are creating a shared library, we need to copy the + reloc into the shared library. */ +- if (info->shared +- && (sec->flags & SEC_ALLOC) != 0) ++ if (info->shared) + { + /* When creating a shared object, we must copy these + reloc types into the output file. We create a reloc +diff --git a/bfd/elf32-mips.c b/bfd/elf32-mips.c +index fd3d4ba..61e8b45 100644 +--- a/bfd/elf32-mips.c ++++ b/bfd/elf32-mips.c +@@ -830,6 +830,111 @@ static reloc_howto_type elf_mips16_howto_table_rel[] = + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS general dynamic variable reference. */ ++ HOWTO (R_MIPS16_TLS_GD, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_GD", /* name */ ++ TRUE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS local dynamic variable reference. */ ++ HOWTO (R_MIPS16_TLS_LDM, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_LDM", /* name */ ++ TRUE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS local dynamic offset. */ ++ HOWTO (R_MIPS16_TLS_DTPREL_HI16, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_DTPREL_HI16", /* name */ ++ TRUE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS local dynamic offset. */ ++ HOWTO (R_MIPS16_TLS_DTPREL_LO16, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_DTPREL_LO16", /* name */ ++ TRUE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS thread pointer offset. */ ++ HOWTO (R_MIPS16_TLS_GOTTPREL, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_GOTTPREL", /* name */ ++ TRUE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS thread pointer offset. */ ++ HOWTO (R_MIPS16_TLS_TPREL_HI16, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_TPREL_HI16", /* name */ ++ TRUE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS thread pointer offset. */ ++ HOWTO (R_MIPS16_TLS_TPREL_LO16, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_TPREL_LO16", /* name */ ++ TRUE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ + }; + + static reloc_howto_type elf_micromips_howto_table_rel[] = +@@ -1796,6 +1901,15 @@ static const struct elf_reloc_map mips16_reloc_map[] = + { BFD_RELOC_MIPS16_CALL16, R_MIPS16_CALL16 - R_MIPS16_min }, + { BFD_RELOC_MIPS16_HI16_S, R_MIPS16_HI16 - R_MIPS16_min }, + { BFD_RELOC_MIPS16_LO16, R_MIPS16_LO16 - R_MIPS16_min }, ++ { BFD_RELOC_MIPS16_TLS_GD, R_MIPS16_TLS_GD - R_MIPS16_min }, ++ { BFD_RELOC_MIPS16_TLS_LDM, R_MIPS16_TLS_LDM - R_MIPS16_min }, ++ { BFD_RELOC_MIPS16_TLS_DTPREL_HI16, ++ R_MIPS16_TLS_DTPREL_HI16 - R_MIPS16_min }, ++ { BFD_RELOC_MIPS16_TLS_DTPREL_LO16, ++ R_MIPS16_TLS_DTPREL_LO16 - R_MIPS16_min }, ++ { BFD_RELOC_MIPS16_TLS_GOTTPREL, R_MIPS16_TLS_GOTTPREL - R_MIPS16_min }, ++ { BFD_RELOC_MIPS16_TLS_TPREL_HI16, R_MIPS16_TLS_TPREL_HI16 - R_MIPS16_min }, ++ { BFD_RELOC_MIPS16_TLS_TPREL_LO16, R_MIPS16_TLS_TPREL_LO16 - R_MIPS16_min } + }; + + static const struct elf_reloc_map micromips_reloc_map[] = +diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c +index 0c25c3e..574cd98 100644 +--- a/bfd/elf32-ppc.c ++++ b/bfd/elf32-ppc.c +@@ -2987,10 +2987,6 @@ ppc_elf_copy_indirect_symbol (struct bfd_link_info *info, + edir->elf.needs_plt |= eind->elf.needs_plt; + edir->elf.pointer_equality_needed |= eind->elf.pointer_equality_needed; + +- /* If we were called to copy over info for a weak sym, that's all. */ +- if (eind->elf.root.type != bfd_link_hash_indirect) +- return; +- + if (eind->dyn_relocs != NULL) + { + if (edir->dyn_relocs != NULL) +@@ -3022,6 +3018,16 @@ ppc_elf_copy_indirect_symbol (struct bfd_link_info *info, + eind->dyn_relocs = NULL; + } + ++ /* If we were called to copy over info for a weak sym, that's all. ++ You might think dyn_relocs need not be copied over; After all, ++ both syms will be dynamic or both non-dynamic so we're just ++ moving reloc accounting around. However, ELIMINATE_COPY_RELOCS ++ code in ppc_elf_adjust_dynamic_symbol needs to check for ++ dyn_relocs in read-only sections, and it does so on what is the ++ DIR sym here. */ ++ if (eind->elf.root.type != bfd_link_hash_indirect) ++ return; ++ + /* Copy over the GOT refcount entries that we may have already seen to + the symbol which just became indirect. */ + edir->elf.got.refcount += eind->elf.got.refcount; +diff --git a/bfd/elf64-mips.c b/bfd/elf64-mips.c +index 3feb1bb..bdd0c19 100644 +--- a/bfd/elf64-mips.c ++++ b/bfd/elf64-mips.c +@@ -1590,6 +1590,111 @@ static reloc_howto_type mips16_elf64_howto_table_rel[] = + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS general dynamic variable reference. */ ++ HOWTO (R_MIPS16_TLS_GD, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_GD", /* name */ ++ TRUE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS local dynamic variable reference. */ ++ HOWTO (R_MIPS16_TLS_LDM, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_LDM", /* name */ ++ TRUE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS local dynamic offset. */ ++ HOWTO (R_MIPS16_TLS_DTPREL_HI16, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_DTPREL_HI16", /* name */ ++ TRUE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS local dynamic offset. */ ++ HOWTO (R_MIPS16_TLS_DTPREL_LO16, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_DTPREL_LO16", /* name */ ++ TRUE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS thread pointer offset. */ ++ HOWTO (R_MIPS16_TLS_GOTTPREL, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_GOTTPREL", /* name */ ++ TRUE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS thread pointer offset. */ ++ HOWTO (R_MIPS16_TLS_TPREL_HI16, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_TPREL_HI16", /* name */ ++ TRUE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS thread pointer offset. */ ++ HOWTO (R_MIPS16_TLS_TPREL_LO16, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_TPREL_LO16", /* name */ ++ TRUE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ + }; + + static reloc_howto_type mips16_elf64_howto_table_rela[] = +@@ -1686,6 +1791,111 @@ static reloc_howto_type mips16_elf64_howto_table_rela[] = + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS general dynamic variable reference. */ ++ HOWTO (R_MIPS16_TLS_GD, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_GD", /* name */ ++ FALSE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS local dynamic variable reference. */ ++ HOWTO (R_MIPS16_TLS_LDM, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_LDM", /* name */ ++ FALSE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS local dynamic offset. */ ++ HOWTO (R_MIPS16_TLS_DTPREL_HI16, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_DTPREL_HI16", /* name */ ++ FALSE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS local dynamic offset. */ ++ HOWTO (R_MIPS16_TLS_DTPREL_LO16, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_DTPREL_LO16", /* name */ ++ FALSE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS thread pointer offset. */ ++ HOWTO (R_MIPS16_TLS_GOTTPREL, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_GOTTPREL", /* name */ ++ FALSE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS thread pointer offset. */ ++ HOWTO (R_MIPS16_TLS_TPREL_HI16, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_TPREL_HI16", /* name */ ++ FALSE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS thread pointer offset. */ ++ HOWTO (R_MIPS16_TLS_TPREL_LO16, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_TPREL_LO16", /* name */ ++ FALSE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ + }; + + static reloc_howto_type micromips_elf64_howto_table_rel[] = +@@ -2908,6 +3118,15 @@ static const struct elf_reloc_map mips16_reloc_map[] = + { BFD_RELOC_MIPS16_CALL16, R_MIPS16_CALL16 - R_MIPS16_min }, + { BFD_RELOC_MIPS16_HI16_S, R_MIPS16_HI16 - R_MIPS16_min }, + { BFD_RELOC_MIPS16_LO16, R_MIPS16_LO16 - R_MIPS16_min }, ++ { BFD_RELOC_MIPS16_TLS_GD, R_MIPS16_TLS_GD - R_MIPS16_min }, ++ { BFD_RELOC_MIPS16_TLS_LDM, R_MIPS16_TLS_LDM - R_MIPS16_min }, ++ { BFD_RELOC_MIPS16_TLS_DTPREL_HI16, ++ R_MIPS16_TLS_DTPREL_HI16 - R_MIPS16_min }, ++ { BFD_RELOC_MIPS16_TLS_DTPREL_LO16, ++ R_MIPS16_TLS_DTPREL_LO16 - R_MIPS16_min }, ++ { BFD_RELOC_MIPS16_TLS_GOTTPREL, R_MIPS16_TLS_GOTTPREL - R_MIPS16_min }, ++ { BFD_RELOC_MIPS16_TLS_TPREL_HI16, R_MIPS16_TLS_TPREL_HI16 - R_MIPS16_min }, ++ { BFD_RELOC_MIPS16_TLS_TPREL_LO16, R_MIPS16_TLS_TPREL_LO16 - R_MIPS16_min } + }; + + static const struct elf_reloc_map micromips_reloc_map[] = +diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c +index 93d1314..32a3430 100644 +--- a/bfd/elf64-ppc.c ++++ b/bfd/elf64-ppc.c +@@ -4435,10 +4435,6 @@ ppc64_elf_copy_indirect_symbol (struct bfd_link_info *info, + edir->elf.ref_regular_nonweak |= eind->elf.ref_regular_nonweak; + edir->elf.needs_plt |= eind->elf.needs_plt; + +- /* If we were called to copy over info for a weak sym, that's all. */ +- if (eind->elf.root.type != bfd_link_hash_indirect) +- return; +- + /* Copy over any dynamic relocs we may have on the indirect sym. */ + if (eind->dyn_relocs != NULL) + { +@@ -4471,6 +4467,16 @@ ppc64_elf_copy_indirect_symbol (struct bfd_link_info *info, + eind->dyn_relocs = NULL; + } + ++ /* If we were called to copy over info for a weak sym, that's all. ++ You might think dyn_relocs need not be copied over; After all, ++ both syms will be dynamic or both non-dynamic so we're just ++ moving reloc accounting around. However, ELIMINATE_COPY_RELOCS ++ code in ppc64_elf_adjust_dynamic_symbol needs to check for ++ dyn_relocs in read-only sections, and it does so on what is the ++ DIR sym here. */ ++ if (eind->elf.root.type != bfd_link_hash_indirect) ++ return; ++ + /* Copy over got entries that we may have already seen to the + symbol which just became indirect. */ + if (eind->elf.got.glist != NULL) +diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c +index 3a2444b..bdb3ae6 100644 +--- a/bfd/elf64-x86-64.c ++++ b/bfd/elf64-x86-64.c +@@ -3460,7 +3460,6 @@ elf_x86_64_relocate_section (bfd *output_bfd, + case R_X86_64_PC16: + case R_X86_64_PC32: + if (info->shared +- && ABI_64_P (output_bfd) + && (input_section->flags & SEC_ALLOC) != 0 + && (input_section->flags & SEC_READONLY) != 0 + && h != NULL) +diff --git a/bfd/elflink.c b/bfd/elflink.c +index fc4266b..8556cec 100644 +--- a/bfd/elflink.c ++++ b/bfd/elflink.c +@@ -11188,15 +11188,12 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) + goto error_return; + + /* Check for DT_TEXTREL (late, in case the backend removes it). */ +- if ((info->warn_shared_textrel && info->shared) +- || info->error_textrel) ++ if (((info->warn_shared_textrel && info->shared) ++ || info->error_textrel) ++ && (o = bfd_get_section_by_name (dynobj, ".dynamic")) != NULL) + { + bfd_byte *dyncon, *dynconend; + +- /* Fix up .dynamic entries. */ +- o = bfd_get_section_by_name (dynobj, ".dynamic"); +- BFD_ASSERT (o != NULL); +- + dyncon = o->contents; + dynconend = o->contents + o->size; + for (; dyncon < dynconend; dyncon += bed->s->sizeof_dyn) +diff --git a/bfd/elfn32-mips.c b/bfd/elfn32-mips.c +index 00ec8b0..2189566 100644 +--- a/bfd/elfn32-mips.c ++++ b/bfd/elfn32-mips.c +@@ -1555,6 +1555,111 @@ static reloc_howto_type elf_mips16_howto_table_rel[] = + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS general dynamic variable reference. */ ++ HOWTO (R_MIPS16_TLS_GD, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_GD", /* name */ ++ TRUE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS local dynamic variable reference. */ ++ HOWTO (R_MIPS16_TLS_LDM, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_LDM", /* name */ ++ TRUE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS local dynamic offset. */ ++ HOWTO (R_MIPS16_TLS_DTPREL_HI16, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_DTPREL_HI16", /* name */ ++ TRUE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS local dynamic offset. */ ++ HOWTO (R_MIPS16_TLS_DTPREL_LO16, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_DTPREL_LO16", /* name */ ++ TRUE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS thread pointer offset. */ ++ HOWTO (R_MIPS16_TLS_GOTTPREL, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_GOTTPREL", /* name */ ++ TRUE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS thread pointer offset. */ ++ HOWTO (R_MIPS16_TLS_TPREL_HI16, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_TPREL_HI16", /* name */ ++ TRUE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS thread pointer offset. */ ++ HOWTO (R_MIPS16_TLS_TPREL_LO16, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_TPREL_LO16", /* name */ ++ TRUE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ + }; + + static reloc_howto_type elf_mips16_howto_table_rela[] = +@@ -1651,6 +1756,111 @@ static reloc_howto_type elf_mips16_howto_table_rela[] = + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS general dynamic variable reference. */ ++ HOWTO (R_MIPS16_TLS_GD, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_GD", /* name */ ++ FALSE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS local dynamic variable reference. */ ++ HOWTO (R_MIPS16_TLS_LDM, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_LDM", /* name */ ++ FALSE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS local dynamic offset. */ ++ HOWTO (R_MIPS16_TLS_DTPREL_HI16, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_DTPREL_HI16", /* name */ ++ FALSE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS local dynamic offset. */ ++ HOWTO (R_MIPS16_TLS_DTPREL_LO16, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_DTPREL_LO16", /* name */ ++ FALSE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS thread pointer offset. */ ++ HOWTO (R_MIPS16_TLS_GOTTPREL, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_GOTTPREL", /* name */ ++ FALSE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS thread pointer offset. */ ++ HOWTO (R_MIPS16_TLS_TPREL_HI16, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_TPREL_HI16", /* name */ ++ FALSE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ ++ ++ /* MIPS16 TLS thread pointer offset. */ ++ HOWTO (R_MIPS16_TLS_TPREL_LO16, /* type */ ++ 0, /* rightshift */ ++ 2, /* size (0 = byte, 1 = short, 2 = long) */ ++ 16, /* bitsize */ ++ FALSE, /* pc_relative */ ++ 0, /* bitpos */ ++ complain_overflow_signed, /* complain_on_overflow */ ++ _bfd_mips_elf_generic_reloc, /* special_function */ ++ "R_MIPS16_TLS_TPREL_LO16", /* name */ ++ FALSE, /* partial_inplace */ ++ 0x0000ffff, /* src_mask */ ++ 0x0000ffff, /* dst_mask */ ++ FALSE), /* pcrel_offset */ + }; + + static reloc_howto_type elf_micromips_howto_table_rel[] = +@@ -2724,6 +2934,15 @@ static const struct elf_reloc_map mips16_reloc_map[] = + { BFD_RELOC_MIPS16_CALL16, R_MIPS16_CALL16 - R_MIPS16_min }, + { BFD_RELOC_MIPS16_HI16_S, R_MIPS16_HI16 - R_MIPS16_min }, + { BFD_RELOC_MIPS16_LO16, R_MIPS16_LO16 - R_MIPS16_min }, ++ { BFD_RELOC_MIPS16_TLS_GD, R_MIPS16_TLS_GD - R_MIPS16_min }, ++ { BFD_RELOC_MIPS16_TLS_LDM, R_MIPS16_TLS_LDM - R_MIPS16_min }, ++ { BFD_RELOC_MIPS16_TLS_DTPREL_HI16, ++ R_MIPS16_TLS_DTPREL_HI16 - R_MIPS16_min }, ++ { BFD_RELOC_MIPS16_TLS_DTPREL_LO16, ++ R_MIPS16_TLS_DTPREL_LO16 - R_MIPS16_min }, ++ { BFD_RELOC_MIPS16_TLS_GOTTPREL, R_MIPS16_TLS_GOTTPREL - R_MIPS16_min }, ++ { BFD_RELOC_MIPS16_TLS_TPREL_HI16, R_MIPS16_TLS_TPREL_HI16 - R_MIPS16_min }, ++ { BFD_RELOC_MIPS16_TLS_TPREL_LO16, R_MIPS16_TLS_TPREL_LO16 - R_MIPS16_min } + }; + + static const struct elf_reloc_map micromips_reloc_map[] = +diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c +index 33a454d..fa906cd 100644 +--- a/bfd/elfxx-mips.c ++++ b/bfd/elfxx-mips.c +@@ -436,8 +436,8 @@ struct mips_elf_link_hash_table + entry is set to the address of __rld_obj_head as in IRIX5. */ + bfd_boolean use_rld_obj_head; + +- /* This is the value of the __rld_map or __rld_obj_head symbol. */ +- bfd_vma rld_value; ++ /* The __rld_map or __rld_obj_head symbol. */ ++ struct elf_link_hash_entry *rld_symbol; + + /* This is set if we see any mips16 stub sections. */ + bfd_boolean mips16_stubs_seen; +@@ -529,6 +529,13 @@ struct mips_htab_traverse_info + || r_type == R_MIPS_TLS_TPREL64 \ + || r_type == R_MIPS_TLS_TPREL_HI16 \ + || r_type == R_MIPS_TLS_TPREL_LO16 \ ++ || r_type == R_MIPS16_TLS_GD \ ++ || r_type == R_MIPS16_TLS_LDM \ ++ || r_type == R_MIPS16_TLS_DTPREL_HI16 \ ++ || r_type == R_MIPS16_TLS_DTPREL_LO16 \ ++ || r_type == R_MIPS16_TLS_GOTTPREL \ ++ || r_type == R_MIPS16_TLS_TPREL_HI16 \ ++ || r_type == R_MIPS16_TLS_TPREL_LO16 \ + || r_type == R_MICROMIPS_TLS_GD \ + || r_type == R_MICROMIPS_TLS_LDM \ + || r_type == R_MICROMIPS_TLS_DTPREL_HI16 \ +@@ -768,6 +775,10 @@ static bfd *reldyn_sorting_bfd; + #define MIPS_ELF_GOT_SIZE(abfd) \ + (get_elf_backend_data (abfd)->s->arch_size / 8) + ++/* The size of the .rld_map section. */ ++#define MIPS_ELF_RLD_MAP_SIZE(abfd) \ ++ (get_elf_backend_data (abfd)->s->arch_size / 8) ++ + /* The size of a symbol-table entry. */ + #define MIPS_ELF_SYM_SIZE(abfd) \ + (get_elf_backend_data (abfd)->s->sizeof_sym) +@@ -1571,9 +1582,10 @@ _bfd_mips_elf_init_stubs (struct bfd_link_info *info, + } + + /* Return true if H is a locally-defined PIC function, in the sense +- that it might need $25 to be valid on entry. Note that MIPS16 +- functions never need $25 to be valid on entry; they set up $gp +- using PC-relative instructions instead. */ ++ that it or its fn_stub might need $25 to be valid on entry. ++ Note that MIPS16 functions set up $gp using PC-relative instructions, ++ so they themselves never need $25 to be valid. Only non-MIPS16 ++ entry points are of interest here. */ + + static bfd_boolean + mips_elf_local_pic_function_p (struct mips_elf_link_hash_entry *h) +@@ -1582,11 +1594,32 @@ mips_elf_local_pic_function_p (struct mips_elf_link_hash_entry *h) + || h->root.root.type == bfd_link_hash_defweak) + && h->root.def_regular + && !bfd_is_abs_section (h->root.root.u.def.section) +- && !ELF_ST_IS_MIPS16 (h->root.other) ++ && (!ELF_ST_IS_MIPS16 (h->root.other) ++ || (h->fn_stub && h->need_fn_stub)) + && (PIC_OBJECT_P (h->root.root.u.def.section->owner) + || ELF_ST_IS_MIPS_PIC (h->root.other))); + } + ++/* Set *SEC to the input section that contains the target of STUB. ++ Return the offset of the target from the start of that section. */ ++ ++static bfd_vma ++mips_elf_get_la25_target (struct mips_elf_la25_stub *stub, ++ asection **sec) ++{ ++ if (ELF_ST_IS_MIPS16 (stub->h->root.other)) ++ { ++ BFD_ASSERT (stub->h->need_fn_stub); ++ *sec = stub->h->fn_stub; ++ return 0; ++ } ++ else ++ { ++ *sec = stub->h->root.root.u.def.section; ++ return stub->h->root.root.u.def.value; ++ } ++} ++ + /* STUB describes an la25 stub that we have decided to implement + by inserting an LUI/ADDIU pair before the target function. + Create the section and redirect the function symbol to it. */ +@@ -1611,7 +1644,7 @@ mips_elf_add_la25_intro (struct mips_elf_la25_stub *stub, + sprintf (name, ".text.stub.%d", (int) htab_elements (htab->la25_stubs)); + + /* Create the section. */ +- input_section = stub->h->root.root.u.def.section; ++ mips_elf_get_la25_target (stub, &input_section); + s = htab->add_stub_section (name, input_section, + input_section->output_section); + if (s == NULL) +@@ -1685,12 +1718,6 @@ mips_elf_add_la25_stub (struct bfd_link_info *info, + bfd_vma value; + void **slot; + +- /* Prefer to use LUI/ADDIU stubs if the function is at the beginning +- of the section and if we would need no more than 2 nops. */ +- s = h->root.root.u.def.section; +- value = h->root.root.u.def.value; +- use_trampoline_p = (value != 0 || s->alignment_power > 4); +- + /* Describe the stub we want. */ + search.stub_section = NULL; + search.offset = 0; +@@ -1720,6 +1747,11 @@ mips_elf_add_la25_stub (struct bfd_link_info *info, + *stub = search; + *slot = stub; + ++ /* Prefer to use LUI/ADDIU stubs if the function is at the beginning ++ of the section and if we would need no more than 2 nops. */ ++ value = mips_elf_get_la25_target (stub, &s); ++ use_trampoline_p = (value != 0 || s->alignment_power > 4); ++ + h->la25_stub = stub; + return (use_trampoline_p + ? mips_elf_add_la25_trampoline (stub, info) +@@ -1860,6 +1892,13 @@ mips16_reloc_p (int r_type) + case R_MIPS16_CALL16: + case R_MIPS16_HI16: + case R_MIPS16_LO16: ++ case R_MIPS16_TLS_GD: ++ case R_MIPS16_TLS_LDM: ++ case R_MIPS16_TLS_DTPREL_HI16: ++ case R_MIPS16_TLS_DTPREL_LO16: ++ case R_MIPS16_TLS_GOTTPREL: ++ case R_MIPS16_TLS_TPREL_HI16: ++ case R_MIPS16_TLS_TPREL_LO16: + return TRUE; + + default: +@@ -1987,19 +2026,25 @@ micromips_branch_reloc_p (int r_type) + static inline bfd_boolean + tls_gd_reloc_p (unsigned int r_type) + { +- return r_type == R_MIPS_TLS_GD || r_type == R_MICROMIPS_TLS_GD; ++ return (r_type == R_MIPS_TLS_GD ++ || r_type == R_MIPS16_TLS_GD ++ || r_type == R_MICROMIPS_TLS_GD); + } + + static inline bfd_boolean + tls_ldm_reloc_p (unsigned int r_type) + { +- return r_type == R_MIPS_TLS_LDM || r_type == R_MICROMIPS_TLS_LDM; ++ return (r_type == R_MIPS_TLS_LDM ++ || r_type == R_MIPS16_TLS_LDM ++ || r_type == R_MICROMIPS_TLS_LDM); + } + + static inline bfd_boolean + tls_gottprel_reloc_p (unsigned int r_type) + { +- return r_type == R_MIPS_TLS_GOTTPREL || r_type == R_MICROMIPS_TLS_GOTTPREL; ++ return (r_type == R_MIPS_TLS_GOTTPREL ++ || r_type == R_MIPS16_TLS_GOTTPREL ++ || r_type == R_MICROMIPS_TLS_GOTTPREL); + } + + void +@@ -4907,7 +4952,8 @@ is_gott_symbol (struct bfd_link_info *info, struct elf_link_hash_entry *h) + stub. */ + + static bfd_boolean +-mips_elf_relocation_needs_la25_stub (bfd *input_bfd, int r_type) ++mips_elf_relocation_needs_la25_stub (bfd *input_bfd, int r_type, ++ bfd_boolean target_is_16_bit_code_p) + { + /* We specifically ignore branches and jumps from EF_PIC objects, + where the onus is on the compiler or programmer to perform any +@@ -4921,7 +4967,6 @@ mips_elf_relocation_needs_la25_stub (bfd *input_bfd, int r_type) + { + case R_MIPS_26: + case R_MIPS_PC16: +- case R_MIPS16_26: + case R_MICROMIPS_26_S1: + case R_MICROMIPS_PC7_S1: + case R_MICROMIPS_PC10_S1: +@@ -4929,6 +4974,9 @@ mips_elf_relocation_needs_la25_stub (bfd *input_bfd, int r_type) + case R_MICROMIPS_PC23_S2: + return TRUE; + ++ case R_MIPS16_26: ++ return !target_is_16_bit_code_p; ++ + default: + return FALSE; + } +@@ -5189,14 +5237,28 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd, + have already noticed that we were going to need the + stub. */ + if (local_p) +- sec = elf_tdata (input_bfd)->local_stubs[r_symndx]; ++ { ++ sec = elf_tdata (input_bfd)->local_stubs[r_symndx]; ++ value = 0; ++ } + else + { + BFD_ASSERT (h->need_fn_stub); +- sec = h->fn_stub; ++ if (h->la25_stub) ++ { ++ /* If a LA25 header for the stub itself exists, point to the ++ prepended LUI/ADDIU sequence. */ ++ sec = h->la25_stub->stub_section; ++ value = h->la25_stub->offset; ++ } ++ else ++ { ++ sec = h->fn_stub; ++ value = 0; ++ } + } + +- symbol = sec->output_section->vma + sec->output_offset; ++ symbol = sec->output_section->vma + sec->output_offset + value; + /* The target is 16-bit, but the stub isn't. */ + target_is_16_bit_code_p = FALSE; + } +@@ -5246,7 +5308,8 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd, + /* If this is a direct call to a PIC function, redirect to the + non-PIC stub. */ + else if (h != NULL && h->la25_stub +- && mips_elf_relocation_needs_la25_stub (input_bfd, r_type)) ++ && mips_elf_relocation_needs_la25_stub (input_bfd, r_type, ++ target_is_16_bit_code_p)) + symbol = (h->la25_stub->stub_section->output_section->vma + + h->la25_stub->stub_section->output_offset + + h->la25_stub->offset); +@@ -5318,6 +5381,9 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd, + case R_MIPS_TLS_GD: + case R_MIPS_TLS_GOTTPREL: + case R_MIPS_TLS_LDM: ++ case R_MIPS16_TLS_GD: ++ case R_MIPS16_TLS_GOTTPREL: ++ case R_MIPS16_TLS_LDM: + case R_MICROMIPS_TLS_GD: + case R_MICROMIPS_TLS_GOTTPREL: + case R_MICROMIPS_TLS_LDM: +@@ -5487,6 +5553,7 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd, + break; + + case R_MIPS_TLS_DTPREL_HI16: ++ case R_MIPS16_TLS_DTPREL_HI16: + case R_MICROMIPS_TLS_DTPREL_HI16: + value = (mips_elf_high (addend + symbol - dtprel_base (info)) + & howto->dst_mask); +@@ -5495,17 +5562,22 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd, + case R_MIPS_TLS_DTPREL_LO16: + case R_MIPS_TLS_DTPREL32: + case R_MIPS_TLS_DTPREL64: ++ case R_MIPS16_TLS_DTPREL_LO16: + case R_MICROMIPS_TLS_DTPREL_LO16: + value = (symbol + addend - dtprel_base (info)) & howto->dst_mask; + break; + + case R_MIPS_TLS_TPREL_HI16: ++ case R_MIPS16_TLS_TPREL_HI16: + case R_MICROMIPS_TLS_TPREL_HI16: + value = (mips_elf_high (addend + symbol - tprel_base (info)) + & howto->dst_mask); + break; + + case R_MIPS_TLS_TPREL_LO16: ++ case R_MIPS_TLS_TPREL32: ++ case R_MIPS_TLS_TPREL64: ++ case R_MIPS16_TLS_TPREL_LO16: + case R_MICROMIPS_TLS_TPREL_LO16: + value = (symbol + addend - tprel_base (info)) & howto->dst_mask; + break; +@@ -5527,10 +5599,11 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd, + 12: addu $v0,$v1 + 14: move $gp,$v0 + So the offsets of hi and lo relocs are the same, but the +- $pc is four higher than $t9 would be, so reduce +- both reloc addends by 4. */ ++ base $pc is that used by the ADDIUPC instruction at $t9 + 4. ++ ADDIUPC clears the low two bits of the instruction address, ++ so the base is ($t9 + 4) & ~3. */ + if (r_type == R_MIPS16_HI16) +- value = mips_elf_high (addend + gp - p - 4); ++ value = mips_elf_high (addend + gp - ((p + 4) & ~(bfd_vma) 0x3)); + /* The microMIPS .cpload sequence uses the same assembly + instructions as the traditional psABI version, but the + incoming $t9 has the low bit set. */ +@@ -5553,7 +5626,7 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd, + /* See the comment for R_MIPS16_HI16 above for the reason + for this conditional. */ + if (r_type == R_MIPS16_LO16) +- value = addend + gp - p; ++ value = addend + gp - (p & ~(bfd_vma) 0x3); + else if (r_type == R_MICROMIPS_LO16 + || r_type == R_MICROMIPS_HI0_LO16) + value = addend + gp - p + 3; +@@ -5637,6 +5710,9 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd, + case R_MIPS_TLS_GOTTPREL: + case R_MIPS_TLS_LDM: + case R_MIPS_GOT_DISP: ++ case R_MIPS16_TLS_GD: ++ case R_MIPS16_TLS_GOTTPREL: ++ case R_MIPS16_TLS_LDM: + case R_MICROMIPS_TLS_GD: + case R_MICROMIPS_TLS_GOTTPREL: + case R_MICROMIPS_TLS_LDM: +@@ -7081,6 +7157,7 @@ _bfd_mips_elf_add_symbol_hook (bfd *abfd, struct bfd_link_info *info, + return FALSE; + + mips_elf_hash_table (info)->use_rld_obj_head = TRUE; ++ mips_elf_hash_table (info)->rld_symbol = h; + } + + /* If this is a mips16 text symbol, add 1 to the value to make it +@@ -7266,6 +7343,7 @@ _bfd_mips_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info) + + if (! bfd_elf_link_record_dynamic_symbol (info, h)) + return FALSE; ++ mips_elf_hash_table (info)->rld_symbol = h; + } + } + +@@ -7767,8 +7845,6 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, + can_make_dynamic_p = FALSE; + switch (r_type) + { +- case R_MIPS16_GOT16: +- case R_MIPS16_CALL16: + case R_MIPS_GOT16: + case R_MIPS_CALL16: + case R_MIPS_CALL_HI16: +@@ -7781,6 +7857,11 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, + case R_MIPS_TLS_GOTTPREL: + case R_MIPS_TLS_GD: + case R_MIPS_TLS_LDM: ++ case R_MIPS16_GOT16: ++ case R_MIPS16_CALL16: ++ case R_MIPS16_TLS_GOTTPREL: ++ case R_MIPS16_TLS_GD: ++ case R_MIPS16_TLS_LDM: + case R_MICROMIPS_GOT16: + case R_MICROMIPS_CALL16: + case R_MICROMIPS_CALL_HI16: +@@ -7918,7 +7999,9 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, + return FALSE; + } + +- if (h != NULL && mips_elf_relocation_needs_la25_stub (abfd, r_type)) ++ if (h != NULL ++ && mips_elf_relocation_needs_la25_stub (abfd, r_type, ++ ELF_ST_IS_MIPS16 (h->other))) + ((struct mips_elf_link_hash_entry *) h)->has_nonpic_branches = TRUE; + + switch (r_type) +@@ -8015,12 +8098,14 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, + break; + + case R_MIPS_TLS_GOTTPREL: ++ case R_MIPS16_TLS_GOTTPREL: + case R_MICROMIPS_TLS_GOTTPREL: + if (info->shared) + info->flags |= DF_STATIC_TLS; + /* Fall through */ + + case R_MIPS_TLS_LDM: ++ case R_MIPS16_TLS_LDM: + case R_MICROMIPS_TLS_LDM: + if (tls_ldm_reloc_p (r_type)) + { +@@ -8030,6 +8115,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, + /* Fall through */ + + case R_MIPS_TLS_GD: ++ case R_MIPS16_TLS_GD: + case R_MICROMIPS_TLS_GD: + /* This symbol requires a global offset table entry, or two + for TLS GD relocations. */ +@@ -9027,7 +9113,7 @@ _bfd_mips_elf_size_dynamic_sections (bfd *output_bfd, + { + /* We add a room for __rld_map. It will be filled in by the + rtld to contain a pointer to the _r_debug structure. */ +- s->size += 4; ++ s->size += MIPS_ELF_RLD_MAP_SIZE (output_bfd); + } + else if (SGI_COMPAT (output_bfd) + && CONST_STRNEQ (name, ".compact_rel")) +@@ -9615,9 +9701,9 @@ mips_elf_create_la25_stub (void **slot, void *data) + offset = stub->offset; + + /* Work out the target address. */ +- target = (stub->h->root.root.u.def.section->output_section->vma +- + stub->h->root.root.u.def.section->output_offset +- + stub->h->root.root.u.def.value); ++ target = mips_elf_get_la25_target (stub, &s); ++ target += s->output_section->vma + s->output_offset; ++ + target_high = ((target + 0x8000) >> 16) & 0xffff; + target_low = (target & 0xffff); + +@@ -10030,31 +10116,6 @@ _bfd_mips_elf_finish_dynamic_symbol (bfd *output_bfd, + if (IRIX_COMPAT (output_bfd) == ict_irix6) + mips_elf_irix6_finish_dynamic_symbol (output_bfd, name, sym); + +- if (! info->shared) +- { +- if (! mips_elf_hash_table (info)->use_rld_obj_head +- && (strcmp (name, "__rld_map") == 0 +- || strcmp (name, "__RLD_MAP") == 0)) +- { +- asection *s = bfd_get_section_by_name (dynobj, ".rld_map"); +- BFD_ASSERT (s != NULL); +- sym->st_value = s->output_section->vma + s->output_offset; +- bfd_put_32 (output_bfd, 0, s->contents); +- if (mips_elf_hash_table (info)->rld_value == 0) +- mips_elf_hash_table (info)->rld_value = sym->st_value; +- } +- else if (mips_elf_hash_table (info)->use_rld_obj_head +- && strcmp (name, "__rld_obj_head") == 0) +- { +- /* IRIX6 does not use a .rld_map section. */ +- if (IRIX_COMPAT (output_bfd) == ict_irix5 +- || IRIX_COMPAT (output_bfd) == ict_none) +- BFD_ASSERT (bfd_get_section_by_name (dynobj, ".rld_map") +- != NULL); +- mips_elf_hash_table (info)->rld_value = sym->st_value; +- } +- } +- + /* Keep dynamic MIPS16 symbols odd. This allows the dynamic linker to + treat MIPS16 symbols like any other. */ + if (ELF_ST_IS_MIPS16 (sym->st_other)) +@@ -10517,7 +10578,19 @@ _bfd_mips_elf_finish_dynamic_sections (bfd *output_bfd, + break; + + case DT_MIPS_RLD_MAP: +- dyn.d_un.d_ptr = mips_elf_hash_table (info)->rld_value; ++ { ++ struct elf_link_hash_entry *h; ++ h = mips_elf_hash_table (info)->rld_symbol; ++ if (!h) ++ { ++ dyn_to_skip = MIPS_ELF_DYN_SIZE (dynobj); ++ swap_out_p = FALSE; ++ break; ++ } ++ s = h->root.u.def.section; ++ dyn.d_un.d_ptr = (s->output_section->vma + s->output_offset ++ + h->root.u.def.value); ++ } + break; + + case DT_MIPS_OPTIONS: +@@ -12794,7 +12867,7 @@ _bfd_mips_elf_link_hash_table_create (bfd *abfd) + ret->procedure_count = 0; + ret->compact_rel_size = 0; + ret->use_rld_obj_head = FALSE; +- ret->rld_value = 0; ++ ret->rld_symbol = NULL; + ret->mips16_stubs_seen = FALSE; + ret->use_plts_and_copy_relocs = FALSE; + ret->is_vxworks = FALSE; +diff --git a/bfd/libbfd.h b/bfd/libbfd.h +index 200a6fa..0395ec2 100644 +--- a/bfd/libbfd.h ++++ b/bfd/libbfd.h +@@ -1086,6 +1086,13 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@", + "BFD_RELOC_MIPS16_HI16", + "BFD_RELOC_MIPS16_HI16_S", + "BFD_RELOC_MIPS16_LO16", ++ "BFD_RELOC_MIPS16_TLS_GD", ++ "BFD_RELOC_MIPS16_TLS_LDM", ++ "BFD_RELOC_MIPS16_TLS_DTPREL_HI16", ++ "BFD_RELOC_MIPS16_TLS_DTPREL_LO16", ++ "BFD_RELOC_MIPS16_TLS_GOTTPREL", ++ "BFD_RELOC_MIPS16_TLS_TPREL_HI16", ++ "BFD_RELOC_MIPS16_TLS_TPREL_LO16", + "BFD_RELOC_MIPS_LITERAL", + "BFD_RELOC_MICROMIPS_LITERAL", + "BFD_RELOC_MICROMIPS_7_PCREL_S1", +diff --git a/bfd/reloc.c b/bfd/reloc.c +index 6ac7148..ef55cc3 100644 +--- a/bfd/reloc.c ++++ b/bfd/reloc.c +@@ -2247,6 +2247,23 @@ ENUMDOC + MIPS16 low 16 bits. + + ENUM ++ BFD_RELOC_MIPS16_TLS_GD ++ENUMX ++ BFD_RELOC_MIPS16_TLS_LDM ++ENUMX ++ BFD_RELOC_MIPS16_TLS_DTPREL_HI16 ++ENUMX ++ BFD_RELOC_MIPS16_TLS_DTPREL_LO16 ++ENUMX ++ BFD_RELOC_MIPS16_TLS_GOTTPREL ++ENUMX ++ BFD_RELOC_MIPS16_TLS_TPREL_HI16 ++ENUMX ++ BFD_RELOC_MIPS16_TLS_TPREL_LO16 ++ENUMDOC ++ MIPS16 TLS relocations ++ ++ENUM + BFD_RELOC_MIPS_LITERAL + ENUMX + BFD_RELOC_MICROMIPS_LITERAL +diff --git a/bfd/version.h b/bfd/version.h +index c6800ec..1024911 100644 +--- a/bfd/version.h ++++ b/bfd/version.h +@@ -1,4 +1,4 @@ +-#define BFD_VERSION_DATE 20111121 ++#define BFD_VERSION_DATE 20120308 + #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 2f5af61..30101e5 100644 +--- a/binutils/ChangeLog ++++ b/binutils/ChangeLog +@@ -1,3 +1,10 @@ ++2012-01-26 Nick Clifton ++ ++ PR binutils/13622 ++ * readelf.c (process_section_groups): If there are no section ++ headers do not scan for section groups. ++ (process_note_sections): Likewise for note sections. ++ + 2011-10-25 Alan Modra + + Apply mainline patches +diff --git a/binutils/readelf.c b/binutils/readelf.c +index 9e13190..bf053d9 100644 +--- a/binutils/readelf.c ++++ b/binutils/readelf.c +@@ -4937,7 +4937,8 @@ process_section_groups (FILE * file) + if (section_headers == NULL) + { + error (_("Section headers are not available!\n")); +- abort (); ++ /* PR 13622: This can happen with a corrupt ELF header. */ ++ return 0; + } + + section_headers_groups = (struct group **) calloc (elf_header.e_shnum, +@@ -12942,7 +12943,7 @@ process_note_sections (FILE * file) + int res = 1; + + for (i = 0, section = section_headers; +- i < elf_header.e_shnum; ++ i < elf_header.e_shnum && section != NULL; + i++, section++) + if (section->sh_type == SHT_NOTE) + res &= process_corefile_note_segment (file, +diff --git a/gas/ChangeLog b/gas/ChangeLog +index b29f95f..df24933 100644 +--- a/gas/ChangeLog ++++ b/gas/ChangeLog +@@ -1,3 +1,23 @@ ++2012-01-08 Richard Sandiford ++ ++ * config/tc-mips.c (s_tls_rel_directive): Call mips_clear_insn_labels. ++ ++2011-12-19 Chung-Lin Tang ++ ++ Backport from mainline: ++ ++ 2011-12-19 Chung-Lin Tang ++ ++ * config/tc-mips.c (mips_pseudo_table): Add tprelword/tpreldword ++ entries. ++ (mips16_percent_op): Add MIPS16 TLS relocation ops. ++ (md_apply_fix): Add BFD_RELOC_MIPS16_TLS_* switch cases. ++ (s_tls_rel_directive): Rename from s_dtprel_internal(). Abstract out ++ directive string and reloc type as function parameters. Update ++ comments. ++ (s_dtprelword,s_dtpreldword): Change to use s_tls_rel_directive(). ++ (s_tprelword,s_tpreldword): New functions. ++ + 2011-11-15 Maciej W. Rozycki + + Apply mainline patches +diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c +index 0e4c66e..5324450 100644 +--- a/gas/config/tc-mips.c ++++ b/gas/config/tc-mips.c +@@ -1352,6 +1352,8 @@ static void s_cprestore (int); + static void s_cpreturn (int); + static void s_dtprelword (int); + static void s_dtpreldword (int); ++static void s_tprelword (int); ++static void s_tpreldword (int); + static void s_gpvalue (int); + static void s_gpword (int); + static void s_gpdword (int); +@@ -1431,6 +1433,8 @@ static const pseudo_typeS mips_pseudo_table[] = + {"cpreturn", s_cpreturn, 0}, + {"dtprelword", s_dtprelword, 0}, + {"dtpreldword", s_dtpreldword, 0}, ++ {"tprelword", s_tprelword, 0}, ++ {"tpreldword", s_tpreldword, 0}, + {"gpvalue", s_gpvalue, 0}, + {"gpword", s_gpword, 0}, + {"gpdword", s_gpdword, 0}, +@@ -14040,7 +14044,14 @@ static const struct percent_op_match mips16_percent_op[] = + {"%gprel", BFD_RELOC_MIPS16_GPREL}, + {"%got", BFD_RELOC_MIPS16_GOT16}, + {"%call16", BFD_RELOC_MIPS16_CALL16}, +- {"%hi", BFD_RELOC_MIPS16_HI16_S} ++ {"%hi", BFD_RELOC_MIPS16_HI16_S}, ++ {"%tlsgd", BFD_RELOC_MIPS16_TLS_GD}, ++ {"%tlsldm", BFD_RELOC_MIPS16_TLS_LDM}, ++ {"%dtprel_hi", BFD_RELOC_MIPS16_TLS_DTPREL_HI16}, ++ {"%dtprel_lo", BFD_RELOC_MIPS16_TLS_DTPREL_LO16}, ++ {"%tprel_hi", BFD_RELOC_MIPS16_TLS_TPREL_HI16}, ++ {"%tprel_lo", BFD_RELOC_MIPS16_TLS_TPREL_LO16}, ++ {"%gottprel", BFD_RELOC_MIPS16_TLS_GOTTPREL} + }; + + +@@ -15369,6 +15380,8 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) + case BFD_RELOC_MIPS_TLS_DTPREL_HI16: + case BFD_RELOC_MIPS_TLS_DTPREL_LO16: + case BFD_RELOC_MIPS_TLS_GOTTPREL: ++ case BFD_RELOC_MIPS_TLS_TPREL32: ++ case BFD_RELOC_MIPS_TLS_TPREL64: + case BFD_RELOC_MIPS_TLS_TPREL_HI16: + case BFD_RELOC_MIPS_TLS_TPREL_LO16: + case BFD_RELOC_MICROMIPS_TLS_GD: +@@ -15378,6 +15391,13 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) + case BFD_RELOC_MICROMIPS_TLS_GOTTPREL: + case BFD_RELOC_MICROMIPS_TLS_TPREL_HI16: + case BFD_RELOC_MICROMIPS_TLS_TPREL_LO16: ++ case BFD_RELOC_MIPS16_TLS_GD: ++ case BFD_RELOC_MIPS16_TLS_LDM: ++ case BFD_RELOC_MIPS16_TLS_DTPREL_HI16: ++ case BFD_RELOC_MIPS16_TLS_DTPREL_LO16: ++ case BFD_RELOC_MIPS16_TLS_GOTTPREL: ++ case BFD_RELOC_MIPS16_TLS_TPREL_HI16: ++ case BFD_RELOC_MIPS16_TLS_TPREL_LO16: + S_SET_THREAD_LOCAL (fixP->fx_addsy); + /* fall through */ + +@@ -16547,12 +16567,14 @@ s_cpreturn (int ignore ATTRIBUTE_UNUSED) + demand_empty_rest_of_line (); + } + +-/* Handle the .dtprelword and .dtpreldword pseudo-ops. They generate +- a 32-bit or 64-bit DTP-relative relocation (BYTES says which) for +- use in DWARF debug information. */ ++/* Handle a .dtprelword, .dtpreldword, .tprelword, or .tpreldword ++ pseudo-op; DIRSTR says which. The pseudo-op generates a BYTES-size ++ DTP- or TP-relative relocation of type RTYPE, for use in either DWARF ++ debug information or MIPS16 TLS. */ + + static void +-s_dtprel_internal (size_t bytes) ++s_tls_rel_directive (const size_t bytes, const char *dirstr, ++ bfd_reloc_code_real_type rtype) + { + expressionS ex; + char *p; +@@ -16561,20 +16583,15 @@ s_dtprel_internal (size_t bytes) + + if (ex.X_op != O_symbol) + { +- as_bad (_("Unsupported use of %s"), (bytes == 8 +- ? ".dtpreldword" +- : ".dtprelword")); ++ as_bad (_("Unsupported use of %s"), dirstr); + ignore_rest_of_line (); + } + + p = frag_more (bytes); + md_number_to_chars (p, 0, bytes); +- fix_new_exp (frag_now, p - frag_now->fr_literal, bytes, &ex, FALSE, +- (bytes == 8 +- ? BFD_RELOC_MIPS_TLS_DTPREL64 +- : BFD_RELOC_MIPS_TLS_DTPREL32)); +- ++ fix_new_exp (frag_now, p - frag_now->fr_literal, bytes, &ex, FALSE, rtype); + demand_empty_rest_of_line (); ++ mips_clear_insn_labels (); + } + + /* Handle .dtprelword. */ +@@ -16582,7 +16599,7 @@ s_dtprel_internal (size_t bytes) + static void + s_dtprelword (int ignore ATTRIBUTE_UNUSED) + { +- s_dtprel_internal (4); ++ s_tls_rel_directive (4, ".dtprelword", BFD_RELOC_MIPS_TLS_DTPREL32); + } + + /* Handle .dtpreldword. */ +@@ -16590,7 +16607,23 @@ s_dtprelword (int ignore ATTRIBUTE_UNUSED) + static void + s_dtpreldword (int ignore ATTRIBUTE_UNUSED) + { +- s_dtprel_internal (8); ++ s_tls_rel_directive (8, ".dtpreldword", BFD_RELOC_MIPS_TLS_DTPREL64); ++} ++ ++/* Handle .tprelword. */ ++ ++static void ++s_tprelword (int ignore ATTRIBUTE_UNUSED) ++{ ++ s_tls_rel_directive (4, ".tprelword", BFD_RELOC_MIPS_TLS_TPREL32); ++} ++ ++/* Handle .tpreldword. */ ++ ++static void ++s_tpreldword (int ignore ATTRIBUTE_UNUSED) ++{ ++ s_tls_rel_directive (8, ".tpreldword", BFD_RELOC_MIPS_TLS_TPREL64); + } + + /* Handle the .gpvalue pseudo-op. This is used when generating NewABI PIC +diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog +index 0631572..cbb2309 100644 +--- a/gas/testsuite/ChangeLog ++++ b/gas/testsuite/ChangeLog +@@ -1,3 +1,8 @@ ++2012-01-08 Richard Sandiford ++ ++ * gas/mips/tls-relw.s, gas/mips/tls-relw.d: New test. ++ * gas/mips/mips.exp: Run it. ++ + 2011-11-14 Maciej W. Rozycki + + Apply mainline patches +diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp +index cbaaa70..2f49a2a 100644 +--- a/gas/testsuite/gas/mips/mips.exp ++++ b/gas/testsuite/gas/mips/mips.exp +@@ -878,6 +878,7 @@ if { [istarget mips*-*-vxworks*] } { + + run_list_test "tls-ill" "-32" + run_dump_test "tls-o32" ++ run_dump_test "tls-relw" + run_dump_test "jalr2" + + run_dump_test_arches "aent" [mips_arch_list_matching mips1] +diff --git a/gas/testsuite/gas/mips/tls-relw.d b/gas/testsuite/gas/mips/tls-relw.d +new file mode 100644 +index 0000000..bc13b43 +--- /dev/null ++++ b/gas/testsuite/gas/mips/tls-relw.d +@@ -0,0 +1,8 @@ ++# as: -EB ++# objdump: -sj.data ++ ++.* ++ ++Contents of section \.data: ++ 0000 00000001 00000000 00000002 00000004 ................ ++ 0010 00000000 00000003 00000010 00000000 ................ +diff --git a/gas/testsuite/gas/mips/tls-relw.s b/gas/testsuite/gas/mips/tls-relw.s +new file mode 100644 +index 0000000..6890685 +--- /dev/null ++++ b/gas/testsuite/gas/mips/tls-relw.s +@@ -0,0 +1,12 @@ ++ .data ++start: ++ .word 1 ++a: ++ .tprelword t1 ++ .word 2 ++ .word a-start ++b: ++ .dtprelword t2 ++ .word 3 ++ .word b-start ++ .word 0 +diff --git a/gold/ChangeLog b/gold/ChangeLog +index 7f91606..25ebc87 100644 +--- a/gold/ChangeLog ++++ b/gold/ChangeLog +@@ -1,3 +1,166 @@ ++2011-12-19 Ian Lance Taylor ++ ++ Copy from mainline to binutils 2.22 branch: ++ ++ 2011-12-17 Cary Coutant ++ ++ * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Add casts. ++ * resolve.cc (Symbol_table::resolve): Likewise. ++ * i386.cc (Target_i386::do_code_fill): Use char constants for nop ++ arrays. ++ * x86_64.cc (Target_x86_64::do_code_fill): Likewise. ++ ++ 2011-10-31 Cary Coutant ++ ++ PR gold/13023 ++ * expression.cc (Expression::eval_with_dot): Add ++ is_section_dot_assignment parameter. ++ (Expression::eval_maybe_dot): Likewise. Adjust value when rhs is ++ absolute and assigning to dot within a section. ++ * script-sections.cc ++ (Output_section_element_assignment::set_section_addresses): Pass ++ dot_section to set_if_absolute. ++ (Output_section_element_dot_assignment::finalize_symbols): Pass TRUE ++ as is_section_dot_assignment flag to eval_with_dot. ++ (Output_section_element_dot_assignment::set_section_addresses): ++ Likewise. ++ * script.cc (Symbol_assignment::set_if_absolute): Add dot_section ++ parameter. Also set value if relative to dot_section; set the ++ symbol's output_section. ++ * script.h (Expression::eval_with_dot): Add is_section_dot_assignment ++ parameter. Adjust all callers. ++ (Expression::eval_maybe_dot): Likewise. ++ (Symbol_assignment::set_if_absolute): Add dot_section parameter. ++ Adjust all callers. ++ * testsuite/script_test_2.t: Test assignment of an absolute value ++ to dot within an output section element. ++ ++ 2011-10-31 Cary Coutant ++ ++ * options.h (class General_options): Add --[no-]gnu-unique options. ++ * symtab.cc (Symbol_table::sized_write_globals): Convert ++ STB_GNU_UNIQUE to STB_GLOBAL if --no-gnu-unique. ++ ++ 2011-10-31 Cary Coutant ++ ++ PR gold/13359 ++ * i386.cc (Target_i386::Relocate::relocate_tls): Remove ++ unnecessary assertion. ++ * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Likewise. ++ ++ 2011-10-31 Sriraman Tallam ++ ++ * symtab.h (Symbol_table::gc_mark_symbol_for_shlib): Rename to ++ gc_mark_symbol. ++ * symtab.cc (Symbol_table::gc_mark_symbol_for_shlib): Rename to ++ gc_mark_symbol. ++ Change to just keep the section associated with symbol. ++ (Symbol_table::add_from_relobj): Mark symbols as not garbage when ++ they are externally visible and --export-dynamic is turned on. ++ (Symbol_table::gc_mark_dyn_syms): Call gc_mark_symbol. ++ ++ 2011-10-19 Ian Lance Taylor ++ ++ PR gold/13163 ++ * script-sections.cc ++ (Output_section_element_dot_assignment::needs_output_section): New ++ function. ++ ++ 2011-10-19 Ian Lance Taylor ++ ++ PR gold/13204 ++ * layout.cc (Layout::segment_precedes): Don't assert failure if a ++ --section-start option was seen. ++ * options.h (General_options::any_section_start): New function. ++ ++ 2011-10-18 Cary Coutant ++ ++ * output.cc (posix_fallocate): Return 0 on success, errno on failure. ++ (Output_file::map_no_anonymous): Check for non-zero ++ return code from posix_fallocate. ++ ++ 2011-10-17 Cary Coutant ++ ++ PR gold/13245 ++ * plugin.cc (is_visible_from_outside): Check for symbols ++ referenced from dynamic objects. ++ * resolve.cc (Symbol_table::resolve): Don't count references ++ from dynamic objects as references from real ELF files. ++ * testsuite/plugin_test_2.sh: Adjust expected result. ++ ++ 2011-10-17 Cary Coutant ++ ++ * readsyms.cc (Read_symbols::run): Don't queue an unblocker ++ task for members of lib groups. ++ ++ 2011-10-17 Cary Coutant ++ ++ PR gold/13288 ++ * fileread.cc (File_read::find_view): Add assert. ++ (File_read::make_view): Move bounds check (replace with assert)... ++ (File_read::find_or_make_view): ... to here. ++ ++ 2011-10-12 Cary Coutant ++ ++ * output.cc (Output_file::open_base_file): Handle case where ++ ::read returns less than requested size. ++ ++ 2011-10-10 Cary Coutant ++ ++ * incremental.cc (Sized_relobj_incr::Sized_relobj_incr): ++ Initialize defined_count_. ++ (Sized_relobj_incr::do_add_symbols): Count defined symbols. ++ (Sized_relobj_incr::do_get_global_symbol_counts): Rewrite. ++ (Sized_incr_dynobj::Sized_incr_dynobj): Initialize defined_count_. ++ (Sized_incr_dynobj::do_add_symbols): Count defined symbols. ++ (Sized_incr_dynobj::do_get_global_symbol_counts): Rewrite. ++ * incremental.h (Sized_relobj_incr::defined_count_): New data ++ member. ++ (Sized_incr_dynobj::defined_count_): New data member. ++ * plugin.cc (Sized_pluginobj::do_get_global_symbol_counts): ++ Return zeroes instead of internal error. ++ ++ 2011-10-10 Cary Coutant ++ ++ PR gold/13249 ++ * output.cc (Output_reloc::Output_reloc): Add use_plt_offset flag. ++ (Output_reloc::symbol_value): Return PLT offset if flag is set. ++ * output.h (class Output_reloc): Add use_plt_offset flag. ++ (Output_reloc::type_): Adjust size of bit field. ++ (Output_reloc::use_plt_offset_): New bit field. ++ (class Output_data_reloc): Adjust all calls to Output_reloc_type. ++ (Output_data_reloc::add_local_relative): (RELA only) Add use_plt_offset ++ flag. Adjust all callers. ++ * x86_64.cc (Target_x86_64::Scan::local): Check for IFUNC when ++ creating RELATIVE relocations. ++ ++ 2011-10-03 Diego Novillo ++ ++ * options.cc (parse_uint): Fix dereference of RETVAL. ++ ++ 2011-09-29 Cary Coutant ++ ++ * incremental.cc (Sized_incremental_binary::do_process_got_plt): ++ Check for NULL. ++ * symtab.cc (Symbol_table::add_from_relobj): Ignore version ++ symbols during incremental update. ++ (Symbol_table::add_from_dynobj): Likewise. ++ ++ 2011-09-26 Cary Coutant ++ ++ * gold.cc (queue_initial_tasks): Move option checks ... ++ * options.cc (General_options::finalize): ... to here. Disable ++ some options; make others fatal. ++ ++ 2011-09-23 Simon Baldwin ++ ++ * configure.ac: Add new --with-gold-ldadd and --with-gold-ldflags ++ configuration options. ++ * configure: Regenerate. ++ * Makefile.am: Handle GOLD_LDADD and GOLD_LDFLAGS. ++ * Makefile.in: Regenerate. ++ * testsuite/Makefile.in: Regenerate. ++ + 2011-11-11 Doug Kwan + + * arm.cc (Target_arm::do_make_elf_object): Allow executable also +diff --git a/gold/dwarf_reader.cc b/gold/dwarf_reader.cc +index 3dc33e4..2b47a28 100644 +--- a/gold/dwarf_reader.cc ++++ b/gold/dwarf_reader.cc +@@ -1,6 +1,6 @@ + // dwarf_reader.cc -- parse dwarf2/3 debug information + +-// Copyright 2007, 2008, 2009, 2010 Free Software Foundation, Inc. ++// Copyright 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. + // Written by Ian Lance Taylor . + + // This file is part of gold. +@@ -491,8 +491,10 @@ Sized_dwarf_line_info::read_lines(unsigned const char* lineptr + && (shndx == -1U || lsm.shndx == -1U || shndx == lsm.shndx)) + { + Offset_to_lineno_entry entry +- = { lsm.address, this->current_header_index_, +- lsm.file_num, true, lsm.line_num }; ++ = { static_cast(lsm.address), ++ this->current_header_index_, ++ static_cast(lsm.file_num), ++ true, lsm.line_num }; + std::vector& + map(this->line_number_map_[lsm.shndx]); + // If we see two consecutive entries with the same +diff --git a/gold/expression.cc b/gold/expression.cc +index e527b5e..e31c151 100644 +--- a/gold/expression.cc ++++ b/gold/expression.cc +@@ -1,6 +1,6 @@ + // expression.cc -- expressions in linker scripts for gold + +-// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. ++// Copyright 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. + // Written by Ian Lance Taylor . + + // This file is part of gold. +@@ -77,7 +77,7 @@ Expression::eval(const Symbol_table* symtab, const Layout* layout, + bool check_assertions) + { + return this->eval_maybe_dot(symtab, layout, check_assertions, +- false, 0, NULL, NULL, NULL); ++ false, 0, NULL, NULL, NULL, false); + } + + // Evaluate an expression which may refer to the dot symbol. +@@ -87,11 +87,13 @@ Expression::eval_with_dot(const Symbol_table* symtab, const Layout* layout, + bool check_assertions, uint64_t dot_value, + Output_section* dot_section, + Output_section** result_section_pointer, +- uint64_t* result_alignment_pointer) ++ uint64_t* result_alignment_pointer, ++ bool is_section_dot_assignment) + { + return this->eval_maybe_dot(symtab, layout, check_assertions, true, + dot_value, dot_section, result_section_pointer, +- result_alignment_pointer); ++ result_alignment_pointer, ++ is_section_dot_assignment); + } + + // Evaluate an expression which may or may not refer to the dot +@@ -102,7 +104,8 @@ Expression::eval_maybe_dot(const Symbol_table* symtab, const Layout* layout, + bool check_assertions, bool is_dot_available, + uint64_t dot_value, Output_section* dot_section, + Output_section** result_section_pointer, +- uint64_t* result_alignment_pointer) ++ uint64_t* result_alignment_pointer, ++ bool is_section_dot_assignment) + { + Expression_eval_info eei; + eei.symtab = symtab; +@@ -113,14 +116,24 @@ Expression::eval_maybe_dot(const Symbol_table* symtab, const Layout* layout, + eei.dot_section = dot_section; + + // We assume the value is absolute, and only set this to a section +- // if we find a section relative reference. ++ // if we find a section-relative reference. + if (result_section_pointer != NULL) + *result_section_pointer = NULL; + eei.result_section_pointer = result_section_pointer; + + eei.result_alignment_pointer = result_alignment_pointer; + +- return this->value(&eei); ++ uint64_t val = this->value(&eei); ++ ++ // If this is an assignment to dot within a section, and the value ++ // is absolute, treat it as a section-relative offset. ++ if (is_section_dot_assignment && *result_section_pointer == NULL) ++ { ++ gold_assert(dot_section != NULL); ++ val += dot_section->address(); ++ *result_section_pointer = dot_section; ++ } ++ return val; + } + + // A number. +@@ -257,7 +270,8 @@ class Unary_expression : public Expression + eei->dot_value, + eei->dot_section, + arg_section_pointer, +- eei->result_alignment_pointer); ++ eei->result_alignment_pointer, ++ false); + } + + void +@@ -336,7 +350,8 @@ class Binary_expression : public Expression + eei->dot_value, + eei->dot_section, + section_pointer, +- alignment_pointer); ++ alignment_pointer, ++ false); + } + + uint64_t +@@ -350,7 +365,8 @@ class Binary_expression : public Expression + eei->dot_value, + eei->dot_section, + section_pointer, +- alignment_pointer); ++ alignment_pointer, ++ false); + } + + void +@@ -500,7 +516,8 @@ class Trinary_expression : public Expression + eei->dot_value, + eei->dot_section, + section_pointer, +- NULL); ++ NULL, ++ false); + } + + uint64_t +@@ -514,7 +531,8 @@ class Trinary_expression : public Expression + eei->dot_value, + eei->dot_section, + section_pointer, +- alignment_pointer); ++ alignment_pointer, ++ false); + } + + uint64_t +@@ -528,7 +546,8 @@ class Trinary_expression : public Expression + eei->dot_value, + eei->dot_section, + section_pointer, +- alignment_pointer); ++ alignment_pointer, ++ false); + } + + void +diff --git a/gold/fileread.cc b/gold/fileread.cc +index 80ddfbc..c5dc320 100644 +--- a/gold/fileread.cc ++++ b/gold/fileread.cc +@@ -329,6 +329,10 @@ inline File_read::View* + File_read::find_view(off_t start, section_size_type size, + unsigned int byteshift, File_read::View** vshifted) const + { ++ gold_assert(start <= this->size_ ++ && (static_cast(size) ++ <= static_cast(this->size_ - start))); ++ + if (vshifted != NULL) + *vshifted = NULL; + +@@ -456,16 +460,9 @@ File_read::make_view(off_t start, section_size_type size, + unsigned int byteshift, bool cache) + { + gold_assert(size > 0); +- +- // Check that start and end of the view are within the file. +- if (start > this->size_ +- || (static_cast(size) +- > static_cast(this->size_ - start))) +- gold_fatal(_("%s: attempt to map %lld bytes at offset %lld exceeds " +- "size of file; the file may be corrupt"), +- this->filename().c_str(), +- static_cast(size), +- static_cast(start)); ++ gold_assert(start <= this->size_ ++ && (static_cast(size) ++ <= static_cast(this->size_ - start))); + + off_t poff = File_read::page_offset(start); + +@@ -523,6 +520,16 @@ File_read::View* + File_read::find_or_make_view(off_t offset, off_t start, + section_size_type size, bool aligned, bool cache) + { ++ // Check that start and end of the view are within the file. ++ if (start > this->size_ ++ || (static_cast(size) ++ > static_cast(this->size_ - start))) ++ gold_fatal(_("%s: attempt to map %lld bytes at offset %lld exceeds " ++ "size of file; the file may be corrupt"), ++ this->filename().c_str(), ++ static_cast(size), ++ static_cast(start)); ++ + unsigned int byteshift; + if (offset == 0) + byteshift = 0; +diff --git a/gold/gold.cc b/gold/gold.cc +index 12f25b7..693ff79 100644 +--- a/gold/gold.cc ++++ b/gold/gold.cc +@@ -197,46 +197,29 @@ queue_initial_tasks(const General_options& options, + // For incremental links, the base output file. + Incremental_binary* ibase = NULL; + +- if (parameters->incremental()) +- { +- if (options.relocatable()) +- gold_error(_("incremental linking is incompatible with -r")); +- if (options.emit_relocs()) +- gold_error(_("incremental linking is incompatible with --emit-relocs")); +- if (options.gc_sections()) +- gold_error(_("incremental linking is incompatible with --gc-sections")); +- if (options.icf_enabled()) +- gold_error(_("incremental linking is incompatible with --icf")); +- if (options.has_plugins()) +- gold_error(_("incremental linking is incompatible with --plugin")); +- if (strcmp(options.compress_debug_sections(), "none") != 0) +- gold_error(_("incremental linking is incompatible with " +- "--compress-debug-sections")); +- +- if (parameters->incremental_update()) ++ if (parameters->incremental_update()) ++ { ++ Output_file* of = new Output_file(options.output_file_name()); ++ if (of->open_base_file(options.incremental_base(), true)) + { +- Output_file* of = new Output_file(options.output_file_name()); +- if (of->open_base_file(options.incremental_base(), true)) +- { +- ibase = open_incremental_binary(of); +- if (ibase != NULL +- && ibase->check_inputs(cmdline, layout->incremental_inputs())) +- ibase->init_layout(layout); +- else +- { +- delete ibase; +- ibase = NULL; +- of->close(); +- } +- } +- if (ibase == NULL) ++ ibase = open_incremental_binary(of); ++ if (ibase != NULL ++ && ibase->check_inputs(cmdline, layout->incremental_inputs())) ++ ibase->init_layout(layout); ++ else + { +- if (set_parameters_incremental_full()) +- gold_info(_("linking with --incremental-full")); +- else +- gold_fallback(_("restart link with --incremental-full")); ++ delete ibase; ++ ibase = NULL; ++ of->close(); + } + } ++ if (ibase == NULL) ++ { ++ if (set_parameters_incremental_full()) ++ gold_info(_("linking with --incremental-full")); ++ else ++ gold_fallback(_("restart link with --incremental-full")); ++ } + } + + // Read the input files. We have to add the symbols to the symbol +diff --git a/gold/i386.cc b/gold/i386.cc +index 445bc68..efb6248 100644 +--- a/gold/i386.cc ++++ b/gold/i386.cc +@@ -2709,12 +2709,6 @@ Target_i386::Relocate::relocate_tls(const Relocate_info<32, false>* relinfo, + } + if (optimized_type == tls::TLSOPT_TO_IE) + { +- if (tls_segment == NULL) +- { +- gold_assert(parameters->errors()->error_count() > 0 +- || issue_undefined_symbol_error(gsym)); +- return; +- } + this->tls_gd_to_ie(relinfo, relnum, tls_segment, rel, r_type, + got_offset, view, view_size); + break; +@@ -3480,42 +3474,51 @@ Target_i386::do_code_fill(section_size_type length) const + } + + // Nop sequences of various lengths. +- const char nop1[1] = { 0x90 }; // nop +- const char nop2[2] = { 0x66, 0x90 }; // xchg %ax %ax +- const char nop3[3] = { 0x8d, 0x76, 0x00 }; // leal 0(%esi),%esi +- const char nop4[4] = { 0x8d, 0x74, 0x26, 0x00}; // leal 0(%esi,1),%esi +- const char nop5[5] = { 0x90, 0x8d, 0x74, 0x26, // nop +- 0x00 }; // leal 0(%esi,1),%esi +- const char nop6[6] = { 0x8d, 0xb6, 0x00, 0x00, // leal 0L(%esi),%esi +- 0x00, 0x00 }; +- const char nop7[7] = { 0x8d, 0xb4, 0x26, 0x00, // leal 0L(%esi,1),%esi +- 0x00, 0x00, 0x00 }; +- const char nop8[8] = { 0x90, 0x8d, 0xb4, 0x26, // nop +- 0x00, 0x00, 0x00, 0x00 }; // leal 0L(%esi,1),%esi +- const char nop9[9] = { 0x89, 0xf6, 0x8d, 0xbc, // movl %esi,%esi +- 0x27, 0x00, 0x00, 0x00, // leal 0L(%edi,1),%edi +- 0x00 }; +- const char nop10[10] = { 0x8d, 0x76, 0x00, 0x8d, // leal 0(%esi),%esi +- 0xbc, 0x27, 0x00, 0x00, // leal 0L(%edi,1),%edi +- 0x00, 0x00 }; +- const char nop11[11] = { 0x8d, 0x74, 0x26, 0x00, // leal 0(%esi,1),%esi +- 0x8d, 0xbc, 0x27, 0x00, // leal 0L(%edi,1),%edi +- 0x00, 0x00, 0x00 }; +- const char nop12[12] = { 0x8d, 0xb6, 0x00, 0x00, // leal 0L(%esi),%esi +- 0x00, 0x00, 0x8d, 0xbf, // leal 0L(%edi),%edi +- 0x00, 0x00, 0x00, 0x00 }; +- const char nop13[13] = { 0x8d, 0xb6, 0x00, 0x00, // leal 0L(%esi),%esi +- 0x00, 0x00, 0x8d, 0xbc, // leal 0L(%edi,1),%edi +- 0x27, 0x00, 0x00, 0x00, +- 0x00 }; +- const char nop14[14] = { 0x8d, 0xb4, 0x26, 0x00, // leal 0L(%esi,1),%esi +- 0x00, 0x00, 0x00, 0x8d, // leal 0L(%edi,1),%edi +- 0xbc, 0x27, 0x00, 0x00, +- 0x00, 0x00 }; +- const char nop15[15] = { 0xeb, 0x0d, 0x90, 0x90, // jmp .+15 +- 0x90, 0x90, 0x90, 0x90, // nop,nop,nop,... +- 0x90, 0x90, 0x90, 0x90, +- 0x90, 0x90, 0x90 }; ++ const char nop1[1] = { '\x90' }; // nop ++ const char nop2[2] = { '\x66', '\x90' }; // xchg %ax %ax ++ const char nop3[3] = { '\x8d', '\x76', '\x00' }; // leal 0(%esi),%esi ++ const char nop4[4] = { '\x8d', '\x74', '\x26', // leal 0(%esi,1),%esi ++ '\x00'}; ++ const char nop5[5] = { '\x90', '\x8d', '\x74', // nop ++ '\x26', '\x00' }; // leal 0(%esi,1),%esi ++ const char nop6[6] = { '\x8d', '\xb6', '\x00', // leal 0L(%esi),%esi ++ '\x00', '\x00', '\x00' }; ++ const char nop7[7] = { '\x8d', '\xb4', '\x26', // leal 0L(%esi,1),%esi ++ '\x00', '\x00', '\x00', ++ '\x00' }; ++ const char nop8[8] = { '\x90', '\x8d', '\xb4', // nop ++ '\x26', '\x00', '\x00', // leal 0L(%esi,1),%esi ++ '\x00', '\x00' }; ++ const char nop9[9] = { '\x89', '\xf6', '\x8d', // movl %esi,%esi ++ '\xbc', '\x27', '\x00', // leal 0L(%edi,1),%edi ++ '\x00', '\x00', '\x00' }; ++ const char nop10[10] = { '\x8d', '\x76', '\x00', // leal 0(%esi),%esi ++ '\x8d', '\xbc', '\x27', // leal 0L(%edi,1),%edi ++ '\x00', '\x00', '\x00', ++ '\x00' }; ++ const char nop11[11] = { '\x8d', '\x74', '\x26', // leal 0(%esi,1),%esi ++ '\x00', '\x8d', '\xbc', // leal 0L(%edi,1),%edi ++ '\x27', '\x00', '\x00', ++ '\x00', '\x00' }; ++ const char nop12[12] = { '\x8d', '\xb6', '\x00', // leal 0L(%esi),%esi ++ '\x00', '\x00', '\x00', // leal 0L(%edi),%edi ++ '\x8d', '\xbf', '\x00', ++ '\x00', '\x00', '\x00' }; ++ const char nop13[13] = { '\x8d', '\xb6', '\x00', // leal 0L(%esi),%esi ++ '\x00', '\x00', '\x00', // leal 0L(%edi,1),%edi ++ '\x8d', '\xbc', '\x27', ++ '\x00', '\x00', '\x00', ++ '\x00' }; ++ const char nop14[14] = { '\x8d', '\xb4', '\x26', // leal 0L(%esi,1),%esi ++ '\x00', '\x00', '\x00', // leal 0L(%edi,1),%edi ++ '\x00', '\x8d', '\xbc', ++ '\x27', '\x00', '\x00', ++ '\x00', '\x00' }; ++ const char nop15[15] = { '\xeb', '\x0d', '\x90', // jmp .+15 ++ '\x90', '\x90', '\x90', // nop,nop,nop,... ++ '\x90', '\x90', '\x90', ++ '\x90', '\x90', '\x90', ++ '\x90', '\x90', '\x90' }; + + const char* nops[16] = { + NULL, +diff --git a/gold/incremental.cc b/gold/incremental.cc +index b422827..75e44c5 100644 +--- a/gold/incremental.cc ++++ b/gold/incremental.cc +@@ -685,7 +685,7 @@ Sized_incremental_binary::do_process_got_plt( + gold_assert(plt_desc >= first_global && plt_desc < symtab_count); + Symbol* sym = this->global_symbol(plt_desc - first_global); + // Add the PLT entry only if the symbol is still referenced. +- if (sym->in_reg()) ++ if (sym != NULL && sym->in_reg()) + { + gold_debug(DEBUG_INCREMENTAL, + "PLT entry %d: %s", +@@ -1966,8 +1966,9 @@ Sized_relobj_incr::Sized_relobj_incr( + input_reader_(ibase->inputs_reader().input_file(input_file_index)), + local_symbol_count_(0), output_local_dynsym_count_(0), + local_symbol_index_(0), local_symbol_offset_(0), local_dynsym_offset_(0), +- symbols_(), incr_reloc_offset_(-1U), incr_reloc_count_(0), +- incr_reloc_output_index_(0), incr_relocs_(NULL), local_symbols_() ++ symbols_(), defined_count_(0), incr_reloc_offset_(-1U), ++ incr_reloc_count_(0), incr_reloc_output_index_(0), incr_relocs_(NULL), ++ local_symbols_() + { + if (this->input_reader_.is_in_system_directory()) + this->set_is_in_system_directory(); +@@ -2120,6 +2121,9 @@ Sized_relobj_incr::do_add_symbols( + + Symbol* res = symtab->add_from_incrobj(this, name, NULL, &sym); + ++ if (shndx != elfcpp::SHN_UNDEF) ++ ++this->defined_count_; ++ + // If this is a linker-defined symbol that hasn't yet been defined, + // define it now. + if (input_shndx == -1U && !res->is_defined()) +@@ -2283,9 +2287,21 @@ Sized_relobj_incr::do_initialize_xindex() + template + void + Sized_relobj_incr::do_get_global_symbol_counts( +- const Symbol_table*, size_t*, size_t*) const +-{ +- gold_unreachable(); ++ const Symbol_table*, ++ size_t* defined, ++ size_t* used) const ++{ ++ *defined = this->defined_count_; ++ size_t count = 0; ++ for (typename Symbols::const_iterator p = this->symbols_.begin(); ++ p != this->symbols_.end(); ++ ++p) ++ if (*p != NULL ++ && (*p)->source() == Symbol::FROM_OBJECT ++ && (*p)->object() == this ++ && (*p)->is_defined()) ++ ++count; ++ *used = count; + } + + // Read the relocs. +@@ -2579,7 +2595,7 @@ Sized_incr_dynobj::Sized_incr_dynobj( + : Dynobj(name, NULL), ibase_(ibase), + input_file_index_(input_file_index), + input_reader_(ibase->inputs_reader().input_file(input_file_index)), +- symbols_() ++ symbols_(), defined_count_(0) + { + if (this->input_reader_.is_in_system_directory()) + this->set_is_in_system_directory(); +@@ -2677,6 +2693,7 @@ Sized_incr_dynobj::do_add_symbols( + // is meaningless, as long as it's not SHN_UNDEF. + shndx = 1; + v = gsym.get_st_value(); ++ ++this->defined_count_; + } + + osym.put_st_name(0); +@@ -2845,9 +2862,22 @@ Sized_incr_dynobj::do_initialize_xindex() + template + void + Sized_incr_dynobj::do_get_global_symbol_counts( +- const Symbol_table*, size_t*, size_t*) const +-{ +- gold_unreachable(); ++ const Symbol_table*, ++ size_t* defined, ++ size_t* used) const ++{ ++ *defined = this->defined_count_; ++ size_t count = 0; ++ for (typename Symbols::const_iterator p = this->symbols_.begin(); ++ p != this->symbols_.end(); ++ ++p) ++ if (*p != NULL ++ && (*p)->source() == Symbol::FROM_OBJECT ++ && (*p)->object() == this ++ && (*p)->is_defined() ++ && (*p)->dynsym_index() != -1U) ++ ++count; ++ *used = count; + } + + // Allocate an incremental object of the appropriate size and endianness. +diff --git a/gold/incremental.h b/gold/incremental.h +index e6732df..56fc52b 100644 +--- a/gold/incremental.h ++++ b/gold/incremental.h +@@ -1996,6 +1996,8 @@ class Sized_relobj_incr : public Sized_relobj + unsigned int local_dynsym_offset_; + // The entries in the symbol table for the external symbols. + Symbols symbols_; ++ // Number of symbols defined in object file itself. ++ size_t defined_count_; + // The offset of the first incremental relocation for this object. + unsigned int incr_reloc_offset_; + // The number of incremental relocations for this object. +@@ -2127,6 +2129,8 @@ class Sized_incr_dynobj : public Dynobj + Input_entry_reader input_reader_; + // The entries in the symbol table for the external symbols. + Symbols symbols_; ++ // Number of symbols defined in object file itself. ++ size_t defined_count_; + }; + + // Allocate an incremental object of the appropriate size and endianness. +diff --git a/gold/layout.cc b/gold/layout.cc +index 1c32bcf..9d8a43a 100644 +--- a/gold/layout.cc ++++ b/gold/layout.cc +@@ -2975,8 +2975,9 @@ Layout::segment_precedes(const Output_segment* seg1, + + // We shouldn't get here--we shouldn't create segments which we + // can't distinguish. Unless of course we are using a weird linker +- // script. +- gold_assert(this->script_options_->saw_phdrs_clause()); ++ // script or overlapping --section-start options. ++ gold_assert(this->script_options_->saw_phdrs_clause() ++ || parameters->options().any_section_start()); + return false; + } + +diff --git a/gold/options.cc b/gold/options.cc +index be32645..dcf6ba7 100644 +--- a/gold/options.cc ++++ b/gold/options.cc +@@ -198,7 +198,7 @@ parse_uint(const char* option_name, const char* arg, int* retval) + { + char* endptr; + *retval = strtol(arg, &endptr, 0); +- if (*endptr != '\0' || retval < 0) ++ if (*endptr != '\0' || *retval < 0) + gold_fatal(_("%s: invalid option value (expected an integer): %s"), + option_name, arg); + } +@@ -1224,6 +1224,37 @@ General_options::finalize() + gold_fatal(_("Options --incremental-changed, --incremental-unchanged, " + "--incremental-unknown require the use of --incremental")); + ++ // Check for options that are not compatible with incremental linking. ++ // Where an option can be disabled without seriously changing the semantics ++ // of the link, we turn the option off; otherwise, we issue a fatal error. ++ ++ if (this->incremental_mode_ != INCREMENTAL_OFF) ++ { ++ if (this->relocatable()) ++ gold_fatal(_("incremental linking is not compatible with -r")); ++ if (this->emit_relocs()) ++ gold_fatal(_("incremental linking is not compatible with " ++ "--emit-relocs")); ++ if (this->has_plugins()) ++ gold_fatal(_("incremental linking is not compatible with --plugin")); ++ if (this->gc_sections()) ++ { ++ gold_warning(_("ignoring --gc-sections for an incremental link")); ++ this->set_gc_sections(false); ++ } ++ if (this->icf_enabled()) ++ { ++ gold_warning(_("ignoring --icf for an incremental link")); ++ this->set_icf_status(ICF_NONE); ++ } ++ if (strcmp(this->compress_debug_sections(), "none") != 0) ++ { ++ gold_warning(_("ignoring --compress-debug-sections for an " ++ "incremental link")); ++ this->set_compress_debug_sections("none"); ++ } ++ } ++ + // FIXME: we can/should be doing a lot more sanity checking here. + } + +diff --git a/gold/options.h b/gold/options.h +index 768df9c..8876a1e 100644 +--- a/gold/options.h ++++ b/gold/options.h +@@ -791,6 +791,10 @@ class General_options + DEFINE_bool(g, options::EXACTLY_ONE_DASH, '\0', false, + N_("Ignored"), NULL); + ++ DEFINE_bool(gnu_unique, options::TWO_DASHES, '\0', true, ++ N_("Enable STB_GNU_UNIQUE symbol binding (default)"), ++ N_("Disable STB_GNU_UNIQUE symbol binding")); ++ + DEFINE_string(soname, options::ONE_DASH, 'h', NULL, + N_("Set shared library name"), N_("FILENAME")); + +@@ -1385,6 +1389,11 @@ class General_options + bool + section_start(const char* secname, uint64_t* paddr) const; + ++ // Return whether any --section-start option was used. ++ bool ++ any_section_start() const ++ { return !this->section_starts_.empty(); } ++ + enum Fix_v4bx + { + // Leave original instruction. +diff --git a/gold/output.cc b/gold/output.cc +index 29d8e3d..a7e1e9a 100644 +--- a/gold/output.cc ++++ b/gold/output.cc +@@ -119,7 +119,9 @@ extern "C" void *gold_mremap(void *, size_t, size_t, int); + static int + posix_fallocate(int o, off_t offset, off_t len) + { +- return ftruncate(o, offset + len); ++ if (ftruncate(o, offset + len) < 0) ++ return errno; ++ return 0; + } + #endif // !defined(HAVE_POSIX_FALLOCATE) + +@@ -706,7 +708,7 @@ Output_reloc::Output_reloc( + bool is_symbolless) + : address_(address), local_sym_index_(GSYM_CODE), type_(type), + is_relative_(is_relative), is_symbolless_(is_symbolless), +- is_section_symbol_(false), shndx_(INVALID_CODE) ++ is_section_symbol_(false), use_plt_offset_(false), shndx_(INVALID_CODE) + { + // this->type_ is a bitfield; make sure TYPE fits. + gold_assert(this->type_ == type); +@@ -727,7 +729,7 @@ Output_reloc::Output_reloc( + bool is_symbolless) + : address_(address), local_sym_index_(GSYM_CODE), type_(type), + is_relative_(is_relative), is_symbolless_(is_symbolless), +- is_section_symbol_(false), shndx_(shndx) ++ is_section_symbol_(false), use_plt_offset_(false), shndx_(shndx) + { + gold_assert(shndx != INVALID_CODE); + // this->type_ is a bitfield; make sure TYPE fits. +@@ -749,10 +751,12 @@ Output_reloc::Output_reloc( + Address address, + bool is_relative, + bool is_symbolless, +- bool is_section_symbol) ++ bool is_section_symbol, ++ bool use_plt_offset) + : address_(address), local_sym_index_(local_sym_index), type_(type), + is_relative_(is_relative), is_symbolless_(is_symbolless), +- is_section_symbol_(is_section_symbol), shndx_(INVALID_CODE) ++ is_section_symbol_(is_section_symbol), use_plt_offset_(use_plt_offset), ++ shndx_(INVALID_CODE) + { + gold_assert(local_sym_index != GSYM_CODE + && local_sym_index != INVALID_CODE); +@@ -773,10 +777,12 @@ Output_reloc::Output_reloc( + Address address, + bool is_relative, + bool is_symbolless, +- bool is_section_symbol) ++ bool is_section_symbol, ++ bool use_plt_offset) + : address_(address), local_sym_index_(local_sym_index), type_(type), + is_relative_(is_relative), is_symbolless_(is_symbolless), +- is_section_symbol_(is_section_symbol), shndx_(shndx) ++ is_section_symbol_(is_section_symbol), use_plt_offset_(use_plt_offset), ++ shndx_(shndx) + { + gold_assert(local_sym_index != GSYM_CODE + && local_sym_index != INVALID_CODE); +@@ -799,7 +805,7 @@ Output_reloc::Output_reloc( + Address address) + : address_(address), local_sym_index_(SECTION_CODE), type_(type), + is_relative_(false), is_symbolless_(false), +- is_section_symbol_(true), shndx_(INVALID_CODE) ++ is_section_symbol_(true), use_plt_offset_(false), shndx_(INVALID_CODE) + { + // this->type_ is a bitfield; make sure TYPE fits. + gold_assert(this->type_ == type); +@@ -820,7 +826,7 @@ Output_reloc::Output_reloc( + Address address) + : address_(address), local_sym_index_(SECTION_CODE), type_(type), + is_relative_(false), is_symbolless_(false), +- is_section_symbol_(true), shndx_(shndx) ++ is_section_symbol_(true), use_plt_offset_(false), shndx_(shndx) + { + gold_assert(shndx != INVALID_CODE); + // this->type_ is a bitfield; make sure TYPE fits. +@@ -842,7 +848,7 @@ Output_reloc::Output_reloc( + Address address) + : address_(address), local_sym_index_(0), type_(type), + is_relative_(false), is_symbolless_(false), +- is_section_symbol_(false), shndx_(INVALID_CODE) ++ is_section_symbol_(false), use_plt_offset_(false), shndx_(INVALID_CODE) + { + // this->type_ is a bitfield; make sure TYPE fits. + gold_assert(this->type_ == type); +@@ -858,7 +864,7 @@ Output_reloc::Output_reloc( + Address address) + : address_(address), local_sym_index_(0), type_(type), + is_relative_(false), is_symbolless_(false), +- is_section_symbol_(false), shndx_(shndx) ++ is_section_symbol_(false), use_plt_offset_(false), shndx_(shndx) + { + gold_assert(shndx != INVALID_CODE); + // this->type_ is a bitfield; make sure TYPE fits. +@@ -877,7 +883,7 @@ Output_reloc::Output_reloc( + Address address) + : address_(address), local_sym_index_(TARGET_CODE), type_(type), + is_relative_(false), is_symbolless_(false), +- is_section_symbol_(false), shndx_(INVALID_CODE) ++ is_section_symbol_(false), use_plt_offset_(false), shndx_(INVALID_CODE) + { + // this->type_ is a bitfield; make sure TYPE fits. + gold_assert(this->type_ == type); +@@ -894,7 +900,7 @@ Output_reloc::Output_reloc( + Address address) + : address_(address), local_sym_index_(TARGET_CODE), type_(type), + is_relative_(false), is_symbolless_(false), +- is_section_symbol_(false), shndx_(shndx) ++ is_section_symbol_(false), use_plt_offset_(false), shndx_(shndx) + { + gold_assert(shndx != INVALID_CODE); + // this->type_ is a bitfield; make sure TYPE fits. +@@ -1121,6 +1127,12 @@ Output_reloc::symbol_value( + Sized_relobj_file* relobj = + this->u1_.relobj->sized_relobj(); + gold_assert(relobj != NULL); ++ if (this->use_plt_offset_) ++ { ++ uint64_t plt_address = ++ parameters->target().plt_address_for_local(relobj, lsi); ++ return plt_address + relobj->local_plt_offset(lsi); ++ } + const Symbol_value* symval = relobj->local_symbol(lsi); + return symval->value(relobj, addend); + } +@@ -4880,17 +4892,27 @@ Output_file::open_base_file(const char* base_name, bool writable) + if (use_base_file) + { + this->open(s.st_size); +- ssize_t len = ::read(o, this->base_, s.st_size); +- if (len < 0) +- { +- gold_info(_("%s: read failed: %s"), base_name, strerror(errno)); +- return false; +- } +- if (len < s.st_size) +- { +- gold_info(_("%s: file too short"), base_name); +- return false; +- } ++ ssize_t bytes_to_read = s.st_size; ++ unsigned char* p = this->base_; ++ while (bytes_to_read > 0) ++ { ++ ssize_t len = ::read(o, p, bytes_to_read); ++ if (len < 0) ++ { ++ gold_info(_("%s: read failed: %s"), base_name, strerror(errno)); ++ return false; ++ } ++ if (len == 0) ++ { ++ gold_info(_("%s: file too short: read only %lld of %lld bytes"), ++ base_name, ++ static_cast(s.st_size - bytes_to_read), ++ static_cast(s.st_size)); ++ return false; ++ } ++ p += len; ++ bytes_to_read -= len; ++ } + ::close(o); + return true; + } +@@ -5052,8 +5074,12 @@ Output_file::map_no_anonymous(bool writable) + // output file will wind up incomplete, but we will have already + // exited. The alternative to fallocate would be to use fdatasync, + // but that would be a more significant performance hit. +- if (writable && ::posix_fallocate(o, 0, this->file_size_) < 0) +- gold_fatal(_("%s: %s"), this->name_, strerror(errno)); ++ if (writable) ++ { ++ int err = ::posix_fallocate(o, 0, this->file_size_); ++ if (err != 0) ++ gold_fatal(_("%s: %s"), this->name_, strerror(err)); ++ } + + // Map the file into memory. + int prot = PROT_READ; +diff --git a/gold/output.h b/gold/output.h +index 1bec2c0..e2d35e2 100644 +--- a/gold/output.h ++++ b/gold/output.h +@@ -1033,12 +1033,14 @@ class Output_reloc + Output_reloc(Sized_relobj* relobj, + unsigned int local_sym_index, unsigned int type, + Output_data* od, Address address, bool is_relative, +- bool is_symbolless, bool is_section_symbol); ++ bool is_symbolless, bool is_section_symbol, ++ bool use_plt_offset); + + Output_reloc(Sized_relobj* relobj, + unsigned int local_sym_index, unsigned int type, + unsigned int shndx, Address address, bool is_relative, +- bool is_symbolless, bool is_section_symbol); ++ bool is_symbolless, bool is_section_symbol, ++ bool use_plt_offset); + + // A reloc against the STT_SECTION symbol of an output section. + +@@ -1216,7 +1218,7 @@ class Output_reloc + // input file. + unsigned int local_sym_index_; + // The reloc type--a processor specific code. +- unsigned int type_ : 29; ++ unsigned int type_ : 28; + // True if the relocation is a RELATIVE relocation. + bool is_relative_ : 1; + // True if the relocation is one which should not use +@@ -1224,6 +1226,10 @@ class Output_reloc + bool is_symbolless_ : 1; + // True if the relocation is against a section symbol. + bool is_section_symbol_ : 1; ++ // True if the addend should be the PLT offset. This is used only ++ // for RELATIVE relocations to local symbols. ++ // (Used only for RELA, but stored here for space.) ++ bool use_plt_offset_ : 1; + // If the reloc address is an input section in an object, the + // section index. This is INVALID_CODE if the reloc address is + // specified in some other way. +@@ -1268,9 +1274,10 @@ class Output_reloc + unsigned int local_sym_index, unsigned int type, + Output_data* od, Address address, + Addend addend, bool is_relative, +- bool is_symbolless, bool is_section_symbol) ++ bool is_symbolless, bool is_section_symbol, ++ bool use_plt_offset) + : rel_(relobj, local_sym_index, type, od, address, is_relative, +- is_symbolless, is_section_symbol), ++ is_symbolless, is_section_symbol, use_plt_offset), + addend_(addend) + { } + +@@ -1278,9 +1285,10 @@ class Output_reloc + unsigned int local_sym_index, unsigned int type, + unsigned int shndx, Address address, + Addend addend, bool is_relative, +- bool is_symbolless, bool is_section_symbol) ++ bool is_symbolless, bool is_section_symbol, ++ bool use_plt_offset) + : rel_(relobj, local_sym_index, type, shndx, address, is_relative, +- is_symbolless, is_section_symbol), ++ is_symbolless, is_section_symbol, use_plt_offset), + addend_(addend) + { } + +@@ -1571,7 +1579,7 @@ class Output_data_reloc + Output_data* od, Address address) + { + this->add(od, Output_reloc_type(relobj, local_sym_index, type, od, +- address, false, false, false)); ++ address, false, false, false, false)); + } + + void +@@ -1580,7 +1588,7 @@ class Output_data_reloc + Output_data* od, unsigned int shndx, Address address) + { + this->add(od, Output_reloc_type(relobj, local_sym_index, type, shndx, +- address, false, false, false)); ++ address, false, false, false, false)); + } + + // Add a RELATIVE reloc against a local symbol. +@@ -1591,7 +1599,7 @@ class Output_data_reloc + Output_data* od, Address address) + { + this->add(od, Output_reloc_type(relobj, local_sym_index, type, od, +- address, true, true, false)); ++ address, true, true, false, false)); + } + + void +@@ -1600,7 +1608,7 @@ class Output_data_reloc + Output_data* od, unsigned int shndx, Address address) + { + this->add(od, Output_reloc_type(relobj, local_sym_index, type, shndx, +- address, true, true, false)); ++ address, true, true, false, false)); + } + + // Add a local relocation which does not use a symbol for the relocation, +@@ -1612,7 +1620,7 @@ class Output_data_reloc + Output_data* od, Address address) + { + this->add(od, Output_reloc_type(relobj, local_sym_index, type, od, +- address, false, true, false)); ++ address, false, true, false, false)); + } + + void +@@ -1622,7 +1630,7 @@ class Output_data_reloc + Address address) + { + this->add(od, Output_reloc_type(relobj, local_sym_index, type, shndx, +- address, false, true, false)); ++ address, false, true, false, false)); + } + + // Add a reloc against a local section symbol. This will be +@@ -1635,7 +1643,7 @@ class Output_data_reloc + Output_data* od, Address address) + { + this->add(od, Output_reloc_type(relobj, input_shndx, type, od, +- address, false, false, true)); ++ address, false, false, true, false)); + } + + void +@@ -1644,7 +1652,7 @@ class Output_data_reloc + Output_data* od, unsigned int shndx, Address address) + { + this->add(od, Output_reloc_type(relobj, input_shndx, type, shndx, +- address, false, false, true)); ++ address, false, false, true, false)); + } + + // A reloc against the STT_SECTION symbol of an output section. +@@ -1767,7 +1775,7 @@ class Output_data_reloc + Output_data* od, Address address, Addend addend) + { + this->add(od, Output_reloc_type(relobj, local_sym_index, type, od, address, +- addend, false, false, false)); ++ addend, false, false, false, false)); + } + + void +@@ -1777,7 +1785,8 @@ class Output_data_reloc + Addend addend) + { + this->add(od, Output_reloc_type(relobj, local_sym_index, type, shndx, +- address, addend, false, false, false)); ++ address, addend, false, false, false, ++ false)); + } + + // Add a RELATIVE reloc against a local symbol. +@@ -1785,20 +1794,23 @@ class Output_data_reloc + void + add_local_relative(Sized_relobj* relobj, + unsigned int local_sym_index, unsigned int type, +- Output_data* od, Address address, Addend addend) ++ Output_data* od, Address address, Addend addend, ++ bool use_plt_offset) + { + this->add(od, Output_reloc_type(relobj, local_sym_index, type, od, address, +- addend, true, true, false)); ++ addend, true, true, false, ++ use_plt_offset)); + } + + void + add_local_relative(Sized_relobj* relobj, + unsigned int local_sym_index, unsigned int type, + Output_data* od, unsigned int shndx, Address address, +- Addend addend) ++ Addend addend, bool use_plt_offset) + { + this->add(od, Output_reloc_type(relobj, local_sym_index, type, shndx, +- address, addend, true, true, false)); ++ address, addend, true, true, false, ++ use_plt_offset)); + } + + // Add a local relocation which does not use a symbol for the relocation, +@@ -1810,7 +1822,7 @@ class Output_data_reloc + Output_data* od, Address address, Addend addend) + { + this->add(od, Output_reloc_type(relobj, local_sym_index, type, od, address, +- addend, false, true, false)); ++ addend, false, true, false, false)); + } + + void +@@ -1820,7 +1832,8 @@ class Output_data_reloc + Address address, Addend addend) + { + this->add(od, Output_reloc_type(relobj, local_sym_index, type, shndx, +- address, addend, false, true, false)); ++ address, addend, false, true, false, ++ false)); + } + + // Add a reloc against a local section symbol. This will be +@@ -1833,7 +1846,7 @@ class Output_data_reloc + Output_data* od, Address address, Addend addend) + { + this->add(od, Output_reloc_type(relobj, input_shndx, type, od, address, +- addend, false, false, true)); ++ addend, false, false, true, false)); + } + + void +@@ -1843,7 +1856,8 @@ class Output_data_reloc + Addend addend) + { + this->add(od, Output_reloc_type(relobj, input_shndx, type, shndx, +- address, addend, false, false, true)); ++ address, addend, false, false, true, ++ false)); + } + + // A reloc against the STT_SECTION symbol of an output section. +diff --git a/gold/plugin.cc b/gold/plugin.cc +index 3ccd8d0..b4e68f8 100644 +--- a/gold/plugin.cc ++++ b/gold/plugin.cc +@@ -818,7 +818,9 @@ Pluginobj::Pluginobj(const std::string& name, Input_file* input_file, + } + + // Return TRUE if a defined symbol is referenced from outside the +-// universe of claimed objects. ++// universe of claimed objects. Only references from relocatable, ++// non-IR (unclaimed) objects count as a reference. References from ++// dynamic objects count only as "visible". + + static inline bool + is_referenced_from_outside(Symbol* lsym) +@@ -838,6 +840,8 @@ is_referenced_from_outside(Symbol* lsym) + static inline bool + is_visible_from_outside(Symbol* lsym) + { ++ if (lsym->in_dyn()) ++ return true; + if (parameters->options().export_dynamic() || parameters->options().shared()) + return lsym->is_externally_visible(); + return false; +@@ -1244,14 +1248,18 @@ Sized_pluginobj::do_initialize_xindex() + return NULL; + } + +-// Get symbol counts. Not used for plugin objects. ++// Get symbol counts. Don't count plugin objects; the replacement ++// files will provide the counts. + + template + void +-Sized_pluginobj::do_get_global_symbol_counts(const Symbol_table*, +- size_t*, size_t*) const ++Sized_pluginobj::do_get_global_symbol_counts( ++ const Symbol_table*, ++ size_t* defined, ++ size_t* used) const + { +- gold_unreachable(); ++ *defined = 0; ++ *used = 0; + } + + // Get symbols. Not used for plugin objects. +diff --git a/gold/powerpc.cc b/gold/powerpc.cc +index 45783c3..62a17ca 100644 +--- a/gold/powerpc.cc ++++ b/gold/powerpc.cc +@@ -1329,7 +1329,7 @@ Target_powerpc::Scan::local( + rela_dyn->add_local_relative(object, r_sym, r_type, + output_section, data_shndx, + reloc.get_r_offset(), +- reloc.get_r_addend()); ++ reloc.get_r_addend(), false); + } + } + break; +@@ -1372,7 +1372,7 @@ Target_powerpc::Scan::local( + object->set_local_got_offset(r_sym, GOT_TYPE_STANDARD, off); + rela_dyn->add_local_relative(object, r_sym, + elfcpp::R_POWERPC_RELATIVE, +- got, off, 0); ++ got, off, 0, false); + } + } + else +diff --git a/gold/readsyms.cc b/gold/readsyms.cc +index 1e50942..9974722 100644 +--- a/gold/readsyms.cc ++++ b/gold/readsyms.cc +@@ -161,8 +161,10 @@ void + Read_symbols::run(Workqueue* workqueue) + { + // If we didn't queue a new task, then we need to explicitly unblock +- // the token. +- if (!this->do_read_symbols(workqueue)) ++ // the token. If the object is a member of a lib group, however, ++ // the token was already added to the list of locks for the task, ++ // and it will be unblocked automatically at the end of the task. ++ if (!this->do_read_symbols(workqueue) && this->member_ == NULL) + workqueue->queue_soon(new Unblock_token(this->this_blocker_, + this->next_blocker_)); + } +diff --git a/gold/resolve.cc b/gold/resolve.cc +index 03288ec..780038a 100644 +--- a/gold/resolve.cc ++++ b/gold/resolve.cc +@@ -296,7 +296,7 @@ Symbol_table::resolve(Sized_symbol* to, + + // Record if we've seen this symbol in a real ELF object (i.e., the + // symbol is referenced from outside the world known to the plugin). +- if (object->pluginobj() == NULL) ++ if (object->pluginobj() == NULL && !object->is_dynamic()) + to->set_in_real_elf(); + + // If we're processing replacement files, allow new symbols to override +@@ -336,9 +336,9 @@ Symbol_table::resolve(Sized_symbol* to, + && to->name()[0] == '_' && to->name()[1] == 'Z') + { + Symbol_location fromloc +- = { object, orig_st_shndx, sym.get_st_value() }; ++ = { object, orig_st_shndx, static_cast(sym.get_st_value()) }; + Symbol_location toloc = { to->object(), to->shndx(&to_is_ordinary), +- to->value() }; ++ static_cast(to->value()) }; + this->candidate_odr_violations_[to->name()].insert(fromloc); + this->candidate_odr_violations_[to->name()].insert(toloc); + } +diff --git a/gold/script-sections.cc b/gold/script-sections.cc +index 1fad88d..f90c0b3 100644 +--- a/gold/script-sections.cc ++++ b/gold/script-sections.cc +@@ -680,7 +680,7 @@ class Sections_element_assignment : public Sections_element + set_section_addresses(Symbol_table* symtab, Layout* layout, + uint64_t* dot_value, uint64_t*, uint64_t*) + { +- this->assignment_.set_if_absolute(symtab, layout, true, *dot_value); ++ this->assignment_.set_if_absolute(symtab, layout, true, *dot_value, NULL); + } + + // Print for debugging. +@@ -714,7 +714,7 @@ class Sections_element_dot_assignment : public Sections_element + // output section definition the dot symbol is always considered + // to be absolute. + *dot_value = this->val_->eval_with_dot(symtab, layout, true, *dot_value, +- NULL, NULL, NULL); ++ NULL, NULL, NULL, false); + } + + // Update the dot symbol while setting section addresses. +@@ -724,7 +724,7 @@ class Sections_element_dot_assignment : public Sections_element + uint64_t* load_address) + { + *dot_value = this->val_->eval_with_dot(symtab, layout, false, *dot_value, +- NULL, NULL, dot_alignment); ++ NULL, NULL, dot_alignment, false); + *load_address = *dot_value; + } + +@@ -866,9 +866,11 @@ class Output_section_element_assignment : public Output_section_element + void + set_section_addresses(Symbol_table* symtab, Layout* layout, Output_section*, + uint64_t, uint64_t* dot_value, uint64_t*, +- Output_section**, std::string*, Input_section_list*) ++ Output_section** dot_section, std::string*, ++ Input_section_list*) + { +- this->assignment_.set_if_absolute(symtab, layout, true, *dot_value); ++ this->assignment_.set_if_absolute(symtab, layout, true, *dot_value, ++ *dot_section); + } + + // Print for debugging. +@@ -892,20 +894,28 @@ class Output_section_element_dot_assignment : public Output_section_element + : val_(val) + { } + ++ // An assignment to dot within an output section is enough to force ++ // the output section to exist. ++ bool ++ needs_output_section() const ++ { return true; } ++ + // Finalize the symbol. + void + finalize_symbols(Symbol_table* symtab, const Layout* layout, + uint64_t* dot_value, Output_section** dot_section) + { + *dot_value = this->val_->eval_with_dot(symtab, layout, true, *dot_value, +- *dot_section, dot_section, NULL); ++ *dot_section, dot_section, NULL, ++ true); + } + + // Update the dot symbol while setting section addresses. + void + set_section_addresses(Symbol_table* symtab, Layout* layout, Output_section*, + uint64_t, uint64_t* dot_value, uint64_t*, +- Output_section**, std::string*, Input_section_list*); ++ Output_section** dot_section, std::string*, ++ Input_section_list*); + + // Print for debugging. + void +@@ -936,7 +946,8 @@ Output_section_element_dot_assignment::set_section_addresses( + { + uint64_t next_dot = this->val_->eval_with_dot(symtab, layout, false, + *dot_value, *dot_section, +- dot_section, dot_alignment); ++ dot_section, dot_alignment, ++ true); + if (next_dot < *dot_value) + gold_error(_("dot may not move backward")); + if (next_dot > *dot_value && output_section != NULL) +@@ -1037,7 +1048,8 @@ Output_data_expression::do_write_to_buffer(unsigned char* buf) + { + uint64_t val = this->val_->eval_with_dot(this->symtab_, this->layout_, + true, this->dot_value_, +- this->dot_section_, NULL, NULL); ++ this->dot_section_, NULL, NULL, ++ false); + + if (parameters->target().is_big_endian()) + this->endian_write_to_buffer(val, buf); +@@ -1187,7 +1199,7 @@ class Output_section_element_fill : public Output_section_element + Output_section* fill_section; + uint64_t fill_val = this->val_->eval_with_dot(symtab, layout, false, + *dot_value, *dot_section, +- &fill_section, NULL); ++ &fill_section, NULL, false); + if (fill_section != NULL) + gold_warning(_("fill value is not absolute")); + // FIXME: The GNU linker supports fill values of arbitrary length. +@@ -2108,13 +2120,13 @@ Output_section_definition::finalize_symbols(Symbol_table* symtab, + { + address = this->address_->eval_with_dot(symtab, layout, true, + *dot_value, NULL, +- NULL, NULL); ++ NULL, NULL, false); + } + if (this->align_ != NULL) + { + uint64_t align = this->align_->eval_with_dot(symtab, layout, true, + *dot_value, NULL, +- NULL, NULL); ++ NULL, NULL, false); + address = align_address(address, align); + } + *dot_value = address; +@@ -2303,7 +2315,7 @@ Output_section_definition::set_section_addresses(Symbol_table* symtab, + else + address = this->address_->eval_with_dot(symtab, layout, true, + *dot_value, NULL, NULL, +- dot_alignment); ++ dot_alignment, false); + uint64_t align; + if (this->align_ == NULL) + { +@@ -2316,7 +2328,7 @@ Output_section_definition::set_section_addresses(Symbol_table* symtab, + { + Output_section* align_section; + align = this->align_->eval_with_dot(symtab, layout, true, *dot_value, +- NULL, &align_section, NULL); ++ NULL, &align_section, NULL, false); + if (align_section != NULL) + gold_warning(_("alignment of section %s is not absolute"), + this->name_.c_str()); +@@ -2401,7 +2413,7 @@ Output_section_definition::set_section_addresses(Symbol_table* symtab, + laddr = this->load_address_->eval_with_dot(symtab, layout, true, + *dot_value, + this->output_section_, +- NULL, NULL); ++ NULL, NULL, false); + if (this->output_section_ != NULL) + this->output_section_->set_load_address(laddr); + } +@@ -2416,7 +2428,8 @@ Output_section_definition::set_section_addresses(Symbol_table* symtab, + Output_section* subalign_section; + subalign = this->subalign_->eval_with_dot(symtab, layout, true, + *dot_value, NULL, +- &subalign_section, NULL); ++ &subalign_section, NULL, ++ false); + if (subalign_section != NULL) + gold_warning(_("subalign of section %s is not absolute"), + this->name_.c_str()); +@@ -2431,7 +2444,7 @@ Output_section_definition::set_section_addresses(Symbol_table* symtab, + uint64_t fill_val = this->fill_->eval_with_dot(symtab, layout, true, + *dot_value, + NULL, &fill_section, +- NULL); ++ NULL, false); + if (fill_section != NULL) + gold_warning(_("fill of section %s is not absolute"), + this->name_.c_str()); +diff --git a/gold/script.cc b/gold/script.cc +index 7df0c9e..b471cf9 100644 +--- a/gold/script.cc ++++ b/gold/script.cc +@@ -983,18 +983,20 @@ Symbol_assignment::sized_finalize(Symbol_table* symtab, const Layout* layout, + uint64_t final_val = this->val_->eval_maybe_dot(symtab, layout, true, + is_dot_available, + dot_value, dot_section, +- §ion, NULL); ++ §ion, NULL, false); + Sized_symbol* ssym = symtab->get_sized_symbol(this->sym_); + ssym->set_value(final_val); + if (section != NULL) + ssym->set_output_section(section); + } + +-// Set the symbol value if the expression yields an absolute value. ++// Set the symbol value if the expression yields an absolute value or ++// a value relative to DOT_SECTION. + + void + Symbol_assignment::set_if_absolute(Symbol_table* symtab, const Layout* layout, +- bool is_dot_available, uint64_t dot_value) ++ bool is_dot_available, uint64_t dot_value, ++ Output_section* dot_section) + { + if (this->sym_ == NULL) + return; +@@ -1002,8 +1004,9 @@ Symbol_assignment::set_if_absolute(Symbol_table* symtab, const Layout* layout, + Output_section* val_section; + uint64_t val = this->val_->eval_maybe_dot(symtab, layout, false, + is_dot_available, dot_value, +- NULL, &val_section, NULL); +- if (val_section != NULL) ++ dot_section, &val_section, NULL, ++ false); ++ if (val_section != NULL && val_section != dot_section) + return; + + if (parameters->target().get_size() == 32) +@@ -1026,6 +1029,8 @@ Symbol_assignment::set_if_absolute(Symbol_table* symtab, const Layout* layout, + } + else + gold_unreachable(); ++ if (val_section != NULL) ++ this->sym_->set_output_section(val_section); + } + + // Print for debugging. +@@ -1215,7 +1220,7 @@ Script_options::set_section_addresses(Symbol_table* symtab, Layout* layout) + for (Symbol_assignments::iterator p = this->symbol_assignments_.begin(); + p != this->symbol_assignments_.end(); + ++p) +- (*p)->set_if_absolute(symtab, layout, false, 0); ++ (*p)->set_if_absolute(symtab, layout, false, 0, NULL); + + return this->script_sections_.set_section_addresses(symtab, layout); + } +diff --git a/gold/script.h b/gold/script.h +index 73079a4..f41f438 100644 +--- a/gold/script.h ++++ b/gold/script.h +@@ -90,20 +90,28 @@ class Expression + // the section address. If RESULT_ALIGNMENT is not NULL, this sets + // *RESULT_ALIGNMENT to the alignment of the value of that alignment + // is larger than *RESULT_ALIGNMENT; this will only be non-zero if +- // this is an ALIGN expression. ++ // this is an ALIGN expression. If IS_SECTION_DOT_ASSIGMENT is true, ++ // we are evaluating an assignment to dot within an output section, ++ // and an absolute value should be interpreted as an offset within ++ // the section. + uint64_t + eval_with_dot(const Symbol_table*, const Layout*, bool check_assertions, + uint64_t dot_value, Output_section* dot_section, +- Output_section** result_section, uint64_t* result_alignment); ++ Output_section** result_section, uint64_t* result_alignment, ++ bool is_section_dot_assignment); + + // Return the value of an expression which may or may not be + // permitted to refer to the dot symbol, depending on +- // is_dot_available. ++ // is_dot_available. If IS_SECTION_DOT_ASSIGMENT is true, ++ // we are evaluating an assignment to dot within an output section, ++ // and an absolute value should be interpreted as an offset within ++ // the section. + uint64_t + eval_maybe_dot(const Symbol_table*, const Layout*, bool check_assertions, + bool is_dot_available, uint64_t dot_value, + Output_section* dot_section, +- Output_section** result_section, uint64_t* result_alignment); ++ Output_section** result_section, uint64_t* result_alignment, ++ bool is_section_dot_assignment); + + // Print the expression to the FILE. This is for debugging. + virtual void +@@ -339,12 +347,12 @@ class Symbol_assignment + finalize_with_dot(Symbol_table*, const Layout*, uint64_t dot_value, + Output_section* dot_section); + +- // Set the symbol value, but only if the value is absolute. This is +- // used while processing a SECTIONS clause. We assume that dot is +- // an absolute value here. We do not check assertions. ++ // Set the symbol value, but only if the value is absolute or relative to ++ // DOT_SECTION. This is used while processing a SECTIONS clause. ++ // We assume that dot is an absolute value here. We do not check assertions. + void + set_if_absolute(Symbol_table*, const Layout*, bool is_dot_available, +- uint64_t dot_value); ++ uint64_t dot_value, Output_section* dot_section); + + const std::string& + name() const +diff --git a/gold/sparc.cc b/gold/sparc.cc +index 5f67a4e..12e1dee 100644 +--- a/gold/sparc.cc ++++ b/gold/sparc.cc +@@ -1855,7 +1855,7 @@ Target_sparc::Scan::local( + rela_dyn->add_local_relative(object, r_sym, elfcpp::R_SPARC_RELATIVE, + output_section, data_shndx, + reloc.get_r_offset(), +- reloc.get_r_addend()); ++ reloc.get_r_addend(), false); + } + break; + +@@ -1946,7 +1946,7 @@ Target_sparc::Scan::local( + object->set_local_got_offset(r_sym, GOT_TYPE_STANDARD, off); + rela_dyn->add_local_relative(object, r_sym, + elfcpp::R_SPARC_RELATIVE, +- got, off, 0); ++ got, off, 0, false); + } + } + else +diff --git a/gold/symtab.cc b/gold/symtab.cc +index ff1b5ca..f0ba1d5 100644 +--- a/gold/symtab.cc ++++ b/gold/symtab.cc +@@ -602,20 +602,16 @@ Symbol_table::gc_mark_undef_symbols(Layout* layout) + } + + void +-Symbol_table::gc_mark_symbol_for_shlib(Symbol* sym) ++Symbol_table::gc_mark_symbol(Symbol* sym) + { +- if (!sym->is_from_dynobj() +- && sym->is_externally_visible()) ++ // Add the object and section to the work list. ++ Relobj* obj = static_cast(sym->object()); ++ bool is_ordinary; ++ unsigned int shndx = sym->shndx(&is_ordinary); ++ if (is_ordinary && shndx != elfcpp::SHN_UNDEF) + { +- //Add the object and section to the work list. +- Relobj* obj = static_cast(sym->object()); +- bool is_ordinary; +- unsigned int shndx = sym->shndx(&is_ordinary); +- if (is_ordinary && shndx != elfcpp::SHN_UNDEF) +- { +- gold_assert(this->gc_!= NULL); +- this->gc_->worklist().push(Section_id(obj, shndx)); +- } ++ gold_assert(this->gc_!= NULL); ++ this->gc_->worklist().push(Section_id(obj, shndx)); + } + } + +@@ -626,16 +622,7 @@ Symbol_table::gc_mark_dyn_syms(Symbol* sym) + { + if (sym->in_dyn() && sym->source() == Symbol::FROM_OBJECT + && !sym->object()->is_dynamic()) +- { +- Relobj* obj = static_cast(sym->object()); +- bool is_ordinary; +- unsigned int shndx = sym->shndx(&is_ordinary); +- if (is_ordinary && shndx != elfcpp::SHN_UNDEF) +- { +- gold_assert(this->gc_ != NULL); +- this->gc_->worklist().push(Section_id(obj, shndx)); +- } +- } ++ this->gc_mark_symbol(sym); + } + + // Make TO a symbol which forwards to FROM. +@@ -1143,6 +1130,14 @@ Symbol_table::add_from_relobj( + bool is_default_version = false; + bool is_forced_local = false; + ++ // FIXME: For incremental links, we don't store version information, ++ // so we need to ignore version symbols for now. ++ if (parameters->incremental_update() && ver != NULL) ++ { ++ namelen = ver - name; ++ ver = NULL; ++ } ++ + if (ver != NULL) + { + // The symbol name is of the form foo@VERSION or foo@@VERSION +@@ -1243,11 +1238,16 @@ Symbol_table::add_from_relobj( + if (is_forced_local) + this->force_local(res); + +- // If building a shared library using garbage collection, do not +- // treat externally visible symbols as garbage. +- if (parameters->options().gc_sections() +- && parameters->options().shared()) +- this->gc_mark_symbol_for_shlib(res); ++ // Do not treat this symbol as garbage if this symbol will be ++ // exported to the dynamic symbol table. This is true when ++ // building a shared library or using --export-dynamic and ++ // the symbol is externally visible. ++ if (parameters->options().gc_sections() ++ && res->is_externally_visible() ++ && !res->is_from_dynobj() ++ && (parameters->options().shared() ++ || parameters->options().export_dynamic())) ++ this->gc_mark_symbol(res); + + if (is_defined_in_discarded_section) + res->set_is_defined_in_discarded_section(); +@@ -1346,6 +1346,11 @@ Symbol_table::add_from_dynobj( + return; + } + ++ // FIXME: For incremental links, we don't store version information, ++ // so we need to ignore version symbols for now. ++ if (parameters->incremental_update()) ++ versym = NULL; ++ + if (versym != NULL && versym_size / 2 < count) + { + dynobj->error(_("too few symbol versions")); +@@ -2809,6 +2814,12 @@ Symbol_table::sized_write_globals(const Stringpool* sympool, + typename elfcpp::Elf_types::Elf_Addr sym_value = sym->value(); + typename elfcpp::Elf_types::Elf_Addr dynsym_value = sym_value; + elfcpp::STB binding = sym->binding(); ++ ++ // If --no-gnu-unique is set, change STB_GNU_UNIQUE to STB_GLOBAL. ++ if (binding == elfcpp::STB_GNU_UNIQUE ++ && !parameters->options().gnu_unique()) ++ binding = elfcpp::STB_GLOBAL; ++ + switch (sym->source()) + { + case Symbol::FROM_OBJECT: +diff --git a/gold/symtab.h b/gold/symtab.h +index b9b9e00..427f72f 100644 +--- a/gold/symtab.h ++++ b/gold/symtab.h +@@ -1308,10 +1308,9 @@ class Symbol_table + void + gc_mark_undef_symbols(Layout*); + +- // During garbage collection, this ensures externally visible symbols +- // are not treated as garbage while building shared objects. ++ // This tells garbage collection that this symbol is referenced. + void +- gc_mark_symbol_for_shlib(Symbol* sym); ++ gc_mark_symbol(Symbol* sym); + + // During garbage collection, this keeps sections that correspond to + // symbols seen in dynamic objects. +diff --git a/gold/testsuite/Makefile.in b/gold/testsuite/Makefile.in +index 67149fb..785dcdd 100644 +--- a/gold/testsuite/Makefile.in ++++ b/gold/testsuite/Makefile.in +@@ -1844,6 +1844,8 @@ EGREP = @EGREP@ + EXEEXT = @EXEEXT@ + GENCAT = @GENCAT@ + GMSGFMT = @GMSGFMT@ ++GOLD_LDADD = @GOLD_LDADD@ ++GOLD_LDFLAGS = @GOLD_LDFLAGS@ + GREP = @GREP@ + INCINTL = @INCINTL@ + INSTALL = @INSTALL@ +diff --git a/gold/testsuite/plugin_test_2.sh b/gold/testsuite/plugin_test_2.sh +index a47d22a..293b1f0 100755 +--- a/gold/testsuite/plugin_test_2.sh ++++ b/gold/testsuite/plugin_test_2.sh +@@ -45,7 +45,7 @@ check plugin_test_2.err "two_file_test_main.o: claim file hook called" + check plugin_test_2.err "two_file_test_1.syms: claim file hook called" + check plugin_test_2.err "two_file_test_1b.syms: claim file hook called" + check plugin_test_2.err "two_file_shared_2.so: claim file hook called" +-check plugin_test_2.err "two_file_test_1.syms: _Z4f13iv: PREVAILING_DEF_REG" ++check plugin_test_2.err "two_file_test_1.syms: _Z4f13iv: PREVAILING_DEF_IRONLY_EXP" + check plugin_test_2.err "two_file_test_1.syms: _Z2t2v: PREVAILING_DEF_REG" + check plugin_test_2.err "two_file_test_1.syms: v2: RESOLVED_DYN" + check plugin_test_2.err "two_file_test_1.syms: t17data: RESOLVED_DYN" +diff --git a/gold/testsuite/script_test_2.t b/gold/testsuite/script_test_2.t +index 73d39df..6a0188f 100644 +--- a/gold/testsuite/script_test_2.t ++++ b/gold/testsuite/script_test_2.t +@@ -49,7 +49,7 @@ SECTIONS + /* This should match the remaining sections. */ + *(.gold_test) + +- . = . + 4; ++ . = 60; + start_data = .; + BYTE(1) + SHORT(2) +diff --git a/gold/x86_64.cc b/gold/x86_64.cc +index e6b0021..e7c981b 100644 +--- a/gold/x86_64.cc ++++ b/gold/x86_64.cc +@@ -1549,7 +1549,7 @@ Target_x86_64::reserve_local_got_entry( + case GOT_TYPE_STANDARD: + if (parameters->options().output_is_position_independent()) + rela_dyn->add_local_relative(obj, r_sym, elfcpp::R_X86_64_RELATIVE, +- this->got_, got_offset, 0); ++ this->got_, got_offset, 0, false); + break; + case GOT_TYPE_TLS_OFFSET: + rela_dyn->add_local(obj, r_sym, elfcpp::R_X86_64_TPOFF64, +@@ -1953,8 +1953,8 @@ Target_x86_64::Scan::local(Symbol_table* symtab, + const elfcpp::Sym<64, false>& lsym) + { + // A local STT_GNU_IFUNC symbol may require a PLT entry. +- if (lsym.get_st_type() == elfcpp::STT_GNU_IFUNC +- && this->reloc_needs_plt_for_ifunc(object, r_type)) ++ bool is_ifunc = lsym.get_st_type() == elfcpp::STT_GNU_IFUNC; ++ if (is_ifunc && this->reloc_needs_plt_for_ifunc(object, r_type)) + { + unsigned int r_sym = elfcpp::elf_r_sym<64>(reloc.get_r_info()); + target->make_local_ifunc_plt_entry(symtab, layout, object, r_sym); +@@ -1982,7 +1982,7 @@ Target_x86_64::Scan::local(Symbol_table* symtab, + elfcpp::R_X86_64_RELATIVE, + output_section, data_shndx, + reloc.get_r_offset(), +- reloc.get_r_addend()); ++ reloc.get_r_addend(), is_ifunc); + } + break; + +@@ -2058,7 +2058,7 @@ Target_x86_64::Scan::local(Symbol_table* symtab, + // lets function pointers compare correctly with shared + // libraries. Otherwise we would need an IRELATIVE reloc. + bool is_new; +- if (lsym.get_st_type() == elfcpp::STT_GNU_IFUNC) ++ if (is_ifunc) + is_new = got->add_local_plt(object, r_sym, GOT_TYPE_STANDARD); + else + is_new = got->add_local(object, r_sym, GOT_TYPE_STANDARD); +@@ -2076,7 +2076,7 @@ Target_x86_64::Scan::local(Symbol_table* symtab, + object->local_got_offset(r_sym, GOT_TYPE_STANDARD); + rela_dyn->add_local_relative(object, r_sym, + elfcpp::R_X86_64_RELATIVE, +- got, got_offset, 0); ++ got, got_offset, 0, is_ifunc); + } + else + { +@@ -3181,12 +3181,6 @@ Target_x86_64::Relocate::relocate_tls(const Relocate_info<64, false>* relinfo, + } + if (optimized_type == tls::TLSOPT_TO_IE) + { +- if (tls_segment == NULL) +- { +- gold_assert(parameters->errors()->error_count() > 0 +- || issue_undefined_symbol_error(gsym)); +- return; +- } + value = target->got_plt_section()->address() + got_offset; + this->tls_gd_to_ie(relinfo, relnum, tls_segment, rela, r_type, + value, view, address, view_size); +@@ -3867,42 +3861,51 @@ Target_x86_64::do_code_fill(section_size_type length) const + } + + // Nop sequences of various lengths. +- const char nop1[1] = { 0x90 }; // nop +- const char nop2[2] = { 0x66, 0x90 }; // xchg %ax %ax +- const char nop3[3] = { 0x0f, 0x1f, 0x00 }; // nop (%rax) +- const char nop4[4] = { 0x0f, 0x1f, 0x40, 0x00}; // nop 0(%rax) +- const char nop5[5] = { 0x0f, 0x1f, 0x44, 0x00, // nop 0(%rax,%rax,1) +- 0x00 }; +- const char nop6[6] = { 0x66, 0x0f, 0x1f, 0x44, // nopw 0(%rax,%rax,1) +- 0x00, 0x00 }; +- const char nop7[7] = { 0x0f, 0x1f, 0x80, 0x00, // nopl 0L(%rax) +- 0x00, 0x00, 0x00 }; +- const char nop8[8] = { 0x0f, 0x1f, 0x84, 0x00, // nopl 0L(%rax,%rax,1) +- 0x00, 0x00, 0x00, 0x00 }; +- const char nop9[9] = { 0x66, 0x0f, 0x1f, 0x84, // nopw 0L(%rax,%rax,1) +- 0x00, 0x00, 0x00, 0x00, +- 0x00 }; +- const char nop10[10] = { 0x66, 0x2e, 0x0f, 0x1f, // nopw %cs:0L(%rax,%rax,1) +- 0x84, 0x00, 0x00, 0x00, +- 0x00, 0x00 }; +- const char nop11[11] = { 0x66, 0x66, 0x2e, 0x0f, // data16 +- 0x1f, 0x84, 0x00, 0x00, // nopw %cs:0L(%rax,%rax,1) +- 0x00, 0x00, 0x00 }; +- const char nop12[12] = { 0x66, 0x66, 0x66, 0x2e, // data16; data16 +- 0x0f, 0x1f, 0x84, 0x00, // nopw %cs:0L(%rax,%rax,1) +- 0x00, 0x00, 0x00, 0x00 }; +- const char nop13[13] = { 0x66, 0x66, 0x66, 0x66, // data16; data16; data16 +- 0x2e, 0x0f, 0x1f, 0x84, // nopw %cs:0L(%rax,%rax,1) +- 0x00, 0x00, 0x00, 0x00, +- 0x00 }; +- const char nop14[14] = { 0x66, 0x66, 0x66, 0x66, // data16; data16; data16 +- 0x66, 0x2e, 0x0f, 0x1f, // data16 +- 0x84, 0x00, 0x00, 0x00, // nopw %cs:0L(%rax,%rax,1) +- 0x00, 0x00 }; +- const char nop15[15] = { 0x66, 0x66, 0x66, 0x66, // data16; data16; data16 +- 0x66, 0x66, 0x2e, 0x0f, // data16; data16 +- 0x1f, 0x84, 0x00, 0x00, // nopw %cs:0L(%rax,%rax,1) +- 0x00, 0x00, 0x00 }; ++ const char nop1[1] = { '\x90' }; // nop ++ const char nop2[2] = { '\x66', '\x90' }; // xchg %ax %ax ++ const char nop3[3] = { '\x0f', '\x1f', '\x00' }; // nop (%rax) ++ const char nop4[4] = { '\x0f', '\x1f', '\x40', // nop 0(%rax) ++ '\x00'}; ++ const char nop5[5] = { '\x0f', '\x1f', '\x44', // nop 0(%rax,%rax,1) ++ '\x00', '\x00' }; ++ const char nop6[6] = { '\x66', '\x0f', '\x1f', // nopw 0(%rax,%rax,1) ++ '\x44', '\x00', '\x00' }; ++ const char nop7[7] = { '\x0f', '\x1f', '\x80', // nopl 0L(%rax) ++ '\x00', '\x00', '\x00', ++ '\x00' }; ++ const char nop8[8] = { '\x0f', '\x1f', '\x84', // nopl 0L(%rax,%rax,1) ++ '\x00', '\x00', '\x00', ++ '\x00', '\x00' }; ++ const char nop9[9] = { '\x66', '\x0f', '\x1f', // nopw 0L(%rax,%rax,1) ++ '\x84', '\x00', '\x00', ++ '\x00', '\x00', '\x00' }; ++ const char nop10[10] = { '\x66', '\x2e', '\x0f', // nopw %cs:0L(%rax,%rax,1) ++ '\x1f', '\x84', '\x00', ++ '\x00', '\x00', '\x00', ++ '\x00' }; ++ const char nop11[11] = { '\x66', '\x66', '\x2e', // data16 ++ '\x0f', '\x1f', '\x84', // nopw %cs:0L(%rax,%rax,1) ++ '\x00', '\x00', '\x00', ++ '\x00', '\x00' }; ++ const char nop12[12] = { '\x66', '\x66', '\x66', // data16; data16 ++ '\x2e', '\x0f', '\x1f', // nopw %cs:0L(%rax,%rax,1) ++ '\x84', '\x00', '\x00', ++ '\x00', '\x00', '\x00' }; ++ const char nop13[13] = { '\x66', '\x66', '\x66', // data16; data16; data16 ++ '\x66', '\x2e', '\x0f', // nopw %cs:0L(%rax,%rax,1) ++ '\x1f', '\x84', '\x00', ++ '\x00', '\x00', '\x00', ++ '\x00' }; ++ const char nop14[14] = { '\x66', '\x66', '\x66', // data16; data16; data16 ++ '\x66', '\x66', '\x2e', // data16 ++ '\x0f', '\x1f', '\x84', // nopw %cs:0L(%rax,%rax,1) ++ '\x00', '\x00', '\x00', ++ '\x00', '\x00' }; ++ const char nop15[15] = { '\x66', '\x66', '\x66', // data16; data16; data16 ++ '\x66', '\x66', '\x66', // data16; data16 ++ '\x2e', '\x0f', '\x1f', // nopw %cs:0L(%rax,%rax,1) ++ '\x84', '\x00', '\x00', ++ '\x00', '\x00', '\x00' }; + + const char* nops[16] = { + NULL, +diff --git a/include/ChangeLog b/include/ChangeLog +index af96977..e32f0f9 100644 +--- a/include/ChangeLog ++++ b/include/ChangeLog +@@ -1,3 +1,11 @@ ++2011-12-19 Chung-Lin Tang ++ ++ Backport from mainline: ++ ++ 2011-12-19 Chung-Lin Tang ++ ++ * elf/mips.h (elf_mips_reloc_type): Add R_MIPS16_TLS_* entries. ++ + 2011-10-25 Alan Modra + + Apply mainline patches. +diff --git a/include/elf/mips.h b/include/elf/mips.h +index db5fa54..c2c5922 100644 +--- a/include/elf/mips.h ++++ b/include/elf/mips.h +@@ -98,7 +98,14 @@ START_RELOC_NUMBERS (elf_mips_reloc_type) + RELOC_NUMBER (R_MIPS16_CALL16, 103) + RELOC_NUMBER (R_MIPS16_HI16, 104) + RELOC_NUMBER (R_MIPS16_LO16, 105) +- FAKE_RELOC (R_MIPS16_max, 106) ++ RELOC_NUMBER (R_MIPS16_TLS_GD, 106) ++ RELOC_NUMBER (R_MIPS16_TLS_LDM, 107) ++ RELOC_NUMBER (R_MIPS16_TLS_DTPREL_HI16, 108) ++ RELOC_NUMBER (R_MIPS16_TLS_DTPREL_LO16, 109) ++ RELOC_NUMBER (R_MIPS16_TLS_GOTTPREL, 110) ++ RELOC_NUMBER (R_MIPS16_TLS_TPREL_HI16, 111) ++ RELOC_NUMBER (R_MIPS16_TLS_TPREL_LO16, 112) ++ FAKE_RELOC (R_MIPS16_max, 113) + /* These relocations are specific to VxWorks. */ + RELOC_NUMBER (R_MIPS_COPY, 126) + RELOC_NUMBER (R_MIPS_JUMP_SLOT, 127) +diff --git a/ld/ChangeLog b/ld/ChangeLog +index f5fa6ff..c290a68 100644 +--- a/ld/ChangeLog ++++ b/ld/ChangeLog +@@ -1,3 +1,8 @@ ++2011-12-20 Joseph Myers ++ ++ * emulparams/elf32bmip.sh (OTHER_SECTIONS): Put .mdebug.* and ++ .gcc_compiled_long* sections at address 0. ++ + 2011-11-02 Rainer Orth + + Backport from mainline: +diff --git a/ld/emulparams/elf32bmip.sh b/ld/emulparams/elf32bmip.sh +index 44a0b8a..f0fcd2c 100644 +--- a/ld/emulparams/elf32bmip.sh ++++ b/ld/emulparams/elf32bmip.sh +@@ -64,14 +64,14 @@ OTHER_BSS_SYMBOLS='_fbss = .;' + OTHER_SECTIONS=' + .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) } + .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) } +- .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) } +- .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) } +- .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) } +- .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) } +- .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) } +- .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) } +- .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) } +- .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) } ++ .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) } ++ .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) } ++ .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) } ++ .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) } ++ .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) } ++ .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) } ++ .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) } ++ .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) } + ' + ARCH=mips + MACHINE= +diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog +index 233d962..6318c4f 100644 +--- a/ld/testsuite/ChangeLog ++++ b/ld/testsuite/ChangeLog +@@ -1,3 +1,22 @@ ++2012-01-10 H.J. Lu ++ ++ Backport from mainline: ++ PR ld/13581 ++ * ld-x86-64/ilp32-4.s: New. ++ * ld-x86-64/ilp32-10.d: Likewise. ++ * ld-x86-64/ilp32-10.s: Likewise. ++ ++ * ld-x86-64/ilp32-4.d: Adjusted. ++ * ld-x86-64/ilp32-5.d: Likewise. ++ * ld-x86-64/ilp32-5.s: Likewise. ++ ++ * ld-x86-64/x86-64.exp: Run ilp32-10. ++ ++2011-12-01 Hans-Peter Nilsson ++ ++ * ld-cris/pic-gc-72.d: Revert last change to adjust for reverted ++ cause for last change. ++ + 2011-11-10 Matthew Gretton-Dann + + Apply mainline patches. +diff --git a/ld/testsuite/ld-cris/pic-gc-72.d b/ld/testsuite/ld-cris/pic-gc-72.d +index 7e72752..7c30980 100644 +--- a/ld/testsuite/ld-cris/pic-gc-72.d ++++ b/ld/testsuite/ld-cris/pic-gc-72.d +@@ -19,11 +19,10 @@ Contents of section .dynsym: + Contents of section .dynstr: + #... + Contents of section .text: +- 016e 0f050f05 .* ++ 0188 0f050f05 .* + Contents of section .dynamic: +- 2174 .* + #... + Contents of section .got: +- 21cc 74210000 00000000 00000000 .* ++ 21e4 8c210000 00000000 00000000 .* + Contents of section .data: +- 21d8 00000000 .* ++ 21f0 00000000 .* +diff --git a/ld/testsuite/ld-x86-64/ilp32-10.d b/ld/testsuite/ld-x86-64/ilp32-10.d +new file mode 100644 +index 0000000..43d9fbd +--- /dev/null ++++ b/ld/testsuite/ld-x86-64/ilp32-10.d +@@ -0,0 +1,3 @@ ++#as: --x32 ++#ld: -shared -melf32_x86_64 ++#error: .*relocation R_X86_64_PC32 against undefined symbol `bar' can not be used when making a shared object; recompile with -fPIC +diff --git a/ld/testsuite/ld-x86-64/ilp32-10.s b/ld/testsuite/ld-x86-64/ilp32-10.s +new file mode 100644 +index 0000000..70e4a90 +--- /dev/null ++++ b/ld/testsuite/ld-x86-64/ilp32-10.s +@@ -0,0 +1,3 @@ ++ .globl foo ++foo: ++ mov bar(%rip), %rax +diff --git a/ld/testsuite/ld-x86-64/ilp32-4.d b/ld/testsuite/ld-x86-64/ilp32-4.d +index 84dc7b2..92d8a67 100644 +--- a/ld/testsuite/ld-x86-64/ilp32-4.d ++++ b/ld/testsuite/ld-x86-64/ilp32-4.d +@@ -1,36 +1,30 @@ +-#source: start.s + #as: --x32 + #ld: -m elf32_x86_64 -shared --no-ld-generated-unwind-info + #readelf: -d -S --wide + +-There are 10 section headers, starting at offset 0x22c: ++There are 9 section headers, starting at offset 0x1d8: + + Section Headers: + \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al + \[ 0\] NULL 00000000 000000 000000 00 0 0 0 +- \[ 1\] .hash HASH 00000094 000094 000030 04 A 2 0 4 +- \[ 2\] .dynsym DYNSYM 000000c4 0000c4 000070 10 A 3 2 4 +- \[ 3\] .dynstr STRTAB 00000134 000134 00001d 00 A 0 0 1 +- \[ 4\] .rela.dyn RELA 00000154 000154 00000c 0c A 2 0 4 +- \[ 5\] .text PROGBITS 00000160 000160 000005 00 AX 0 0 4 +- \[ 6\] .dynamic DYNAMIC 00200168 000168 000078 08 WA 3 0 4 +- \[ 7\] .shstrtab STRTAB 00000000 0001e0 00004a 00 0 0 1 +- \[ 8\] .symtab SYMTAB 00000000 0003bc 0000e0 10 9 9 4 +- \[ 9\] .strtab STRTAB 00000000 00049c 000043 00 0 0 1 ++ \[ 1\] .hash HASH 00000094 000094 00002c 04 A 2 0 4 ++ \[ 2\] .dynsym DYNSYM 000000c0 0000c0 000060 10 A 3 2 4 ++ \[ 3\] .dynstr STRTAB 00000120 000120 000019 00 A 0 0 1 ++ \[ 4\] .text PROGBITS 0000013c 00013c 000001 00 AX 0 0 4 ++ \[ 5\] .dynamic DYNAMIC 00200140 000140 000058 08 WA 3 0 4 ++ \[ 6\] .shstrtab STRTAB 00000000 000198 000040 00 0 0 1 ++ \[ 7\] .symtab SYMTAB 00000000 000340 0000c0 10 8 8 4 ++ \[ 8\] .strtab STRTAB 00000000 000400 00003f 00 0 0 1 + Key to Flags: + W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\), l \(large\) + I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\) + O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) + +-Dynamic section at offset 0x168 contains 10 entries: ++Dynamic section at offset 0x140 contains 6 entries: + Tag Type Name/Value + 0x00000004 \(HASH\) 0x94 +- 0x00000005 \(STRTAB\) 0x134 +- 0x00000006 \(SYMTAB\) 0xc4 +- 0x0000000a \(STRSZ\) 29 \(bytes\) ++ 0x00000005 \(STRTAB\) 0x120 ++ 0x00000006 \(SYMTAB\) 0xc0 ++ 0x0000000a \(STRSZ\) 25 \(bytes\) + 0x0000000b \(SYMENT\) 16 \(bytes\) +- 0x00000007 \(RELA\) 0x154 +- 0x00000008 \(RELASZ\) 12 \(bytes\) +- 0x00000009 \(RELAENT\) 12 \(bytes\) +- 0x00000016 \(TEXTREL\) 0x0 + 0x00000000 \(NULL\) 0x0 +diff --git a/ld/testsuite/ld-x86-64/ilp32-4.s b/ld/testsuite/ld-x86-64/ilp32-4.s +new file mode 100644 +index 0000000..5f270c7 +--- /dev/null ++++ b/ld/testsuite/ld-x86-64/ilp32-4.s +@@ -0,0 +1,3 @@ ++ .globl _start ++_start: ++ ret +diff --git a/ld/testsuite/ld-x86-64/ilp32-5.d b/ld/testsuite/ld-x86-64/ilp32-5.d +index e4673e5..4870c2b 100644 +--- a/ld/testsuite/ld-x86-64/ilp32-5.d ++++ b/ld/testsuite/ld-x86-64/ilp32-5.d +@@ -4,5 +4,5 @@ + + #... + [0-9a-f]+ +[0-9a-f]+ +R_X86_64_RELATIVE +[0-9a-f]+ +-[0-9a-f]+ +[0-9a-f]+ +R_X86_64_PC32 +[0-9a-f]+ +foo - 4 ++[0-9a-f]+ +[0-9a-f]+ +R_X86_64_GLOB_DAT +[0-9a-f]+ +foo \+ 0 + [0-9a-f]+ +[0-9a-f]+ +R_X86_64_32 +[0-9a-f]+ +foo \+ 0 +diff --git a/ld/testsuite/ld-x86-64/ilp32-5.s b/ld/testsuite/ld-x86-64/ilp32-5.s +index 0d97807..ef0c60e 100644 +--- a/ld/testsuite/ld-x86-64/ilp32-5.s ++++ b/ld/testsuite/ld-x86-64/ilp32-5.s +@@ -1,6 +1,6 @@ + .globl bar + bar: +- mov foo(%rip), %rax ++ mov foo@GOTPCREL(%rip), %rax + + .data + xxx: +diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp +index 77b081b..44d3e07 100644 +--- a/ld/testsuite/ld-x86-64/x86-64.exp ++++ b/ld/testsuite/ld-x86-64/x86-64.exp +@@ -207,6 +207,7 @@ run_dump_test "ilp32-6" + run_dump_test "ilp32-7" + run_dump_test "ilp32-8" + run_dump_test "ilp32-9" ++run_dump_test "ilp32-10" + run_dump_test "ia32-1" + run_dump_test "ia32-2" + run_dump_test "ia32-3" +diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog +index a445030..26f759e 100644 +--- a/opcodes/ChangeLog ++++ b/opcodes/ChangeLog +@@ -1,3 +1,8 @@ ++2011-11-25 Pierre Muller ++ ++ * mips-dis.c (print_insn_micromips): Rename local variable iprintf ++ to infprintf to avoid shadow warning. ++ + 2011-10-27 Peter Bergner + + * ppc-opc.c (powerpc_opcodes) fprintf_func; ++ const fprintf_ftype infprintf = info->fprintf_func; + const struct mips_opcode *op, *opend; + unsigned int lsb, msbd, msb; + void *is = info->stream; +@@ -2307,7 +2307,7 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info) + status = (*info->read_memory_func) (memaddr + 2, buffer, 2, info); + if (status != 0) + { +- iprintf (is, "micromips 0x%x", higher); ++ infprintf (is, "micromips 0x%x", higher); + (*info->memory_error_func) (status, memaddr + 2, info); + return -1; + } +@@ -2320,7 +2320,7 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info) + status = (*info->read_memory_func) (memaddr + 4, buffer, 2, info); + if (status != 0) + { +- iprintf (is, "micromips 0x%x", higher); ++ infprintf (is, "micromips 0x%x", higher); + (*info->memory_error_func) (status, memaddr + 4, info); + return -1; + } +@@ -2328,7 +2328,7 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info) + insn = bfd_getb16 (buffer); + else + insn = bfd_getl16 (buffer); +- iprintf (is, "0x%x%04x (48-bit insn)", higher, insn); ++ infprintf (is, "0x%x%04x (48-bit insn)", higher, insn); + + info->insn_type = dis_noninsn; + return 6; +@@ -2341,7 +2341,7 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info) + status = (*info->read_memory_func) (memaddr + 2, buffer, 2, info); + if (status != 0) + { +- iprintf (is, "micromips 0x%x", higher); ++ infprintf (is, "micromips 0x%x", higher); + (*info->memory_error_func) (status, memaddr + 2, info); + return -1; + } +@@ -2371,9 +2371,9 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info) + { + const char *s; + +- iprintf (is, "%s", op->name); ++ infprintf (is, "%s", op->name); + if (op->args[0] != '\0') +- iprintf (is, "\t"); ++ infprintf (is, "\t"); + + for (s = op->args; *s != '\0'; s++) + { +@@ -2382,37 +2382,37 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info) + case ',': + case '(': + case ')': +- iprintf (is, "%c", *s); ++ infprintf (is, "%c", *s); + break; + + case '.': + delta = GET_OP (insn, OFFSET10); + if (delta & 0x200) + delta |= ~0x3ff; +- iprintf (is, "%d", delta); ++ infprintf (is, "%d", delta); + break; + + case '1': +- iprintf (is, "0x%lx", GET_OP (insn, STYPE)); ++ infprintf (is, "0x%lx", GET_OP (insn, STYPE)); + break; + + case '<': +- iprintf (is, "0x%lx", GET_OP (insn, SHAMT)); ++ infprintf (is, "0x%lx", GET_OP (insn, SHAMT)); + break; + + case '\\': +- iprintf (is, "0x%lx", GET_OP (insn, 3BITPOS)); ++ infprintf (is, "0x%lx", GET_OP (insn, 3BITPOS)); + break; + + case '|': +- iprintf (is, "0x%lx", GET_OP (insn, TRAP)); ++ infprintf (is, "0x%lx", GET_OP (insn, TRAP)); + break; + + case '~': + delta = GET_OP (insn, OFFSET12); + if (delta & 0x800) + delta |= ~0x7ff; +- iprintf (is, "%d", delta); ++ infprintf (is, "%d", delta); + break; + + case 'a': +@@ -2433,34 +2433,34 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info) + case 'r': + case 's': + case 'v': +- iprintf (is, "%s", mips_gpr_names[GET_OP (insn, RS)]); ++ infprintf (is, "%s", mips_gpr_names[GET_OP (insn, RS)]); + break; + + case 'c': +- iprintf (is, "0x%lx", GET_OP (insn, CODE)); ++ infprintf (is, "0x%lx", GET_OP (insn, CODE)); + break; + + case 'd': +- iprintf (is, "%s", mips_gpr_names[GET_OP (insn, RD)]); ++ infprintf (is, "%s", mips_gpr_names[GET_OP (insn, RD)]); + break; + + case 'h': +- iprintf (is, "0x%lx", GET_OP (insn, PREFX)); ++ infprintf (is, "0x%lx", GET_OP (insn, PREFX)); + break; + + case 'i': + case 'u': +- iprintf (is, "0x%lx", GET_OP (insn, IMMEDIATE)); ++ infprintf (is, "0x%lx", GET_OP (insn, IMMEDIATE)); + break; + + case 'j': /* Same as i, but sign-extended. */ + case 'o': + delta = (GET_OP (insn, DELTA) ^ 0x8000) - 0x8000; +- iprintf (is, "%d", delta); ++ infprintf (is, "%d", delta); + break; + + case 'k': +- iprintf (is, "0x%x", GET_OP (insn, CACHE)); ++ infprintf (is, "0x%x", GET_OP (insn, CACHE)); + break; + + case 'n': +@@ -2472,26 +2472,26 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info) + if (s_reg_encode != 0) + { + if (s_reg_encode == 1) +- iprintf (is, "%s", mips_gpr_names[16]); ++ infprintf (is, "%s", mips_gpr_names[16]); + else if (s_reg_encode < 9) +- iprintf (is, "%s-%s", ++ infprintf (is, "%s-%s", + mips_gpr_names[16], + mips_gpr_names[15 + s_reg_encode]); + else if (s_reg_encode == 9) +- iprintf (is, "%s-%s,%s", ++ infprintf (is, "%s-%s,%s", + mips_gpr_names[16], + mips_gpr_names[23], + mips_gpr_names[30]); + else +- iprintf (is, "UNKNOWN"); ++ infprintf (is, "UNKNOWN"); + } + + if (immed & 0x10) /* For ra. */ + { + if (s_reg_encode == 0) +- iprintf (is, "%s", mips_gpr_names[31]); ++ infprintf (is, "%s", mips_gpr_names[31]); + else +- iprintf (is, ",%s", mips_gpr_names[31]); ++ infprintf (is, ",%s", mips_gpr_names[31]); + } + break; + } +@@ -2504,32 +2504,32 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info) + break; + + case 'q': +- iprintf (is, "0x%lx", GET_OP (insn, CODE2)); ++ infprintf (is, "0x%lx", GET_OP (insn, CODE2)); + break; + + case 't': + case 'w': +- iprintf (is, "%s", mips_gpr_names[GET_OP (insn, RT)]); ++ infprintf (is, "%s", mips_gpr_names[GET_OP (insn, RT)]); + break; + + case 'y': +- iprintf (is, "%s", mips_gpr_names[GET_OP (insn, RS3)]); ++ infprintf (is, "%s", mips_gpr_names[GET_OP (insn, RS3)]); + break; + + case 'z': +- iprintf (is, "%s", mips_gpr_names[0]); ++ infprintf (is, "%s", mips_gpr_names[0]); + break; + + case 'B': +- iprintf (is, "0x%lx", GET_OP (insn, CODE10)); ++ infprintf (is, "0x%lx", GET_OP (insn, CODE10)); + break; + + case 'C': +- iprintf (is, "0x%lx", GET_OP (insn, COPZ)); ++ infprintf (is, "0x%lx", GET_OP (insn, COPZ)); + break; + + case 'D': +- iprintf (is, "%s", mips_fpr_names[GET_OP (insn, FD)]); ++ infprintf (is, "%s", mips_fpr_names[GET_OP (insn, FD)]); + break; + + case 'E': +@@ -2540,7 +2540,7 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info) + 'T' format. Therefore, until we gain understanding of + cp2 register names, we can simply print the register + numbers. */ +- iprintf (is, "$%ld", GET_OP (insn, RT)); ++ infprintf (is, "$%ld", GET_OP (insn, RT)); + break; + + case 'G': +@@ -2559,44 +2559,44 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info) + case 0x000002fc: /* mtc0 */ + case 0x580000fc: /* dmfc0 */ + case 0x580002fc: /* dmtc0 */ +- iprintf (is, "%s", mips_cp0_names[GET_OP (insn, RS)]); ++ infprintf (is, "%s", mips_cp0_names[GET_OP (insn, RS)]); + break; + default: +- iprintf (is, "$%ld", GET_OP (insn, RS)); ++ infprintf (is, "$%ld", GET_OP (insn, RS)); + break; + } + break; + + case 'H': +- iprintf (is, "%ld", GET_OP (insn, SEL)); ++ infprintf (is, "%ld", GET_OP (insn, SEL)); + break; + + case 'K': +- iprintf (is, "%s", mips_hwr_names[GET_OP (insn, RS)]); ++ infprintf (is, "%s", mips_hwr_names[GET_OP (insn, RS)]); + break; + + case 'M': +- iprintf (is, "$fcc%ld", GET_OP (insn, CCC)); ++ infprintf (is, "$fcc%ld", GET_OP (insn, CCC)); + break; + + case 'N': +- iprintf (is, ++ infprintf (is, + (op->pinfo & (FP_D | FP_S)) != 0 + ? "$fcc%ld" : "$cc%ld", + GET_OP (insn, BCC)); + break; + + case 'R': +- iprintf (is, "%s", mips_fpr_names[GET_OP (insn, FR)]); ++ infprintf (is, "%s", mips_fpr_names[GET_OP (insn, FR)]); + break; + + case 'S': + case 'V': +- iprintf (is, "%s", mips_fpr_names[GET_OP (insn, FS)]); ++ infprintf (is, "%s", mips_fpr_names[GET_OP (insn, FS)]); + break; + + case 'T': +- iprintf (is, "%s", mips_fpr_names[GET_OP (insn, FT)]); ++ infprintf (is, "%s", mips_fpr_names[GET_OP (insn, FT)]); + break; + + case '+': +@@ -2606,18 +2606,18 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info) + { + case 'A': + lsb = GET_OP (insn, EXTLSB); +- iprintf (is, "0x%x", lsb); ++ infprintf (is, "0x%x", lsb); + break; + + case 'B': + msb = GET_OP (insn, INSMSB); +- iprintf (is, "0x%x", msb - lsb + 1); ++ infprintf (is, "0x%x", msb - lsb + 1); + break; + + case 'C': + case 'H': + msbd = GET_OP (insn, EXTMSBD); +- iprintf (is, "0x%x", msbd + 1); ++ infprintf (is, "0x%x", msbd + 1); + break; + + case 'D': +@@ -2637,30 +2637,30 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info) + mips_cp0sel_names_len, + cp0reg, sel); + if (n != NULL) +- iprintf (is, "%s", n->name); ++ infprintf (is, "%s", n->name); + else +- iprintf (is, "$%d,%d", cp0reg, sel); ++ infprintf (is, "$%d,%d", cp0reg, sel); + break; + } + + case 'E': + lsb = GET_OP (insn, EXTLSB) + 32; +- iprintf (is, "0x%x", lsb); ++ infprintf (is, "0x%x", lsb); + break; + + case 'F': + msb = GET_OP (insn, INSMSB) + 32; +- iprintf (is, "0x%x", msb - lsb + 1); ++ infprintf (is, "0x%x", msb - lsb + 1); + break; + + case 'G': + msbd = GET_OP (insn, EXTMSBD) + 32; +- iprintf (is, "0x%x", msbd + 1); ++ infprintf (is, "0x%x", msbd + 1); + break; + + default: + /* xgettext:c-format */ +- iprintf (is, ++ infprintf (is, + _("# internal disassembler error, " + "unrecognized modifier (+%c)"), + *s); +@@ -2674,111 +2674,111 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info) + switch (*s) + { + case 'a': /* global pointer. */ +- iprintf (is, "%s", mips_gpr_names[28]); ++ infprintf (is, "%s", mips_gpr_names[28]); + break; + + case 'b': + regno = micromips_to_32_reg_b_map[GET_OP (insn, MB)]; +- iprintf (is, "%s", mips_gpr_names[regno]); ++ infprintf (is, "%s", mips_gpr_names[regno]); + break; + + case 'c': + regno = micromips_to_32_reg_c_map[GET_OP (insn, MC)]; +- iprintf (is, "%s", mips_gpr_names[regno]); ++ infprintf (is, "%s", mips_gpr_names[regno]); + break; + + case 'd': + regno = micromips_to_32_reg_d_map[GET_OP (insn, MD)]; +- iprintf (is, "%s", mips_gpr_names[regno]); ++ infprintf (is, "%s", mips_gpr_names[regno]); + break; + + case 'e': + regno = micromips_to_32_reg_e_map[GET_OP (insn, ME)]; +- iprintf (is, "%s", mips_gpr_names[regno]); ++ infprintf (is, "%s", mips_gpr_names[regno]); + break; + + case 'f': + /* Save lastregno for "mt" to print out later. */ + lastregno = micromips_to_32_reg_f_map[GET_OP (insn, MF)]; +- iprintf (is, "%s", mips_gpr_names[lastregno]); ++ infprintf (is, "%s", mips_gpr_names[lastregno]); + break; + + case 'g': + regno = micromips_to_32_reg_g_map[GET_OP (insn, MG)]; +- iprintf (is, "%s", mips_gpr_names[regno]); ++ infprintf (is, "%s", mips_gpr_names[regno]); + break; + + case 'h': + regno = micromips_to_32_reg_h_map[GET_OP (insn, MH)]; +- iprintf (is, "%s", mips_gpr_names[regno]); ++ infprintf (is, "%s", mips_gpr_names[regno]); + break; + + case 'i': + regno = micromips_to_32_reg_i_map[GET_OP (insn, MI)]; +- iprintf (is, "%s", mips_gpr_names[regno]); ++ infprintf (is, "%s", mips_gpr_names[regno]); + break; + + case 'j': +- iprintf (is, "%s", mips_gpr_names[GET_OP (insn, MJ)]); ++ infprintf (is, "%s", mips_gpr_names[GET_OP (insn, MJ)]); + break; + + case 'l': + regno = micromips_to_32_reg_l_map[GET_OP (insn, ML)]; +- iprintf (is, "%s", mips_gpr_names[regno]); ++ infprintf (is, "%s", mips_gpr_names[regno]); + break; + + case 'm': + regno = micromips_to_32_reg_m_map[GET_OP (insn, MM)]; +- iprintf (is, "%s", mips_gpr_names[regno]); ++ infprintf (is, "%s", mips_gpr_names[regno]); + break; + + case 'n': + regno = micromips_to_32_reg_n_map[GET_OP (insn, MN)]; +- iprintf (is, "%s", mips_gpr_names[regno]); ++ infprintf (is, "%s", mips_gpr_names[regno]); + break; + + case 'p': + /* Save lastregno for "mt" to print out later. */ + lastregno = GET_OP (insn, MP); +- iprintf (is, "%s", mips_gpr_names[lastregno]); ++ infprintf (is, "%s", mips_gpr_names[lastregno]); + break; + + case 'q': + regno = micromips_to_32_reg_q_map[GET_OP (insn, MQ)]; +- iprintf (is, "%s", mips_gpr_names[regno]); ++ infprintf (is, "%s", mips_gpr_names[regno]); + break; + + case 'r': /* program counter. */ +- iprintf (is, "$pc"); ++ infprintf (is, "$pc"); + break; + + case 's': /* stack pointer. */ + lastregno = 29; +- iprintf (is, "%s", mips_gpr_names[29]); ++ infprintf (is, "%s", mips_gpr_names[29]); + break; + + case 't': +- iprintf (is, "%s", mips_gpr_names[lastregno]); ++ infprintf (is, "%s", mips_gpr_names[lastregno]); + break; + + case 'z': /* $0. */ +- iprintf (is, "%s", mips_gpr_names[0]); ++ infprintf (is, "%s", mips_gpr_names[0]); + break; + + case 'A': + /* Sign-extend the immediate. */ + immed = ((GET_OP (insn, IMMA) ^ 0x40) - 0x40) << 2; +- iprintf (is, "%d", immed); ++ infprintf (is, "%d", immed); + break; + + case 'B': + immed = micromips_imm_b_map[GET_OP (insn, IMMB)]; +- iprintf (is, "%d", immed); ++ infprintf (is, "%d", immed); + break; + + case 'C': + immed = micromips_imm_c_map[GET_OP (insn, IMMC)]; +- iprintf (is, "0x%lx", immed); ++ infprintf (is, "0x%lx", immed); + break; + + case 'D': +@@ -2797,50 +2797,50 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info) + + case 'F': + immed = GET_OP (insn, IMMF); +- iprintf (is, "0x%x", immed); ++ infprintf (is, "0x%x", immed); + break; + + case 'G': + immed = (insn >> MICROMIPSOP_SH_IMMG) + 1; + immed = (immed & MICROMIPSOP_MASK_IMMG) - 1; +- iprintf (is, "%d", immed); ++ infprintf (is, "%d", immed); + break; + + case 'H': + immed = GET_OP (insn, IMMH) << 1; +- iprintf (is, "%d", immed); ++ infprintf (is, "%d", immed); + break; + + case 'I': + immed = (insn >> MICROMIPSOP_SH_IMMI) + 1; + immed = (immed & MICROMIPSOP_MASK_IMMI) - 1; +- iprintf (is, "%d", immed); ++ infprintf (is, "%d", immed); + break; + + case 'J': + immed = GET_OP (insn, IMMJ) << 2; +- iprintf (is, "%d", immed); ++ infprintf (is, "%d", immed); + break; + + case 'L': + immed = GET_OP (insn, IMML); +- iprintf (is, "%d", immed); ++ infprintf (is, "%d", immed); + break; + + case 'M': + immed = (insn >> MICROMIPSOP_SH_IMMM) - 1; + immed = (immed & MICROMIPSOP_MASK_IMMM) + 1; +- iprintf (is, "%d", immed); ++ infprintf (is, "%d", immed); + break; + + case 'N': + immed = GET_OP (insn, IMMN); + if (immed == 0) +- iprintf (is, "%s,%s", ++ infprintf (is, "%s,%s", + mips_gpr_names[16], + mips_gpr_names[31]); + else +- iprintf (is, "%s-%s,%s", ++ infprintf (is, "%s-%s,%s", + mips_gpr_names[16], + mips_gpr_names[16 + immed], + mips_gpr_names[31]); +@@ -2848,35 +2848,35 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info) + + case 'O': + immed = GET_OP (insn, IMMO); +- iprintf (is, "0x%x", immed); ++ infprintf (is, "0x%x", immed); + break; + + case 'P': + immed = GET_OP (insn, IMMP) << 2; +- iprintf (is, "%d", immed); ++ infprintf (is, "%d", immed); + break; + + case 'Q': + /* Sign-extend the immediate. */ + immed = (GET_OP (insn, IMMQ) ^ 0x400000) - 0x400000; + immed <<= 2; +- iprintf (is, "%d", immed); ++ infprintf (is, "%d", immed); + break; + + case 'U': + immed = GET_OP (insn, IMMU) << 2; +- iprintf (is, "%d", immed); ++ infprintf (is, "%d", immed); + break; + + case 'W': + immed = GET_OP (insn, IMMW) << 2; +- iprintf (is, "%d", immed); ++ infprintf (is, "%d", immed); + break; + + case 'X': + /* Sign-extend the immediate. */ + immed = (GET_OP (insn, IMMX) ^ 0x8) - 0x8; +- iprintf (is, "%d", immed); ++ infprintf (is, "%d", immed); + break; + + case 'Y': +@@ -2885,12 +2885,12 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info) + if (immed >= -2 && immed <= 1) + immed ^= 0x100; + immed = immed << 2; +- iprintf (is, "%d", immed); ++ infprintf (is, "%d", immed); + break; + + default: + /* xgettext:c-format */ +- iprintf (is, ++ infprintf (is, + _("# internal disassembler error, " + "unrecognized modifier (m%c)"), + *s); +@@ -2900,7 +2900,7 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info) + + default: + /* xgettext:c-format */ +- iprintf (is, ++ infprintf (is, + _("# internal disassembler error, " + "unrecognized modifier (%c)"), + *s); +@@ -2937,7 +2937,7 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info) + } + #undef GET_OP + +- iprintf (is, "0x%x", insn); ++ infprintf (is, "0x%x", insn); + info->insn_type = dis_noninsn; + + return length; --- binutils-2.23.1.orig/debian/patches/130_gold_disable_testsuite_build.patch +++ binutils-2.23.1/debian/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 +@@ -2,7 +2,7 @@ + + AUTOMAKE_OPTIONS = foreign + +-SUBDIRS = po testsuite ++SUBDIRS = po + + tooldir = $(exec_prefix)/$(target_alias) + +--- a/gold/Makefile.in ++++ b/gold/Makefile.in +@@ -362,7 +362,7 @@ + top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ + AUTOMAKE_OPTIONS = foreign +-SUBDIRS = po testsuite ++SUBDIRS = po + tooldir = $(exec_prefix)/$(target_alias) + ACLOCAL_AMFLAGS = -I ../bfd -I ../config + AM_CFLAGS = $(WARN_CFLAGS) $(LFS_CFLAGS) $(RANDOM_SEED_CFLAGS) --- binutils-2.23.1.orig/debian/patches/127_x86_64_i386_biarch.patch +++ binutils-2.23.1/debian/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 --- binutils-2.23.1.orig/debian/patches/012_check_ldrunpath_length.patch +++ binutils-2.23.1/debian/patches/012_check_ldrunpath_length.patch @@ -0,0 +1,23 @@ +Author: Chris Chimelis +Description: Only generate an RPATH entry if LD_RUN_PATH is not empty, for +cases where -rpath isn't specified. (#151024) +--- a/ld/emultempl/elf32.em ++++ b/ld/emultempl/elf32.em +@@ -1274,6 +1274,8 @@ + && command_line.rpath == NULL) + { + lib_path = (const char *) getenv ("LD_RUN_PATH"); ++ if ((lib_path) && (strlen (lib_path) == 0)) ++ lib_path = NULL; + if (gld${EMULATION_NAME}_search_needed (lib_path, &n, + force)) + break; +@@ -1501,6 +1503,8 @@ + rpath = command_line.rpath; + if (rpath == NULL) + rpath = (const char *) getenv ("LD_RUN_PATH"); ++ if ((rpath) && (strlen (rpath) == 0)) ++ rpath = NULL; + + for (abfd = link_info.input_bfds; abfd; abfd = abfd->link_next) + if (bfd_get_flavour (abfd) == bfd_target_elf_flavour) --- binutils-2.23.1.orig/debian/patches/branch-updates.diff.rej +++ binutils-2.23.1/debian/patches/branch-updates.diff.rej @@ -0,0 +1,270 @@ +--- patches/branch-updates.diff 2012-07-04 13:01:07 +0000 ++++ patches/branch-updates.diff 2012-11-15 13:03:21 +0000 +@@ -1,5 +1,266 @@ +-# DP: updates from the binutils-2.22 branch ++# DP: updates from the binutils-2.23 branch + + # git diff 10968a312d8c536be9993ed06bc88fbe0860d95d 20328dadc04ae46c8ca4b334c8d1d4c9aec9c5b7 + # exclude bfd/{configure{,.ac},Makefile.{am,in}} + ++diff --git a/bfd/ChangeLog b/bfd/ChangeLog ++index 7aa83bf..981e05a 100644 ++--- a/bfd/ChangeLog +++++ b/bfd/ChangeLog ++@@ -1,3 +1,8 @@ +++2012-11-14 Roland McGrath +++ +++ * elf32-arm.c (elf32_arm_nacl_plt0_entry): Use bic rather than bfc +++ instruction for data sandboxing. +++ ++ 2012-11-13 Tristan Gingold ++ ++ * configure.in: Bump version to 2.23.1 ++diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c ++index a287fbb..3c541ca 100644 ++--- a/bfd/elf32-arm.c +++++ b/bfd/elf32-arm.c ++@@ -2209,21 +2209,21 @@ static const bfd_vma elf32_arm_nacl_plt0_entry [] = ++ 0xe08cc00f, /* add ip, ip, pc */ ++ 0xe52dc008, /* str ip, [sp, #-8]! */ ++ /* Second bundle: */ ++- 0xe7dfcf1f, /* bfc ip, #30, #2 */ ++- 0xe59cc000, /* ldr ip, [ip] */ +++ 0xe3ccc103, /* bic ip, ip, #0xc0000000 */ +++ 0xe59cc000, /* ldr ip, [ip] */ ++ 0xe3ccc13f, /* bic ip, ip, #0xc000000f */ ++- 0xe12fff1c, /* bx ip */ +++ 0xe12fff1c, /* bx ip */ ++ /* Third bundle: */ ++- 0xe320f000, /* nop */ ++- 0xe320f000, /* nop */ ++- 0xe320f000, /* nop */ +++ 0xe320f000, /* nop */ +++ 0xe320f000, /* nop */ +++ 0xe320f000, /* nop */ ++ /* .Lplt_tail: */ ++ 0xe50dc004, /* str ip, [sp, #-4] */ ++ /* Fourth bundle: */ ++- 0xe7dfcf1f, /* bfc ip, #30, #2 */ ++- 0xe59cc000, /* ldr ip, [ip] */ +++ 0xe3ccc103, /* bic ip, ip, #0xc0000000 */ +++ 0xe59cc000, /* ldr ip, [ip] */ ++ 0xe3ccc13f, /* bic ip, ip, #0xc000000f */ ++- 0xe12fff1c, /* bx ip */ +++ 0xe12fff1c, /* bx ip */ ++ }; ++ #define ARM_NACL_PLT_TAIL_OFFSET (11 * 4) ++ ++diff --git a/bfd/version.h b/bfd/version.h ++index 712dbb5..eacce9a 100644 ++--- a/bfd/version.h +++++ b/bfd/version.h ++@@ -1,4 +1,4 @@ ++-#define BFD_VERSION_DATE 20121113 +++#define BFD_VERSION_DATE 20121115 ++ #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/gold/ChangeLog b/gold/ChangeLog ++index 0d3074a..9a1a9d3 100644 ++--- a/gold/ChangeLog +++++ b/gold/ChangeLog ++@@ -1,3 +1,8 @@ +++2012-11-14 Roland McGrath +++ +++ * arm.cc (Output_data_plt_arm_nacl::first_plt_entry): Use bic rather +++ than bfc instruction for data sandboxing. +++ ++ 2012-11-07 Roland McGrath ++ ++ * i386.cc (Target_i386::relocate_for_relocatable): Remove extraneous ++diff --git a/gold/arm.cc b/gold/arm.cc ++index d434c9d..238cf32 100644 ++--- a/gold/arm.cc +++++ b/gold/arm.cc ++@@ -12196,7 +12196,7 @@ const uint32_t Output_data_plt_arm_nacl::first_plt_entry[16] = ++ 0xe08cc00f, // add ip, ip, pc ++ 0xe52dc008, // str ip, [sp, #-8]! ++ // Second bundle: ++- 0xe7dfcf1f, // bfc ip, #30, #2 +++ 0xe3ccc103, // bic ip, ip, #0xc0000000 ++ 0xe59cc000, // ldr ip, [ip] ++ 0xe3ccc13f, // bic ip, ip, #0xc000000f ++ 0xe12fff1c, // bx ip ++@@ -12207,7 +12207,7 @@ const uint32_t Output_data_plt_arm_nacl::first_plt_entry[16] = ++ // .Lplt_tail: ++ 0xe50dc004, // str ip, [sp, #-4] ++ // Fourth bundle: ++- 0xe7dfcf1f, // bfc ip, #30, #2 +++ 0xe3ccc103, // bic ip, ip, #0xc0000000 ++ 0xe59cc000, // ldr ip, [ip] ++ 0xe3ccc13f, // bic ip, ip, #0xc000000f ++ 0xe12fff1c, // bx ip ++diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog ++index ffcfa7e..e02432f 100644 ++--- a/ld/testsuite/ChangeLog +++++ b/ld/testsuite/ChangeLog ++@@ -1,3 +1,11 @@ +++2012-11-14 H.J. Lu +++ +++ * ld-elf/shared.exp (build_cxx_tests): Move out the commented out +++ test. +++ +++ * lib/ld-lib.exp (run_ld_link_exec_tests): Assemble all sources +++ files in each test. +++ ++ 2012-10-16 Sofiane Naci ++ ++ * ld-aarch64/tlsle-symbol-offset.s: New file. ++diff --git a/ld/testsuite/ld-elf/shared.exp b/ld/testsuite/ld-elf/shared.exp ++index c00f3e5..c9f2056 100644 ++--- a/ld/testsuite/ld-elf/shared.exp +++++ b/ld/testsuite/ld-elf/shared.exp ++@@ -336,14 +336,14 @@ set build_cxx_tests { ++ {del.cc new.cc} {} "libnew1b.so" "c++"} ++ } ++ ++-set run_cxx_tests { ++- {"Run with libdl3a.so" ++- "-Wl,--no-as-needed tmpdir/libdl3a.so" "" ++- {dl3main.cc} "dl3a" "dl3a.out" "" "c++"} ++ # "-shared -Bsymbolic" only works with gcc 4.5.0 and newer. ++ # {"Run with libdl3b.so" ++ # "tmpdir/libdl3b.so" "" ++ # {dl3main.cc} "dl3b" "dl3b.out" "" "c++"} +++set run_cxx_tests { +++ {"Run with libdl3a.so" +++ "-Wl,--no-as-needed tmpdir/libdl3a.so" "" +++ {dl3main.cc} "dl3a" "dl3a.out" "" "c++"} ++ {"Run with libdl3c.so" ++ "-Wl,--no-as-needed tmpdir/libdl3c.so" "" ++ {dl3main.cc} "dl3c" "dl3a.out" "" "c++"} ++diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp ++index bb4cb0d..49837dd 100644 ++--- a/ld/testsuite/lib/ld-lib.exp +++++ b/ld/testsuite/lib/ld-lib.exp ++@@ -1244,7 +1244,6 @@ proc run_ld_link_exec_tests { targets_to_xfail ldtests } { ++ # verbose -log "ld_options is $ld_options" ++ # verbose -log "as_options is $as_options" ++ # verbose -log "src_files is $src_files" ++-# verbose -log "actions is $actions" ++ # verbose -log "binfile is $binfile" ++ ++ # Assemble each file in the test. ++@@ -1261,68 +1260,68 @@ proc run_ld_link_exec_tests { targets_to_xfail ldtests } { ++ } else { ++ ld_compile "$CC -c $CFLAGS $cflags" $srcdir/$subdir/$src_file $objfile ++ } +++ } ++ ++- # We have to use $CC to build PIE and shared library. ++- if { [ string match "c" $lang ] } { ++- set link_proc ld_simple_link ++- set link_cmd $CC ++- } elseif { [ string match "c++" $lang ] } { ++- set link_proc ld_simple_link ++- set link_cmd $CXX ++- } elseif { [ string match "-shared" $ld_options ] \ ++- || [ string match "-pie" $ld_options ] } { ++- set link_proc ld_simple_link ++- set link_cmd $CC ++- } else { ++- set link_proc ld_link ++- set link_cmd $ld ++- } +++ # We have to use $CC to build PIE and shared library. +++ if { [ string match "c" $lang ] } { +++ set link_proc ld_simple_link +++ set link_cmd $CC +++ } elseif { [ string match "c++" $lang ] } { +++ set link_proc ld_simple_link +++ set link_cmd $CXX +++ } elseif { [ string match "-shared" $ld_options ] \ +++ || [ string match "-pie" $ld_options ] } { +++ set link_proc ld_simple_link +++ set link_cmd $CC +++ } else { +++ set link_proc ld_link +++ set link_cmd $ld +++ } ++ ++- if ![$link_proc $link_cmd $binfile "-L$srcdir/$subdir $ld_options $objfiles"] { ++- set failed 1 ++- } else { +++ if ![$link_proc $link_cmd $binfile "-L$srcdir/$subdir $ld_options $objfiles"] { +++ set failed 1 +++ } else { +++ set failed 0 +++ } +++ +++ # Check if exec_output is expected. +++ if { $warning != "" } then { +++ verbose -log "returned with: <$exec_output>, expected: <$warning>" +++ if { [regexp $warning $exec_output] } then { ++ set failed 0 +++ } else { +++ set failed 1 ++ } +++ } ++ ++- # Check if exec_output is expected. ++- if { $warning != "" } then { ++- verbose -log "returned with: <$exec_output>, expected: <$warning>" ++- if { [regexp $warning $exec_output] } then { ++- set failed 0 ++- } else { ++- set failed 1 ++- } ++- } +++ if { $failed == 0 } { +++ send_log "Running: $binfile > $binfile.out\n" +++ verbose "Running: $binfile > $binfile.out" +++ catch "exec $binfile > $binfile.out" exec_output ++ ++- if { $failed == 0 } { ++- send_log "Running: $binfile > $binfile.out\n" ++- verbose "Running: $binfile > $binfile.out" ++- catch "exec $binfile > $binfile.out" exec_output +++ if ![string match "" $exec_output] then { +++ send_log "$exec_output\n" +++ verbose "$exec_output" 1 +++ set failed 1 +++ } else { +++ send_log "diff $binfile.out $srcdir/$subdir/$expfile\n" +++ verbose "diff $binfile.out $srcdir/$subdir/$expfile" +++ catch "exec diff $binfile.out $srcdir/$subdir/$expfile" exec_output +++ set exec_output [prune_warnings $exec_output] ++ ++ if ![string match "" $exec_output] then { ++ send_log "$exec_output\n" ++ verbose "$exec_output" 1 ++ set failed 1 ++- } else { ++- send_log "diff $binfile.out $srcdir/$subdir/$expfile\n" ++- verbose "diff $binfile.out $srcdir/$subdir/$expfile" ++- catch "exec diff $binfile.out $srcdir/$subdir/$expfile" exec_output ++- set exec_output [prune_warnings $exec_output] ++- ++- if ![string match "" $exec_output] then { ++- send_log "$exec_output\n" ++- verbose "$exec_output" 1 ++- set failed 1 ++- } ++ } ++ } +++ } ++ ++- if { $failed != 0 } { ++- fail $testname ++- } else { ++- set errcnt 0 ++- pass $testname ++- } +++ if { $failed != 0 } { +++ fail $testname +++ } else { +++ set errcnt 0 +++ pass $testname ++ } ++ } ++ } --- binutils-2.23.1.orig/debian/patches/158_ld_system_root.patch +++ binutils-2.23.1/debian/patches/158_ld_system_root.patch @@ -0,0 +1,36 @@ +--- a/ld/configure.in ++++ b/ld/configure.in +@@ -39,7 +39,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 +--- a/ld/configure ++++ b/ld/configure +@@ -4282,7 +4282,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 +--- a/ld/ldmain.c ++++ b/ld/ldmain.c +@@ -225,8 +225,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); --- binutils-2.23.1.orig/debian/source/format +++ binutils-2.23.1/debian/source/format @@ -0,0 +1 @@ +1.0 --- binutils-2.23.1.orig/debian/tests/libc-link +++ binutils-2.23.1/debian/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" --- binutils-2.23.1.orig/debian/tests/control +++ binutils-2.23.1/debian/tests/control @@ -0,0 +1,9 @@ +Tests: build +Depends: +Restrictions: build-needed + +Tests: libc-link +Depends: build-essential + +Tests: shlib-build +Depends: build-essential --- binutils-2.23.1.orig/debian/tests/shlib-build +++ binutils-2.23.1/debian/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" --- binutils-2.23.1.orig/debian/tests/build +++ binutils-2.23.1/debian/tests/build @@ -0,0 +1 @@ +#!/bin/true