Patchwork [v2] binutils: Update from 2.20.1 to 2.20.1a

login
register
mail settings
Submitter errodeveloper
Date Sept. 9, 2011, 3:30 p.m.
Message ID <1315582224-5245-1-git-send-email-errordeveloper@gmail.com>
Download mbox | patch
Permalink /patch/11269/
State New, archived
Headers show

Comments

Martin Jansa - Sept. 9, 2011, 2:49 p.m.
On Fri, Sep 09, 2011 at 04:30:23PM +0100, Ilya Dmitrichenko wrote:
> Signed-off-by: Ilya Dmitrichenko <errordeveloper@gmail.com>

Please use -C -M params to git format-patch (or send-email) to it's
usefull for review and smaller...

4.5MB and I still don't see my last response

<snip>
Have you tested it? I don't see setting S
something like
S = "${WORKDIR}/binutils-2.20.1"

So I guess it will fail even to do_patch.. :/
</snip>

resolved
errodeveloper - Sept. 9, 2011, 3:30 p.m.
Signed-off-by: Ilya Dmitrichenko <errordeveloper@gmail.com>
---
 .../binutils-2.20.1/110-arm-eabi-conf.patch        |   22 -
 .../binutils-2.20.1/binutils-2.16.1-e300c2c3.patch |   18 -
 .../binutils-2.19.1-ld-sysroot.patch               |   36 -
 .../binutils-2.20.1/binutils-nios2-files.patch     |41026 --------------------
 .../binutils/binutils-2.20.1/binutils-nios2.patch  |  650 -
 .../binutils-uclibc-100-uclibc-conf.patch          |   34 -
 ...binutils-uclibc-300-001_ld_makefile_patch.patch |   50 -
 ...binutils-uclibc-300-006_better_file_error.patch |   43 -
 ...ils-uclibc-300-012_check_ldrunpath_length.patch |   47 -
 .../binutils-uclibc-gas-needs-libm.patch           |   38 -
 .../binutils-x86_64_i386_biarch.patch              |   26 -
 .../binutils-2.20.1/libtool-2.4-update.patch       |31174 ---------------
 .../binutils/binutils-2.20.1/libtool-update.patch  |  473 -
 .../binutils-2.20.1a/110-arm-eabi-conf.patch       |   22 +
 .../binutils-2.16.1-e300c2c3.patch                 |   18 +
 .../binutils-2.19.1-ld-sysroot.patch               |   36 +
 .../binutils-2.20.1a/binutils-nios2-files.patch    |41026 ++++++++++++++++++++
 .../binutils/binutils-2.20.1a/binutils-nios2.patch |  650 +
 .../binutils-uclibc-100-uclibc-conf.patch          |   34 +
 ...binutils-uclibc-300-001_ld_makefile_patch.patch |   50 +
 ...binutils-uclibc-300-006_better_file_error.patch |   43 +
 ...ils-uclibc-300-012_check_ldrunpath_length.patch |   47 +
 .../binutils-uclibc-gas-needs-libm.patch           |   38 +
 .../binutils-x86_64_i386_biarch.patch              |   26 +
 .../binutils-2.20.1a/libtool-2.4-update.patch      |31174 +++++++++++++++
 .../binutils/binutils-2.20.1a/libtool-update.patch |  473 +
 recipes/binutils/binutils-cross-sdk_2.20.1.bb      |    4 -
 recipes/binutils/binutils-cross-sdk_2.20.1a.bb     |    4 +
 recipes/binutils/binutils-cross_2.20.1.bb          |    4 -
 recipes/binutils/binutils-cross_2.20.1a.bb         |    4 +
 recipes/binutils/binutils_2.20.1.bb                |   33 -
 recipes/binutils/binutils_2.20.1a.bb               |   33 +
 32 files changed, 73678 insertions(+), 73678 deletions(-)
 delete mode 100644 recipes/binutils/binutils-2.20.1/110-arm-eabi-conf.patch
 delete mode 100644 recipes/binutils/binutils-2.20.1/binutils-2.16.1-e300c2c3.patch
 delete mode 100644 recipes/binutils/binutils-2.20.1/binutils-2.19.1-ld-sysroot.patch
 delete mode 100644 recipes/binutils/binutils-2.20.1/binutils-nios2-files.patch
 delete mode 100644 recipes/binutils/binutils-2.20.1/binutils-nios2.patch
 delete mode 100644 recipes/binutils/binutils-2.20.1/binutils-uclibc-100-uclibc-conf.patch
 delete mode 100644 recipes/binutils/binutils-2.20.1/binutils-uclibc-300-001_ld_makefile_patch.patch
 delete mode 100644 recipes/binutils/binutils-2.20.1/binutils-uclibc-300-006_better_file_error.patch
 delete mode 100644 recipes/binutils/binutils-2.20.1/binutils-uclibc-300-012_check_ldrunpath_length.patch
 delete mode 100644 recipes/binutils/binutils-2.20.1/binutils-uclibc-gas-needs-libm.patch
 delete mode 100644 recipes/binutils/binutils-2.20.1/binutils-x86_64_i386_biarch.patch
 delete mode 100644 recipes/binutils/binutils-2.20.1/libtool-2.4-update.patch
 delete mode 100644 recipes/binutils/binutils-2.20.1/libtool-update.patch
 create mode 100644 recipes/binutils/binutils-2.20.1a/110-arm-eabi-conf.patch
 create mode 100644 recipes/binutils/binutils-2.20.1a/binutils-2.16.1-e300c2c3.patch
 create mode 100644 recipes/binutils/binutils-2.20.1a/binutils-2.19.1-ld-sysroot.patch
 create mode 100644 recipes/binutils/binutils-2.20.1a/binutils-nios2-files.patch
 create mode 100644 recipes/binutils/binutils-2.20.1a/binutils-nios2.patch
 create mode 100644 recipes/binutils/binutils-2.20.1a/binutils-uclibc-100-uclibc-conf.patch
 create mode 100644 recipes/binutils/binutils-2.20.1a/binutils-uclibc-300-001_ld_makefile_patch.patch
 create mode 100644 recipes/binutils/binutils-2.20.1a/binutils-uclibc-300-006_better_file_error.patch
 create mode 100644 recipes/binutils/binutils-2.20.1a/binutils-uclibc-300-012_check_ldrunpath_length.patch
 create mode 100644 recipes/binutils/binutils-2.20.1a/binutils-uclibc-gas-needs-libm.patch
 create mode 100644 recipes/binutils/binutils-2.20.1a/binutils-x86_64_i386_biarch.patch
 create mode 100644 recipes/binutils/binutils-2.20.1a/libtool-2.4-update.patch
 create mode 100644 recipes/binutils/binutils-2.20.1a/libtool-update.patch
 delete mode 100644 recipes/binutils/binutils-cross-sdk_2.20.1.bb
 create mode 100644 recipes/binutils/binutils-cross-sdk_2.20.1a.bb
 delete mode 100644 recipes/binutils/binutils-cross_2.20.1.bb
 create mode 100644 recipes/binutils/binutils-cross_2.20.1a.bb
 delete mode 100644 recipes/binutils/binutils_2.20.1.bb
 create mode 100644 recipes/binutils/binutils_2.20.1a.bb

Patch

diff --git a/recipes/binutils/binutils-2.20.1/110-arm-eabi-conf.patch b/recipes/binutils/binutils-2.20.1/110-arm-eabi-conf.patch
deleted file mode 100644
index 2623301..0000000
--- a/recipes/binutils/binutils-2.20.1/110-arm-eabi-conf.patch
+++ /dev/null
@@ -1,22 +0,0 @@ 
---- /tmp/configure.ac	2008-06-22 14:14:59.000000000 +0200
-+++ binutils-2.18.50.0.7/configure.ac	2008-06-22 14:15:30.000000000 +0200
-@@ -561,7 +561,7 @@
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     libgloss_dir=arm
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-qthreads"
-     noconfigdirs="$noconfigdirs target-libobjc"
-     case ${with_newlib} in
---- /tmp/configure	2008-06-22 14:17:11.000000000 +0200
-+++ binutils-2.18.50.0.7/configure	2008-06-22 14:17:56.000000000 +0200
-@@ -2307,7 +2307,7 @@
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     libgloss_dir=arm
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-qthreads"
-     noconfigdirs="$noconfigdirs target-libobjc"
-     case ${with_newlib} in
diff --git a/recipes/binutils/binutils-2.20.1/binutils-2.16.1-e300c2c3.patch b/recipes/binutils/binutils-2.20.1/binutils-2.16.1-e300c2c3.patch
deleted file mode 100644
index dfe9b18..0000000
--- a/recipes/binutils/binutils-2.20.1/binutils-2.16.1-e300c2c3.patch
+++ /dev/null
@@ -1,18 +0,0 @@ 
-Adds support for Freescale Power architecture e300c2 and e300c3 cores.
-http://www.bitshrine.org/gpp/tc-fsl-x86lnx-e300c3-nptl-4.0.2-2.src.rpm
-
-Leon Woestenberg <leonw@mailcan.com>
-
-Index: binutils-2.19.51.0.3/opcodes/ppc-dis.c
-===================================================================
---- binutils-2.19.51.0.3.orig/opcodes/ppc-dis.c	2009-04-16 00:38:45.000000000 -0700
-+++ binutils-2.19.51.0.3/opcodes/ppc-dis.c	2009-04-16 00:43:56.000000000 -0700
-@@ -132,6 +132,8 @@
- 		| PPC_OPCODE_POWER6 | PPC_OPCODE_POWER7 | PPC_OPCODE_ALTIVEC
- 		| PPC_OPCODE_VSX),
-     0 },
-+  { "pmr",     (PPC_OPCODE_PMR),
-+    0 },
-   { "ppc",     (PPC_OPCODE_PPC | PPC_OPCODE_CLASSIC | PPC_OPCODE_32),
-     0 },
-   { "ppc32",   (PPC_OPCODE_PPC | PPC_OPCODE_CLASSIC | PPC_OPCODE_32),
diff --git a/recipes/binutils/binutils-2.20.1/binutils-2.19.1-ld-sysroot.patch b/recipes/binutils/binutils-2.20.1/binutils-2.19.1-ld-sysroot.patch
deleted file mode 100644
index b252196..0000000
--- a/recipes/binutils/binutils-2.20.1/binutils-2.19.1-ld-sysroot.patch
+++ /dev/null
@@ -1,36 +0,0 @@ 
-http://sourceware.org/bugzilla/show_bug.cgi?id=10340
-
-Signed-off-by: Sven Rebhan <odinshorse@googlemail.com>
-
-Always try to prepend the sysroot prefix to absolute filenames first.
-
---- a/ld/ldfile.c	2009-06-14 12:46:19.000000000 +0200
-+++ b/ld/ldfile.c.new	2009-06-14 12:46:04.000000000 +0200
-@@ -308,18 +308,24 @@
-      directory first.  */
-   if (! entry->is_archive)
-     {
--      if (entry->sysrooted && IS_ABSOLUTE_PATH (entry->filename))
-+      /* For absolute pathnames, try to always open the file in the
-+	 sysroot first. If this fails, try to open the file at the
-+	 given location. */
-+      entry->sysrooted = is_sysrooted_pathname(entry->filename, FALSE);
-+      if (IS_ABSOLUTE_PATH (entry->filename) && ld_sysroot && ! entry->sysrooted)
- 	{
- 	  char *name = concat (ld_sysroot, entry->filename,
- 			       (const char *) NULL);
- 	  if (ldfile_try_open_bfd (name, entry))
- 	    {
- 	      entry->filename = name;
-+	      entry->sysrooted = TRUE;
- 	      return TRUE;
- 	    }
- 	  free (name);
- 	}
--      else if (ldfile_try_open_bfd (entry->filename, entry))
-+
-+      if (ldfile_try_open_bfd (entry->filename, entry))
- 	{
- 	  entry->sysrooted = IS_ABSOLUTE_PATH (entry->filename)
- 	    && is_sysrooted_pathname (entry->filename, TRUE);
-
diff --git a/recipes/binutils/binutils-2.20.1/binutils-nios2-files.patch b/recipes/binutils/binutils-2.20.1/binutils-nios2-files.patch
deleted file mode 100644
index 0601aeb..0000000
--- a/recipes/binutils/binutils-2.20.1/binutils-nios2-files.patch
+++ /dev/null
@@ -1,41026 +0,0 @@ 
-Index: binutils-2.20.1/bfd/cpu-nios2.c
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/bfd/cpu-nios2.c
-@@ -0,0 +1,71 @@
-+/* NOT ASSIGNED TO FSF.  COPYRIGHT ALTERA.  */
-+/* bfd back-end for Altera Nios II support
-+
-+   Copyright (C) 2003
-+   by Nigel Gray (ngray@altera.com).
-+
-+This file is part of BFD, the Binary File Descriptor library.
-+
-+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 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.  */
-+
-+#include "bfd.h"
-+#include "sysdep.h"
-+#include "libbfd.h"
-+
-+static const bfd_arch_info_type *nios2_compatible
-+  (const bfd_arch_info_type *, const bfd_arch_info_type *);
-+
-+/* The default routine tests bits_per_word, which is wrong on mips as
-+   mips word size doesn't correlate with reloc size.  */
-+
-+static const bfd_arch_info_type *
-+nios2_compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b)
-+{
-+  if (a->arch != b->arch)
-+    return NULL;
-+
-+  /* Machine compatibility is checked in
-+     _bfd_mips_elf_merge_private_bfd_data.  */
-+
-+  return a;
-+}
-+
-+#define N(BITS_WORD, BITS_ADDR, NUMBER, PRINT, DEFAULT, NEXT)		\
-+  {							\
-+    BITS_WORD, /*  bits in a word */			\
-+    BITS_ADDR, /* bits in an address */			\
-+    8,	/* 8 bits in a byte */				\
-+    bfd_arch_nios2,					\
-+    NUMBER,						\
-+    "nios2",						\
-+    PRINT,						\
-+    3,							\
-+    DEFAULT,						\
-+    nios2_compatible,					\
-+    bfd_default_scan,					\
-+    NEXT,						\
-+  }
-+
-+#define NN(index) (&arch_info_struct[(index) + 1])
-+
-+static const bfd_arch_info_type arch_info_struct[] =
-+{
-+  N (32, 32, bfd_mach_nios2, "nios2", FALSE, 0),
-+};
-+
-+/* There is only one architecture - but we give the default a machine number of 0
-+   so the linker can distinguish it */
-+const bfd_arch_info_type bfd_nios2_arch =
-+N (32, 32, 0, "nios2", TRUE, &arch_info_struct[0]);
-Index: binutils-2.20.1/bfd/elf32-nios2.c
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/bfd/elf32-nios2.c
-@@ -0,0 +1,5003 @@
-+/* NOT ASSIGNED TO FSF.  COPYRIGHT ALTERA.  */
-+/* New Jersey-specific support for 32-bit ELF
-+
-+   Copyright (C) 2005
-+   by Nigel Gray (ngray@altera.com).
-+
-+   Copyright (C) 2008, CodeSourcery Inc.
-+
-+
-+This file is part of BFD, the Binary File Descriptor library.
-+
-+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 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.  */
-+
-+/* This file handles Altera New Jersey ELF targets  */
-+
-+#include "bfd.h"
-+#include "sysdep.h"
-+#include "libbfd.h"
-+#include "bfdlink.h"
-+#include "genlink.h"
-+#include "elf-bfd.h"
-+#include "elf/nios2.h"
-+#include "opcode/nios2.h"
-+
-+/* Use RELA relocations.  */
-+#ifndef USE_RELA
-+#define USE_RELA
-+#endif
-+
-+#ifdef USE_REL
-+#undef USE_REL
-+#endif
-+
-+/* Function prototypes.  */
-+
-+static reloc_howto_type *nios2_elf32_bfd_reloc_type_lookup
-+  (bfd *, bfd_reloc_code_real_type);
-+
-+static bfd_boolean nios2_elf32_relax_section
-+  (bfd *, asection *, struct bfd_link_info *, bfd_boolean *);
-+#if 0
-+static bfd_boolean nios2_elf32_relax_delete_bytes
-+  (bfd *, asection *, bfd_vma, int);
-+#endif
-+static reloc_howto_type *nios2_elf32_rtype_to_howto
-+  (unsigned int r_type, bfd_boolean rela_p);
-+
-+static void nios2_elf32_info_to_howto
-+  (bfd * abfd, arelent * cache_ptr, Elf_Internal_Rela * dst);
-+
-+static bfd_boolean nios2_elf32_relocate_section
-+  (bfd * output_bfd, struct bfd_link_info * info, bfd * input_bfd,
-+   asection * input_section, bfd_byte * contents,
-+   Elf_Internal_Rela * relocs, Elf_Internal_Sym * local_syms,
-+   asection ** local_sections);
-+
-+static reloc_howto_type *lookup_howto   (unsigned int rtype);
-+
-+static bfd_reloc_status_type nios2_elf_final_gp
-+  (bfd *, asymbol *, bfd_boolean, char **, bfd_vma *,
-+	 struct bfd_link_info *);
-+
-+static bfd_boolean nios2_elf_assign_gp
-+  (bfd *, bfd_vma *, struct bfd_link_info *);
-+
-+static bfd_reloc_status_type nios2_elf32_ignore_reloc
-+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-+
-+static bfd_reloc_status_type nios2_elf32_hi16_relocate
-+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-+
-+static bfd_reloc_status_type nios2_elf32_lo16_relocate
-+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-+
-+static bfd_reloc_status_type nios2_elf32_hiadj16_relocate
-+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-+
-+static bfd_reloc_status_type nios2_elf32_pcrel_lo16_relocate
-+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-+
-+static bfd_reloc_status_type nios2_elf32_pcrel_hiadj16_relocate
-+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-+
-+static bfd_reloc_status_type nios2_elf32_pcrel16_relocate
-+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-+
-+static bfd_reloc_status_type nios2_elf32_call26_relocate
-+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-+
-+static bfd_reloc_status_type nios2_elf32_gprel_relocate
-+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-+
-+static bfd_reloc_status_type nios2_elf32_ujmp_relocate
-+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-+
-+static bfd_reloc_status_type nios2_elf32_cjmp_relocate
-+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-+
-+static bfd_reloc_status_type nios2_elf32_callr_relocate
-+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-+
-+static bfd_reloc_status_type nios2_elf32_do_hi16_relocate
-+  (bfd *, reloc_howto_type *, asection *,
-+	 bfd_byte *, bfd_vma, bfd_vma, bfd_vma);
-+
-+static bfd_reloc_status_type nios2_elf32_do_lo16_relocate
-+  (bfd *, reloc_howto_type *, asection *,
-+	 bfd_byte *, bfd_vma, bfd_vma, bfd_vma);
-+
-+static bfd_reloc_status_type nios2_elf32_do_hiadj16_relocate
-+  (bfd *, reloc_howto_type *, asection *,
-+	 bfd_byte *, bfd_vma, bfd_vma, bfd_vma);
-+
-+static bfd_reloc_status_type nios2_elf32_do_pcrel_lo16_relocate
-+  (bfd *, reloc_howto_type *, asection *,
-+         bfd_byte *, bfd_vma, bfd_vma, bfd_vma);
-+
-+static bfd_reloc_status_type nios2_elf32_do_pcrel_hiadj16_relocate
-+  (bfd *, reloc_howto_type *, asection *,
-+         bfd_byte *, bfd_vma, bfd_vma, bfd_vma);
-+
-+static bfd_reloc_status_type nios2_elf32_do_pcrel16_relocate
-+  (bfd *, reloc_howto_type *, asection *,
-+	 bfd_byte *, bfd_vma, bfd_vma, bfd_vma);
-+
-+static bfd_reloc_status_type nios2_elf32_do_call26_relocate
-+  (bfd *, reloc_howto_type *, asection *,
-+	 bfd_byte *, bfd_vma, bfd_vma, bfd_vma);
-+
-+static bfd_reloc_status_type nios2_elf32_do_gprel_relocate
-+  (bfd *, reloc_howto_type *, asection *,
-+	 bfd_byte *, bfd_vma, bfd_vma, bfd_vma);
-+
-+static bfd_reloc_status_type nios2_elf32_do_ujmp_relocate
-+  (bfd *, reloc_howto_type *, asection *,
-+	 bfd_byte *, bfd_vma, bfd_vma, bfd_vma);
-+
-+static bfd_reloc_status_type nios2_elf32_do_cjmp_relocate
-+  (bfd *, reloc_howto_type *, asection *,
-+	 bfd_byte *, bfd_vma, bfd_vma, bfd_vma);
-+
-+static bfd_reloc_status_type nios2_elf32_do_callr_relocate
-+  (bfd *, reloc_howto_type *, asection *,
-+	 bfd_byte *, bfd_vma, bfd_vma, bfd_vma);
-+
-+static bfd_boolean nios2_elf32_section_from_shdr
-+  (bfd *, Elf_Internal_Shdr *, const char *name, int shindex);
-+
-+static bfd_boolean nios2_elf32_section_flags
-+  (flagword *, const Elf_Internal_Shdr *);
-+
-+static bfd_boolean nios2_elf32_fake_sections
-+  (bfd *, Elf_Internal_Shdr *, asection *);
-+
-+
-+
-+static bfd_boolean nios2_elf32_check_relocs
-+  (bfd *, struct bfd_link_info *, asection *,
-+	 const Elf_Internal_Rela *);
-+
-+static asection *nios2_elf32_gc_mark_hook   (asection * sec,
-+						   struct bfd_link_info *
-+						   info,
-+						   Elf_Internal_Rela * rel,
-+						   struct elf_link_hash_entry
-+						   * h,
-+						   Elf_Internal_Sym * sym);
-+
-+void
-+_bfd_set_link_info (struct bfd_link_info *info);
-+
-+void
-+_bfd_set_force_make_executable (bfd_boolean force);
-+
-+
-+/* Target vector.  */
-+extern const bfd_target bfd_elf32_littlenios2_vec;
-+extern const bfd_target bfd_elf32_bignios2_vec;
-+
-+/* Offset of tp and dtp pointers from start of TLS block.  */
-+#define TP_OFFSET       0x7000
-+#define DTP_OFFSET      0x8000
-+
-+/* The relocation table used for SHT_REL sections.  */
-+
-+static reloc_howto_type elf_nios2_howto_table_rel[] = {
-+  /* No relocation.  */
-+  HOWTO (R_NIOS2_NONE,		/* type */
-+	 0,			/* rightshift */
-+	 0,			/* size (0 = byte, 1 = short, 2 = long) */
-+	 0,			/* bitsize */
-+	 FALSE,			/* pc_relative */
-+	 0,			/* bitpos */
-+	 complain_overflow_dont,	/* complain_on_overflow */
-+	 bfd_elf_generic_reloc,	/* special_function */
-+	 "R_NIOS2_NONE",	/* name */
-+	 FALSE,			/* partial_inplace */
-+	 0,			/* src_mask */
-+	 0,			/* dst_mask */
-+	 FALSE),		/* pcrel_offset */
-+
-+  /* 16-bit signed immediate relocation */
-+  HOWTO (R_NIOS2_S16,		/* type */
-+	 0,			/* rightshift */
-+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-+	 16,			/* bitsize */
-+	 FALSE,			/* pc_relative */
-+	 6,			/* bitpos */
-+	 complain_overflow_signed,	/* complain on overflow */
-+	 bfd_elf_generic_reloc,	/* special function */
-+	 "R_NIOS2_S16",		/* name */
-+	 FALSE,			/* partial_inplace */
-+	 0x003fffc0,		/* src_mask */
-+	 0x003fffc0,		/* dest_mask */
-+	 FALSE),		/* pcrel_offset */
-+
-+  /* 16-bit unsigned immediate relocation */
-+  HOWTO (R_NIOS2_U16,		/* type */
-+	 0,			/* rightshift */
-+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-+	 16,			/* bitsize */
-+	 FALSE,			/* pc_relative */
-+	 6,			/* bitpos */
-+	 complain_overflow_unsigned,	/* complain on overflow */
-+	 bfd_elf_generic_reloc,	/* special function */
-+	 "R_NIOS2_U16",		/* name */
-+	 FALSE,			/* partial_inplace */
-+	 0x003fffc0,		/* src_mask */
-+	 0x003fffc0,		/* dest_mask */
-+	 FALSE),		/* pcrel_offset */
-+
-+  HOWTO (R_NIOS2_PCREL16,	/* type */
-+	 0,			/* rightshift */
-+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-+	 16,			/* bitsize */
-+	 TRUE,			/* pc_relative */
-+	 6,			/* bitpos */
-+	 complain_overflow_signed,	/* complain on overflow */
-+	 nios2_elf32_pcrel16_relocate,	/* special function */
-+	 "R_NIOS2_PCREL16",	/* name */
-+	 FALSE,			/* partial_inplace */
-+	 0x003fffc0,		/* src_mask */
-+	 0x003fffc0,		/* dest_mask */
-+	 TRUE),			/* pcrel_offset */
-+
-+  HOWTO (R_NIOS2_CALL26,	/* type */
-+	 2,			/* rightshift */
-+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-+	 26,			/* bitsize */
-+	 FALSE,			/* pc_relative */
-+	 6,			/* bitpos */
-+	 complain_overflow_dont,	/* complain on overflow */
-+	 nios2_elf32_call26_relocate,	/* special function */
-+	 "R_NIOS2_CALL26",	/* name */
-+	 FALSE,			/* partial_inplace */
-+	 0xffffffc0,		/* src_mask */
-+	 0xffffffc0,		/* dst_mask */
-+	 FALSE),		/* pcrel_offset */
-+
-+  HOWTO (R_NIOS2_IMM5,
-+	 0,
-+	 2,
-+	 5,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_bitfield,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_IMM5",
-+	 FALSE,
-+	 0x000007c0,
-+	 0x000007c0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_CACHE_OPX,
-+	 0,
-+	 2,
-+	 5,
-+	 FALSE,
-+	 22,
-+	 complain_overflow_bitfield,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_CACHE_OPX",
-+	 FALSE,
-+	 0x07c00000,
-+	 0x07c00000,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_IMM6,
-+	 0,
-+	 2,
-+	 6,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_bitfield,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_IMM6",
-+	 FALSE,
-+	 0x00000fc0,
-+	 0x00000fc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_IMM8,
-+	 0,
-+	 2,
-+	 8,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_bitfield,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_IMM8",
-+	 FALSE,
-+	 0x00003fc0,
-+	 0x00003fc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_HI16,
-+	 0,
-+	 2,
-+	 32,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_dont,
-+	 nios2_elf32_hi16_relocate,
-+	 "R_NIOS2_HI16",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_LO16,
-+	 0,
-+	 2,
-+	 32,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_dont,
-+	 nios2_elf32_lo16_relocate,
-+	 "R_NIOS2_LO16",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_HIADJ16,
-+	 0,
-+	 2,
-+	 32,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_dont,
-+	 nios2_elf32_hiadj16_relocate,
-+	 "R_NIOS2_HIADJ16",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_BFD_RELOC_32,
-+	 0,
-+	 2,			/* long */
-+	 32,
-+	 FALSE,
-+	 0,
-+	 complain_overflow_dont,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_BFD_RELOC32",
-+	 FALSE,
-+	 0xffffffff,
-+	 0xffffffff,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_BFD_RELOC_16,
-+	 0,
-+	 1,			/* short */
-+	 16,
-+	 FALSE,
-+	 0,
-+	 complain_overflow_bitfield,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_BFD_RELOC16",
-+	 FALSE,
-+	 0x0000ffff,
-+	 0x0000ffff,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_BFD_RELOC_8,
-+	 0,
-+	 0,			/* byte */
-+	 8,
-+	 FALSE,
-+	 0,
-+	 complain_overflow_bitfield,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_BFD_RELOC8",
-+	 FALSE,
-+	 0x000000ff,
-+	 0x000000ff,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_GPREL,
-+	 0,
-+	 2,
-+	 32,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_dont,
-+	 nios2_elf32_gprel_relocate,
-+	 "R_NIOS2_GPREL",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_GNU_VTINHERIT,
-+	 0,
-+	 2,			/* short */
-+	 0,
-+	 FALSE,
-+	 0,
-+	 complain_overflow_dont,
-+	 NULL,
-+	 "R_NIOS2_GNU_VTINHERIT",
-+	 FALSE,
-+	 0,
-+	 0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_GNU_VTENTRY,
-+	 0,
-+	 2,			/* byte */
-+	 0,
-+	 FALSE,
-+	 0,
-+	 complain_overflow_dont,
-+	 _bfd_elf_rel_vtable_reloc_fn,
-+	 "R_NIOS2_GNU_VTENTRY",
-+	 FALSE,
-+	 0,
-+	 0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_UJMP,
-+	 0,
-+	 2,
-+	 32,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_dont,
-+	 nios2_elf32_ujmp_relocate,
-+	 "R_NIOS2_UJMP",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_CJMP,
-+	 0,
-+	 2,
-+	 32,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_dont,
-+	 nios2_elf32_cjmp_relocate,
-+	 "R_NIOS2_CJMP",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_CALLR,
-+	 0,
-+	 2,
-+	 32,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_dont,
-+	 nios2_elf32_callr_relocate,
-+	 "R_NIOS2_CALLR",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_ALIGN,
-+	 0,
-+	 2,
-+	 0,
-+	 FALSE,
-+	 0,
-+	 complain_overflow_dont,
-+	 nios2_elf32_ignore_reloc,
-+	 "R_NIOS2_ALIGN",
-+	 FALSE,
-+	 0,
-+	 0,
-+	 TRUE),
-+
-+
-+  HOWTO (R_NIOS2_GOT16,
-+	 0,
-+	 2,
-+	 16,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_bitfield,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_GOT16",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_CALL16,
-+	 0,
-+	 2,
-+	 16,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_bitfield,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_CALL16",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_GOTOFF_LO,
-+	 0,
-+	 2,
-+	 16,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_dont,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_GOTOFF_LO",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_GOTOFF_HA,
-+	 0,
-+	 2,
-+	 16,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_dont,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_GOTOFF_HA",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_PCREL_LO,
-+	 0,
-+	 2,
-+	 16,
-+	 TRUE,
-+	 6,
-+	 complain_overflow_dont,
-+	 nios2_elf32_pcrel_lo16_relocate,
-+	 "R_NIOS2_PCREL_LO",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 TRUE),
-+
-+  HOWTO (R_NIOS2_PCREL_HA,
-+	 0,
-+	 2,
-+	 16,
-+	 FALSE, /* This is a PC-relative relocation, but we need to subtract
-+		   PC ourselves before the HIADJ.  */
-+	 6,
-+	 complain_overflow_dont,
-+	 nios2_elf32_pcrel_hiadj16_relocate,
-+	 "R_NIOS2_PCREL_HA",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 TRUE),
-+
-+  HOWTO (R_NIOS2_TLS_GD16,
-+	 0,
-+	 2,
-+	 16,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_bitfield,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_TLS_GD16",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_TLS_LDM16,
-+	 0,
-+	 2,
-+	 16,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_bitfield,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_TLS_LDM16",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_TLS_LDO16,
-+	 0,
-+	 2,
-+	 16,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_bitfield,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_TLS_LDO16",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_TLS_IE16,
-+	 0,
-+	 2,
-+	 16,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_bitfield,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_TLS_IE16",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_TLS_LE16,
-+	 0,
-+	 2,
-+	 16,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_bitfield,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_TLS_LE16",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_TLS_DTPMOD,
-+	 0,
-+	 2,
-+	 32,
-+	 FALSE,
-+	 0,
-+	 complain_overflow_dont,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_TLS_DTPMOD",
-+	 FALSE,
-+	 0xffffffff,
-+	 0xffffffff,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_TLS_DTPREL,
-+	 0,
-+	 2,
-+	 32,
-+	 FALSE,
-+	 0,
-+	 complain_overflow_dont,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_TLS_DTPREL",
-+	 FALSE,
-+	 0xffffffff,
-+	 0xffffffff,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_TLS_TPREL,
-+	 0,
-+	 2,
-+	 32,
-+	 FALSE,
-+	 0,
-+	 complain_overflow_dont,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_TLS_TPREL",
-+	 FALSE,
-+	 0xffffffff,
-+	 0xffffffff,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_COPY,
-+	 0,
-+	 2,
-+	 32,
-+	 FALSE,
-+	 0,
-+	 complain_overflow_dont,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_COPY",
-+	 FALSE,
-+	 0,
-+	 0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_GLOB_DAT,
-+	 0,
-+	 2,
-+	 32,
-+	 FALSE,
-+	 0,
-+	 complain_overflow_dont,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_GLOB_DAT",
-+	 FALSE,
-+	 0xffffffff,
-+	 0xffffffff,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_JUMP_SLOT,
-+	 0,
-+	 2,
-+	 32,
-+	 FALSE,
-+	 0,
-+	 complain_overflow_dont,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_JUMP_SLOT",
-+	 FALSE,
-+	 0xffffffff,
-+	 0xffffffff,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_RELATIVE,
-+	 0,
-+	 2,
-+	 32,
-+	 FALSE,
-+	 0,
-+	 complain_overflow_dont,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_RELATIVE",
-+	 FALSE,
-+	 0xffffffff,
-+	 0xffffffff,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_GOTOFF,
-+	 0,
-+	 2,
-+	 32,
-+	 FALSE,
-+	 0,
-+	 complain_overflow_dont,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_GOTOFF",
-+	 FALSE,
-+	 0xffffffff,
-+	 0xffffffff,
-+	 FALSE),
-+
-+/* Add other relocations here.  */
-+};
-+
-+static unsigned char elf_code_to_howto_index[R_NIOS2_ILLEGAL + 1];
-+
-+static reloc_howto_type *
-+lookup_howto (unsigned int rtype)
-+{
-+  static int initialized = 0;
-+  int i;
-+  int howto_tbl_size = (int) (sizeof (elf_nios2_howto_table_rel)
-+			      / sizeof (elf_nios2_howto_table_rel[0]));
-+
-+  if (!initialized)
-+    {
-+      initialized = 1;
-+      memset (elf_code_to_howto_index, 0xff,
-+	      sizeof (elf_code_to_howto_index));
-+      for (i = 0; i < howto_tbl_size; i++)
-+	elf_code_to_howto_index[elf_nios2_howto_table_rel[i].type] = i;
-+    }
-+
-+  BFD_ASSERT (rtype <= R_NIOS2_ILLEGAL);
-+  i = elf_code_to_howto_index[rtype];
-+  if (i >= howto_tbl_size)
-+    return 0;
-+  return elf_nios2_howto_table_rel + i;
-+}
-+
-+/* Map for converting BFD reloc types to New Jersey reloc types.  */
-+struct elf_reloc_map
-+{
-+  bfd_reloc_code_real_type bfd_val;
-+  enum elf_nios2_reloc_type elf_val;
-+};
-+
-+static const struct elf_reloc_map nios2_reloc_map[] = {
-+  {BFD_RELOC_NIOS2_S16, R_NIOS2_S16},
-+  {BFD_RELOC_NIOS2_U16, R_NIOS2_U16},
-+  {BFD_RELOC_16_PCREL, R_NIOS2_PCREL16},
-+  {BFD_RELOC_NIOS2_CALL26, R_NIOS2_CALL26},
-+  {BFD_RELOC_NIOS2_IMM5, R_NIOS2_IMM5},
-+  {BFD_RELOC_NIOS2_CACHE_OPX, R_NIOS2_CACHE_OPX},
-+  {BFD_RELOC_NIOS2_IMM6, R_NIOS2_IMM6},
-+  {BFD_RELOC_NIOS2_IMM8, R_NIOS2_IMM8},
-+  {BFD_RELOC_NIOS2_HI16, R_NIOS2_HI16},
-+  {BFD_RELOC_NIOS2_LO16, R_NIOS2_LO16},
-+  {BFD_RELOC_NIOS2_HIADJ16, R_NIOS2_HIADJ16},
-+  {BFD_RELOC_32, R_NIOS2_BFD_RELOC_32},
-+  {BFD_RELOC_16, R_NIOS2_BFD_RELOC_16},
-+  {BFD_RELOC_8, R_NIOS2_BFD_RELOC_8},
-+  {BFD_RELOC_NIOS2_GPREL, R_NIOS2_GPREL},
-+  {BFD_RELOC_VTABLE_INHERIT, R_NIOS2_GNU_VTINHERIT},
-+  {BFD_RELOC_VTABLE_ENTRY, R_NIOS2_GNU_VTENTRY},
-+  {BFD_RELOC_NIOS2_UJMP, R_NIOS2_UJMP},
-+  {BFD_RELOC_NIOS2_CJMP, R_NIOS2_CJMP},
-+  {BFD_RELOC_NIOS2_CALLR, R_NIOS2_CALLR},
-+  {BFD_RELOC_NIOS2_ALIGN, R_NIOS2_ALIGN},
-+  {BFD_RELOC_NIOS2_GOT16, R_NIOS2_GOT16},
-+  {BFD_RELOC_NIOS2_CALL16, R_NIOS2_CALL16},
-+  {BFD_RELOC_NIOS2_GOTOFF_LO, R_NIOS2_GOTOFF_LO},
-+  {BFD_RELOC_NIOS2_GOTOFF_HA, R_NIOS2_GOTOFF_HA},
-+  {BFD_RELOC_NIOS2_PCREL_LO, R_NIOS2_PCREL_LO},
-+  {BFD_RELOC_NIOS2_PCREL_HA, R_NIOS2_PCREL_HA},
-+  {BFD_RELOC_NIOS2_TLS_GD16, R_NIOS2_TLS_GD16},
-+  {BFD_RELOC_NIOS2_TLS_LDM16, R_NIOS2_TLS_LDM16},
-+  {BFD_RELOC_NIOS2_TLS_LDO16, R_NIOS2_TLS_LDO16},
-+  {BFD_RELOC_NIOS2_TLS_IE16, R_NIOS2_TLS_IE16},
-+  {BFD_RELOC_NIOS2_TLS_LE16, R_NIOS2_TLS_LE16},
-+  {BFD_RELOC_NIOS2_TLS_DTPMOD, R_NIOS2_TLS_DTPMOD},
-+  {BFD_RELOC_NIOS2_TLS_DTPREL, R_NIOS2_TLS_DTPREL},
-+  {BFD_RELOC_NIOS2_TLS_TPREL, R_NIOS2_TLS_TPREL},
-+  {BFD_RELOC_NIOS2_COPY, R_NIOS2_COPY},
-+  {BFD_RELOC_NIOS2_GLOB_DAT, R_NIOS2_GLOB_DAT},
-+  {BFD_RELOC_NIOS2_JUMP_SLOT, R_NIOS2_JUMP_SLOT},
-+  {BFD_RELOC_NIOS2_RELATIVE, R_NIOS2_RELATIVE},
-+  {BFD_RELOC_NIOS2_GOTOFF, R_NIOS2_GOTOFF}
-+};
-+
-+/* The Nios II linker needs to keep track of the number of relocs that it
-+   decides to copy as dynamic relocs in check_relocs for each symbol.
-+   This is so that it can later discard them if they are found to be
-+   unnecessary.  We store the information in a field extending the
-+   regular ELF linker hash table.  */
-+
-+struct elf32_nios2_dyn_relocs
-+{
-+  struct elf32_nios2_dyn_relocs *next;
-+
-+  /* The input section of the reloc.  */
-+  asection *sec;
-+
-+  /* Total number of relocs copied for the input section.  */
-+  bfd_size_type count;
-+
-+  /* Number of pc-relative relocs copied for the input section.  */
-+  bfd_size_type pc_count;
-+};
-+
-+/* Nios II ELF linker hash entry.  */
-+
-+struct elf32_nios2_link_hash_entry
-+{
-+  struct elf_link_hash_entry root;
-+
-+  /* Track dynamic relocs copied for this symbol.  */
-+  struct elf32_nios2_dyn_relocs *dyn_relocs;
-+
-+#define GOT_UNKNOWN     0
-+#define GOT_NORMAL      1
-+#define GOT_TLS_GD      2
-+#define GOT_TLS_IE      4
-+  unsigned char tls_type;
-+
-+  /* We need to detect and take special action for symbols which are only
-+     referenced with %call() and not with %got().  Such symbols do not need
-+     a dynamic GOT reloc in shared objects, only a dynamic PLT reloc.  Lazy
-+     linking will not work if the dynamic GOT reloc exists.
-+     To check for this condition efficiently, we compare got_types_used against
-+     CALL16_USED, meaning
-+     (got_types_used & (GOT16_USED | CALL16_USED)) == CALL16_USED.  */
-+#define GOT16_USED      1
-+#define CALL16_USED     2
-+  unsigned char got_types_used;
-+};
-+
-+#define elf32_nios2_hash_entry(ent) \
-+  ((struct elf32_nios2_link_hash_entry *) (ent))
-+
-+/* Get the Nios II elf linker hash table from a link_info structure.  */
-+#define elf32_nios2_hash_table(info) \
-+  ((struct elf32_nios2_link_hash_table *) ((info)->hash))
-+
-+/* Nios II ELF linker hash table.  */
-+struct elf32_nios2_link_hash_table
-+  {
-+    /* The main hash table.  */
-+    struct elf_link_hash_table root;
-+
-+    /* Short-cuts to get to dynamic linker sections.  */
-+    asection *sgot;
-+    asection *sgotplt;
-+    asection *srelgot;
-+    asection *splt;
-+    asection *srelplt;
-+    asection *sdynbss;
-+    asection *srelbss;
-+    asection *sbss;
-+
-+    union {
-+      bfd_signed_vma refcount;
-+      bfd_vma offset;
-+    } tls_ldm_got;
-+
-+    /* Small local sym to section mapping cache.  */
-+    struct sym_cache sym_sec;
-+
-+    bfd_vma res_n_size;
-+  };
-+
-+struct nios2_elf32_obj_tdata
-+{
-+  struct elf_obj_tdata root;
-+
-+  /* tls_type for each local got entry.  */
-+  char *local_got_tls_type;
-+
-+  /* TRUE if TLS GD relocs have been seen for this object.  */
-+  bfd_boolean has_tlsgd;
-+};
-+
-+#define elf32_nios2_tdata(abfd) \
-+  ((struct nios2_elf32_obj_tdata *) (abfd)->tdata.any)
-+
-+#define elf32_nios2_local_got_tls_type(abfd) \
-+  (elf32_nios2_tdata (abfd)->local_got_tls_type)
-+
-+#define is_nios2_elf(bfd) \
-+  (bfd_get_flavour (bfd) == bfd_target_elf_flavour \
-+   && elf_object_id (bfd) == NIOS2_ELF_TDATA)
-+/* The name of the dynamic interpreter.  This is put in the .interp
-+   section.  */
-+
-+#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
-+
-+/* PLT implementation for position-dependent code.  */
-+
-+static const bfd_vma nios2_plt_entry[] = { /* .PLTn: */
-+  0x03c00034,   /* movhi r15, %hiadj(plt_got_slot_address) */
-+  0x7bc00017,   /* ldw r15, %lo(plt_got_slot_address)(r15) */
-+  0x7800683a    /* jmp r15 */
-+};
-+
-+static const bfd_vma nios2_plt0_entry[] = { /* .PLTresolve */
-+  0x03800034,   /* movhi r14, %hiadj(res_0) */
-+  0x73800004,   /* addi r14, r14, %lo(res_0) */
-+  0x7b9fc83a,   /* sub r15, r15, r14 */
-+  0x03400034,   /* movhi r13, %hiadj(_GLOBAL_OFFSET_TABLE_) */
-+  0x6b800017,   /* ldw r14, %lo(_GLOBAL_OFFSET_TABLE_+4)(r13) */
-+  0x6b400017,   /* ldw r13, %lo(_GLOBAL_OFFSET_TABLE_+8)(r13) */
-+  0x6800683a    /* jmp r13 */
-+};
-+
-+/* PLT implementation for position-independent code.  */
-+
-+static const bfd_vma nios2_so_plt_entry[] = { /* .PLTn */
-+  0x03c00034,   /* movhi r15, %hiadj(index * 4) */
-+  0x7bc00004,   /* addi r15, r15, %lo(index * 4) */
-+  0x00000006    /* br .PLTresolve */
-+};
-+
-+static const bfd_vma nios2_so_plt0_entry[] = { /* .PLTresolve */
-+  0x001ce03a,   /* nextpc r14 */
-+  0x03400034,   /* movhi r13, %hiadj(_GLOBAL_OFFSET_TABLE_) */
-+  0x6b9b883a,   /* add r13, r13, r14 */
-+  0x6b800017,   /* ldw r14, %lo(_GLOBAL_OFFSET_TABLE_+4)(r13) */
-+  0x6b400017,   /* ldw r13, %lo(_GLOBAL_OFFSET_TABLE_+8)(r13) */
-+  0x6800683a    /* jmp r13 */
-+};
-+
-+/* Support for core dump NOTE sections */
-+static bfd_boolean
-+nios2_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
-+{
-+  int offset;
-+  size_t size;
-+
-+  switch (note->descsz)
-+    {
-+    default:
-+      return FALSE;
-+
-+    case 212:         /* Linux/Nios II */
-+      /* pr_cursig */
-+      elf_tdata (abfd)->core_signal = bfd_get_16 (abfd, note->descdata + 12);
-+
-+      /* pr_pid */
-+      elf_tdata (abfd)->core_pid = bfd_get_32 (abfd, note->descdata + 24);
-+
-+      /* pr_reg */
-+      offset = 72;
-+      size = 136;
-+
-+      break;
-+    }
-+
-+  /* Make a ".reg/999" section.  */
-+  return _bfd_elfcore_make_pseudosection (abfd, ".reg",
-+                                          size, note->descpos + offset);
-+}
-+
-+static bfd_boolean
-+nios2_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
-+{
-+  switch (note->descsz)
-+    {
-+    default:
-+      return FALSE;
-+
-+    case 124:         /* Linux/Nios II elf_prpsinfo */
-+      elf_tdata (abfd)->core_program
-+	= _bfd_elfcore_strndup (abfd, note->descdata + 28, 16);
-+      elf_tdata (abfd)->core_command
-+	= _bfd_elfcore_strndup (abfd, note->descdata + 44, 80);
-+    }
-+
-+  /* Note that for some reason, a spurious space is tacked
-+     onto the end of the args in some (at least one anyway)
-+     implementations, so strip it off if it exists.  */
-+
-+  {
-+    char *command = elf_tdata (abfd)->core_command;
-+    int n = strlen (command);
-+
-+    if (0 < n && command[n - 1] == ' ')
-+      command[n - 1] = '\0';
-+  }
-+
-+  return TRUE;
-+}
-+
-+/* Create an entry in a Nios II ELF linker hash table.  */
-+
-+static struct bfd_hash_entry *
-+link_hash_newfunc (struct bfd_hash_entry *entry,
-+                   struct bfd_hash_table *table, const char *string)
-+{
-+  /* Allocate the structure if it has not already been allocated by a
-+     subclass.  */
-+  if (entry == NULL)
-+    {
-+      entry = bfd_hash_allocate (table,
-+                                 sizeof (struct elf32_nios2_link_hash_entry));
-+      if (entry == NULL)
-+        return entry;
-+    }
-+
-+  /* Call the allocation method of the superclass.  */
-+  entry = _bfd_elf_link_hash_newfunc (entry, table, string);
-+  if (entry != NULL)
-+    {
-+      struct elf32_nios2_link_hash_entry *eh;
-+
-+      eh = (struct elf32_nios2_link_hash_entry *) entry;
-+      eh->dyn_relocs = NULL;
-+      eh->tls_type = GOT_UNKNOWN;
-+      eh->got_types_used = 0;
-+    }
-+
-+  return entry;
-+}
-+
-+/* Given a BFD reloc type, return a howto structure.  */
-+
-+static reloc_howto_type *
-+nios2_elf32_bfd_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED,
-+				   bfd_reloc_code_real_type code)
-+{
-+  int i;
-+  for (i = 0;
-+       i < (int) (sizeof (nios2_reloc_map) / sizeof (struct elf_reloc_map));
-+       ++i)
-+    {
-+      if (nios2_reloc_map[i].bfd_val == code)
-+	return &elf_nios2_howto_table_rel[(int) nios2_reloc_map[i].elf_val];
-+    }
-+
-+  return NULL;
-+}
-+
-+/* Given a reloc name, return a howto structure.  */
-+
-+static reloc_howto_type *
-+nios2_elf32_bfd_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
-+				   const char *r_name)
-+{
-+  unsigned int i;
-+  for (i = 0;
-+       i < (sizeof (elf_nios2_howto_table_rel)
-+	    / sizeof (elf_nios2_howto_table_rel[0]));
-+       i++)
-+    if (elf_nios2_howto_table_rel[i].name != NULL
-+	&& strcasecmp (elf_nios2_howto_table_rel[i].name, r_name) == 0)
-+      return &elf_nios2_howto_table_rel[i];
-+
-+  return NULL;
-+}
-+
-+/* Helper function for nios2_elf32_info_to_howto.  */
-+
-+static reloc_howto_type *
-+nios2_elf32_rtype_to_howto (unsigned int r_type,
-+			    bfd_boolean rela_p ATTRIBUTE_UNUSED)
-+{
-+  BFD_ASSERT (r_type < R_NIOS2_ILLEGAL);
-+  return &elf_nios2_howto_table_rel[r_type];
-+}
-+
-+/* Given a ELF32 relocation, fill in a arelent structure.  */
-+
-+static void
-+nios2_elf32_info_to_howto (bfd * abfd ATTRIBUTE_UNUSED, arelent * cache_ptr,
-+			   Elf_Internal_Rela * dst)
-+{
-+  unsigned int r_type;
-+
-+  r_type = ELF32_R_TYPE (dst->r_info);
-+  cache_ptr->howto = nios2_elf32_rtype_to_howto (r_type, FALSE);
-+
-+  /* FIXME - do we need to do anything else here???  */
-+}
-+
-+/* Return the base VMA address which should be subtracted from real addresses
-+   when resolving @dtpoff relocation.
-+   This is PT_TLS segment p_vaddr.  */
-+
-+static bfd_vma
-+dtpoff_base (struct bfd_link_info *info)
-+{
-+  /* If tls_sec is NULL, we should have signalled an error already.  */
-+  if (elf_hash_table (info)->tls_sec == NULL)
-+    return 0;
-+  return elf_hash_table (info)->tls_sec->vma;
-+}
-+
-+/* Return the relocation value for @tpoff relocation
-+   if STT_TLS virtual address is ADDRESS.  */
-+
-+static bfd_vma
-+tpoff (struct bfd_link_info *info, bfd_vma address)
-+{
-+  struct elf_link_hash_table *htab = elf_hash_table (info);
-+
-+  /* If tls_sec is NULL, we should have signalled an error already.  */
-+  if (htab->tls_sec == NULL)
-+    return 0;
-+  return address - htab->tls_sec->vma;
-+}
-+
-+/* The assembler has output long jmp/call sequences for all calls
-+   and pc-relative branches that it cannot guarantee are within
-+   range, so the linker must attempt to "relax" these sequences to
-+   short branches and calls if it can. We avoid having to re-relax by
-+   replacing redundant instructions with nops instead of deleting them.  */
-+static bfd_boolean
-+nios2_elf32_relax_section (bfd * abfd,
-+			   asection * sec,
-+			   struct bfd_link_info *link_info, bfd_boolean * again)
-+{
-+  Elf_Internal_Shdr *symtab_hdr;
-+  Elf_Internal_Rela *internal_relocs;
-+  Elf_Internal_Rela *irel, *irelend;
-+  bfd_byte *contents = NULL;
-+  Elf_Internal_Sym *isymbuf = NULL;
-+
-+#define OP_MATCH_NOP 0x0001883a
-+
-+  /* Assume nothing changes.  */
-+  *again = FALSE;
-+
-+  /* We don't have to do anything for a relocatable link, if
-+     this section does not have relocs, or if this is not a
-+     code section.  */
-+  if (link_info->relocatable
-+      || (sec->flags & SEC_RELOC) == 0
-+      || sec->reloc_count == 0 || (sec->flags & SEC_CODE) == 0)
-+    return TRUE;
-+
-+  /* If this is the first time we have been called for this section,
-+     initialize the cooked size.  */
-+  if (sec->size == 0)
-+    sec->size = sec->rawsize;
-+
-+  symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
-+
-+  /* Get a copy of the native relocations.  */
-+  internal_relocs = (_bfd_elf_link_read_relocs
-+		     (abfd, sec, (void *) NULL, (Elf_Internal_Rela *) NULL,
-+		      link_info->keep_memory));
-+  if (internal_relocs == NULL)
-+    goto error_return;
-+
-+  /* Walk through them looking for relaxing opportunities.  */
-+  irelend = internal_relocs + sec->reloc_count;
-+  for (irel = internal_relocs; irel < irelend; irel++)
-+    {
-+      bfd_vma symval;
-+
-+      /* If this isn't something that can be relaxed, then ignore
-+         this reloc.  */
-+      if (ELF32_R_TYPE (irel->r_info) != (int) R_NIOS2_UJMP
-+	  && ELF32_R_TYPE (irel->r_info) != (int) R_NIOS2_CJMP
-+	  && ELF32_R_TYPE (irel->r_info) != (int) R_NIOS2_CALLR)
-+	{
-+	  continue;
-+	}
-+
-+      /* Get the section contents if we haven't done so already.  */
-+      if (contents == NULL)
-+	{
-+	  /* Get cached copy if it exists.  */
-+	  if (elf_section_data (sec)->this_hdr.contents != NULL)
-+	    contents = elf_section_data (sec)->this_hdr.contents;
-+	  else
-+	    {
-+	      /* Go get them off disk.  */
-+	      contents = (bfd_byte *) bfd_malloc (sec->rawsize);
-+	      if (contents == NULL)
-+		goto error_return;
-+
-+	      if (!bfd_get_section_contents (abfd, sec, contents,
-+					     (file_ptr) 0, sec->rawsize))
-+		goto error_return;
-+	    }
-+	}
-+
-+      /* Read this BFD's local symbols if we haven't done so already.  */
-+      if (isymbuf == NULL && symtab_hdr->sh_info != 0)
-+	{
-+	  isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents;
-+	  if (isymbuf == NULL)
-+	    isymbuf = bfd_elf_get_elf_syms (abfd, symtab_hdr,
-+					    symtab_hdr->sh_info, 0,
-+					    NULL, NULL, NULL);
-+	  if (isymbuf == NULL)
-+	    goto error_return;
-+	}
-+
-+      /* Get the value of the symbol referred to by the reloc.  */
-+      if (ELF32_R_SYM (irel->r_info) < symtab_hdr->sh_info)
-+	{
-+	  /* A local symbol.  */
-+	  Elf_Internal_Sym *isym;
-+	  asection *sym_sec;
-+
-+	  isym = isymbuf + ELF32_R_SYM (irel->r_info);
-+	  if (isym->st_shndx == SHN_UNDEF)
-+	    sym_sec = bfd_und_section_ptr;
-+	  else if (isym->st_shndx == SHN_ABS)
-+	    sym_sec = bfd_abs_section_ptr;
-+	  else if (isym->st_shndx == SHN_COMMON)
-+	    sym_sec = bfd_com_section_ptr;
-+	  else
-+	    sym_sec = bfd_section_from_elf_index (abfd, isym->st_shndx);
-+	  symval = (isym->st_value
-+		    + sym_sec->output_section->vma + sym_sec->output_offset);
-+	}
-+      else
-+	{
-+	  unsigned long indx;
-+	  struct elf_link_hash_entry *h;
-+
-+	  /* An external symbol.  */
-+	  indx = ELF32_R_SYM (irel->r_info) - symtab_hdr->sh_info;
-+	  h = elf_sym_hashes (abfd)[indx];
-+	  BFD_ASSERT (h != NULL);
-+	  if (h->root.type != bfd_link_hash_defined
-+	      && h->root.type != bfd_link_hash_defweak)
-+	    {
-+	      /* This appears to be a reference to an undefined
-+	         symbol.  Just ignore it--it will be caught by the
-+	         regular reloc processing.  */
-+	      continue;
-+	    }
-+
-+	  symval = (h->root.u.def.value
-+		    + h->root.u.def.section->output_section->vma
-+		    + h->root.u.def.section->output_offset);
-+	}
-+
-+      /* For simplicity of coding, we are going to modify the section
-+         contents, the section relocs, and the BFD symbol table.  We
-+         must tell the rest of the code not to free up this
-+         information.  It would be possible to instead create a table
-+         of changes which have to be made, as is done in coff-mips.c;
-+         that would be more work, but would require less memory when
-+         the linker is run.  */
-+
-+      /* try to turn :
-+       *      movhi at, %hi(symbol)
-+       *      movui at, %lo(symbol)
-+       *      callr at
-+       * into:
-+       *      call symbol
-+       */
-+      if (ELF32_R_TYPE (irel->r_info) == (int) R_NIOS2_CALLR)
-+	{
-+	  bfd_vma targ_addr = symval + irel->r_addend;
-+	  bfd_vma curr_addr = (sec->output_section->vma + sec->output_offset);
-+	  bfd_vma targ_page, curr_page;
-+	  targ_page = targ_addr & 0xf0000000;
-+	  curr_page = curr_addr & 0xf0000000;
-+
-+	  if (targ_page == curr_page)
-+	    {
-+	      /* change the opcode to a call */
-+	      bfd_put_32 (abfd, OP_MATCH_CALL, contents + irel->r_offset);
-+	      /* Note that we've changed the relocs, section contents, etc.  */
-+	      elf_section_data (sec)->relocs = internal_relocs;
-+	      elf_section_data (sec)->this_hdr.contents = contents;
-+	      symtab_hdr->contents = (unsigned char *) isymbuf;
-+
-+	      /* Fix the relocation's type.  */
-+	      irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
-+					   R_NIOS2_CALL26);
-+
-+	      /* replace next two instructions with nops */
-+	      bfd_put_32 (abfd, OP_MATCH_NOP, contents + irel->r_offset + 4);
-+	      bfd_put_32 (abfd, OP_MATCH_NOP, contents + irel->r_offset + 8);
-+	    }
-+	}
-+
-+      /* try to turn :
-+       *    movhi at, %hi(symbol)
-+       *    movui at, %lo(symbol)
-+       *    jmp at
-+       * into:
-+       *    br symbol
-+       */
-+      if (ELF32_R_TYPE (irel->r_info) == (int) R_NIOS2_UJMP)
-+	{
-+	  bfd_vma pcrel_offset;
-+	  Elf_Internal_Rela *irelalign = NULL;
-+	  Elf_Internal_Rela *irela = elf_section_data (sec)->relocs;
-+	  Elf_Internal_Rela *irelend = irel + sec->reloc_count;
-+
-+	  for (; irela < irelend; irela++)
-+	    {
-+	      if (ELF32_R_TYPE (irela->r_info) == (int) R_NIOS2_ALIGN
-+		  && irela->r_offset > irel->r_offset + 4
-+		  && 8 < (1 << irela->r_addend))
-+		{
-+		  irelalign = irela;
-+		  break;
-+		}
-+	    }
-+
-+	  /* calculate the pcrelative offset from current location */
-+	  pcrel_offset = symval;
-+	  pcrel_offset -= (sec->output_section->vma + sec->output_offset);
-+	  pcrel_offset += irel->r_addend;
-+
-+	  /* we need to compute the pcrel_offset from the next instruction */
-+	  pcrel_offset -= (irel->r_offset + 4);
-+
-+	  /* does this value fit in 16 bits  */
-+	  if ((irelalign == NULL && (long) pcrel_offset <= 0x8004
-+	       && (long) pcrel_offset >= -0x8000) || (irelalign != NULL
-+						      && (long) pcrel_offset
-+						      <= 0x7ffc
-+						      && (long) pcrel_offset
-+						      >= -0x8000))
-+	    {
-+	      /* change the opcode to an unconditional branch */
-+	      bfd_put_32 (abfd, OP_MATCH_BR, contents + irel->r_offset);
-+	      /* Note that we've changed the relocs, section contents, etc.  */
-+	      elf_section_data (sec)->relocs = internal_relocs;
-+	      elf_section_data (sec)->this_hdr.contents = contents;
-+	      symtab_hdr->contents = (unsigned char *) isymbuf;
-+
-+	      /* Fix the relocation's type.  */
-+	      irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
-+					   R_NIOS2_PCREL16);
-+
-+	      /* replace next two instructions with nops */
-+	      bfd_put_32 (abfd, OP_MATCH_NOP, contents + irel->r_offset + 4);
-+	      bfd_put_32 (abfd, OP_MATCH_NOP, contents + irel->r_offset + 8);
-+	    }
-+	}
-+
-+      /* try to turn :
-+       *   b{cond} a, b skip
-+       *   movhi at, %hi(symbol)
-+       *   movui at, %lo(symbol)
-+       *   jmp at
-+       * skip:
-+       *   ...
-+       * into:
-+       *   br{opp_cond} a, b, symbol
-+       */
-+      if (ELF32_R_TYPE (irel->r_info) == (int) R_NIOS2_CJMP)
-+	{
-+	  bfd_vma pcrel_offset;
-+	  Elf_Internal_Rela *irelalign = NULL;
-+	  Elf_Internal_Rela *irela = elf_section_data (sec)->relocs;
-+	  Elf_Internal_Rela *irelend = irel + sec->reloc_count;
-+
-+	  for (; irela < irelend; irela++)
-+	    {
-+	      if (ELF32_R_TYPE (irela->r_info) == (int) R_NIOS2_ALIGN
-+		  && irela->r_offset > irel->r_offset + 4
-+		  && 8 < (1 << irela->r_addend))
-+		{
-+		  irelalign = irela;
-+		  break;
-+		}
-+	    }
-+
-+	  /* calculate the pcrelative offset from current location */
-+	  pcrel_offset = symval;
-+	  pcrel_offset -= (sec->output_section->vma + sec->output_offset);
-+	  pcrel_offset += irel->r_addend;
-+
-+	  /* we need to compute the pcrel_offset from this instruction
-+	   * ie the movhi */
-+	  pcrel_offset -= (irel->r_offset);
-+
-+	  /* does this value fit in 16 bits */
-+	  if ((irelalign == NULL && (long) pcrel_offset <= 0x8008
-+	       && (long) pcrel_offset >= -0x8000) || (irelalign != NULL
-+						      && (long) pcrel_offset
-+						      <= 0x7ffc
-+						      && (long) pcrel_offset
-+						      >= -0x8000))
-+	    {
-+	      unsigned long opcode, op_a, op_b;
-+	      /* get the conditional branch opcode */
-+	      opcode = bfd_get_32 (abfd, contents + irel->r_offset - 4);
-+	      /* reverse the condition */
-+	      switch (opcode & OP_MASK_OP)
-+		{
-+		case OP_MATCH_BEQ:
-+		  opcode = (opcode & ~OP_MASK_OP) | OP_MATCH_BNE;
-+		  break;
-+		case OP_MATCH_BNE:
-+		  opcode = (opcode & ~OP_MASK_OP) | OP_MATCH_BEQ;
-+		  break;
-+		case OP_MATCH_BGE:
-+		case OP_MATCH_BGEU:
-+		case OP_MATCH_BLT:
-+		case OP_MATCH_BLTU:
-+		  /* swap the operands */
-+		  op_a = (opcode & OP_MASK_RRT) << 5;
-+		  op_b = (opcode & OP_MASK_RRS) >> 5;
-+		  opcode =
-+		    (opcode & ~(OP_MASK_RRS | OP_MASK_RRT)) | op_a | op_b;
-+		  break;
-+		default:
-+		  fprintf (stderr,
-+			   "relaxation error - expecting conditional branch, "
-+			   "aborting\n");
-+		  abort ();
-+		  break;
-+		}
-+
-+	      /* We must set the branch target to zero so that the skip over
-+ 		 the jmp doesn't get added to the jmp.  */
-+	      opcode = opcode & (~OP_MASK_IMM16);
-+
-+	      /* Change the opcode to the reversed conditional branch.  */
-+	      bfd_put_32 (abfd, opcode, contents + irel->r_offset - 4);
-+	      /* Note that we've changed the relocs, section contents, etc.  */
-+	      elf_section_data (sec)->relocs = internal_relocs;
-+	      elf_section_data (sec)->this_hdr.contents = contents;
-+	      symtab_hdr->contents = (unsigned char *) isymbuf;
-+
-+	      /* Fix the relocation's type.  */
-+	      irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
-+					   R_NIOS2_PCREL16);
-+
-+	      /* This relocation's offset has also been reduced by 4 bytes.  */
-+	      irel->r_offset -= 4;
-+
-+	      /* Replace next two instructions with nops.  */
-+	      bfd_put_32 (abfd, OP_MATCH_NOP, contents + irel->r_offset + 4);
-+	      bfd_put_32 (abfd, OP_MATCH_NOP, contents + irel->r_offset + 8);
-+	      bfd_put_32 (abfd, OP_MATCH_NOP, contents + irel->r_offset + 12);
-+	    }
-+	}
-+
-+      /* Otherwise, leave alone.  */
-+    }
-+
-+  if (isymbuf != NULL && symtab_hdr->contents != (unsigned char *) isymbuf)
-+    {
-+      if (!link_info->keep_memory)
-+	free (isymbuf);
-+      else
-+	{
-+	  /* Cache the symbols for elf_link_input_bfd.  */
-+	  symtab_hdr->contents = (unsigned char *) isymbuf;
-+	}
-+    }
-+
-+  if (contents != NULL
-+      && elf_section_data (sec)->this_hdr.contents != contents)
-+    {
-+      if (!link_info->keep_memory)
-+	free (contents);
-+      else
-+	{
-+	  /* Cache the section contents for elf_link_input_bfd.  */
-+	  elf_section_data (sec)->this_hdr.contents = contents;
-+	}
-+    }
-+
-+  if (internal_relocs != NULL
-+      && elf_section_data (sec)->relocs != internal_relocs)
-+    free (internal_relocs);
-+
-+
-+  return TRUE;
-+
-+error_return:
-+  if (isymbuf != NULL && symtab_hdr->contents != (unsigned char *) isymbuf)
-+    free (isymbuf);
-+  if (contents != NULL
-+      && elf_section_data (sec)->this_hdr.contents != contents)
-+    free (contents);
-+  if (internal_relocs != NULL
-+      && elf_section_data (sec)->relocs != internal_relocs)
-+    free (internal_relocs);
-+
-+  return FALSE;
-+}
-+#if 0
-+/* Delete some bytes from a section while relaxing.
-+ * Copied from mn10200 port */
-+
-+static bfd_boolean
-+nios2_elf32_relax_delete_bytes (bfd * abfd,
-+				asection * sec, bfd_vma addr, int count)
-+{
-+  Elf_Internal_Shdr *symtab_hdr;
-+  unsigned int sec_shndx;
-+  bfd_byte *contents;
-+  Elf_Internal_Rela *irel, *irelend;
-+  Elf_Internal_Rela *irelalign;
-+  bfd_vma toaddr;
-+  Elf_Internal_Sym *isym;
-+  Elf_Internal_Sym *isymend;
-+  struct elf_link_hash_entry **sym_hashes;
-+  struct elf_link_hash_entry **end_hashes;
-+  unsigned int symcount;
-+  asection *asec;
-+
-+  sec_shndx = _bfd_elf_section_from_bfd_section (abfd, sec);
-+
-+  contents = elf_section_data (sec)->this_hdr.contents;
-+
-+  /* The deletion must stop at the next ALIGN reloc for an aligment
-+     power larger than the number of bytes we are deleting.  */
-+
-+  irelalign = NULL;
-+  /* +1 because we need to readjust symbols at end of section */
-+  toaddr = sec->size + 1;
-+
-+  irel = elf_section_data (sec)->relocs;
-+  irelend = irel + sec->reloc_count;
-+
-+  for (; irel < irelend; irel++)
-+    {
-+      if (ELF32_R_TYPE (irel->r_info) == (int) R_NIOS2_ALIGN
-+	  && irel->r_offset > addr && count < (1 << irel->r_addend))
-+	{
-+	  irelalign = irel;
-+	  /* +1 because we need to readjust symbols at end of section */
-+	  toaddr = irel->r_offset + 1;
-+	  break;
-+	}
-+    }
-+
-+
-+  /* Actually delete the bytes.  */
-+  memmove (contents + addr, contents + addr + count,
-+	   (size_t) ((toaddr - 1) - addr - count));
-+
-+  if (irelalign == NULL)
-+    sec->size -= count;
-+  else
-+    {
-+      int i;
-+
-+#define NOP_OPCODE  (0x0001883a)
-+
-+      BFD_ASSERT ((count & 3) == 0);
-+      for (i = 0; i < count; i += 4)
-+	bfd_put_32 (abfd, (bfd_vma) NOP_OPCODE,
-+		    contents + (toaddr - 1) - count + i);
-+    }
-+
-+  /* get the symbol table */
-+  symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
-+  isym = (Elf_Internal_Sym *) symtab_hdr->contents;
-+
-+  /* Adjust all the reloc offsets in this section.  */
-+  for (irel = elf_section_data (sec)->relocs; irel < irelend; irel++)
-+    {
-+      /* Get the new reloc address.  */
-+      if ((irel->r_offset > addr && irel->r_offset < toaddr))
-+	irel->r_offset -= count;
-+    }
-+
-+  /* Adjust relocations against targets in this section whose positions
-+   * have moved as a result of the relaxation */
-+
-+  for (asec = abfd->sections; asec; asec = asec->next)
-+    {
-+      irelend = elf_section_data (asec)->relocs + asec->reloc_count;
-+      for (irel = elf_section_data (asec)->relocs; irel < irelend; irel++)
-+	{
-+	  Elf_Internal_Sym *sym;
-+	  /* if the symbol which this reloc is against doesn't change
-+	   * we need to change the reloc addend */
-+
-+	  sym = isym + ELF32_R_SYM (irel->r_info);
-+	  if (sym->st_shndx == sec_shndx
-+	      && !(sym->st_value > addr && sym->st_value < toaddr)
-+	      && sym->st_value + irel->r_addend > addr
-+	      && sym->st_value + irel->r_addend < toaddr)
-+	    {
-+	      irel->r_addend -= count;
-+	    }
-+
-+	}
-+    }
-+
-+  /* Adjust the local symbols defined in this section.  */
-+  for (isymend = isym + symtab_hdr->sh_info; isym < isymend; isym++)
-+    {
-+      if (isym->st_shndx == sec_shndx
-+	  && isym->st_value > addr && isym->st_value < toaddr)
-+	isym->st_value -= count;
-+
-+
-+    }
-+
-+  /* Now adjust the global symbols defined in this section.  */
-+  symcount = (symtab_hdr->sh_size / sizeof (Elf32_External_Sym)
-+	      - symtab_hdr->sh_info);
-+  sym_hashes = elf_sym_hashes (abfd);
-+  end_hashes = sym_hashes + symcount;
-+  for (; sym_hashes < end_hashes; sym_hashes++)
-+    {
-+      struct elf_link_hash_entry *sym_hash = *sym_hashes;
-+      if ((sym_hash->root.type == bfd_link_hash_defined
-+	   || sym_hash->root.type == bfd_link_hash_defweak)
-+	  && sym_hash->root.u.def.section == sec
-+	  && sym_hash->root.u.def.value > addr
-+	  && sym_hash->root.u.def.value < toaddr)
-+	{
-+	  sym_hash->root.u.def.value -= count;
-+	}
-+    }
-+
-+  return TRUE;
-+}
-+#endif
-+struct bfd_link_info *nios2_link_info = NULL;
-+
-+void
-+_bfd_set_link_info (struct bfd_link_info *info)
-+{
-+  nios2_link_info = info;
-+}
-+
-+bfd_boolean linker_force_make_executable = FALSE;
-+
-+void
-+_bfd_set_force_make_executable (bfd_boolean force)
-+{
-+  linker_force_make_executable = force;
-+}
-+
-+/* Set the GP value for OUTPUT_BFD.  Returns FALSE if this is a
-+   dangerous relocation.  */
-+
-+static bfd_boolean
-+nios2_elf_assign_gp (bfd *output_bfd, bfd_vma *pgp, struct bfd_link_info *info)
-+{
-+
-+  bfd_boolean gp_found;
-+  struct bfd_hash_entry *h;
-+  struct bfd_link_hash_entry *lh;
-+
-+  /* If we've already figured out what GP will be, just return it. */
-+  *pgp = _bfd_get_gp_value (output_bfd);
-+  if (*pgp)
-+    return TRUE;
-+
-+  h = bfd_hash_lookup (&info->hash->table, "_gp", FALSE, FALSE);
-+  lh = (struct bfd_link_hash_entry *) h;
-+lookup:
-+  if (lh)
-+    {
-+      switch (lh->type)
-+	{
-+	case bfd_link_hash_undefined:
-+	case bfd_link_hash_undefweak:
-+	case bfd_link_hash_common:
-+	  gp_found = FALSE;
-+	  break;
-+	case bfd_link_hash_defined:
-+	case bfd_link_hash_defweak:
-+	  gp_found = TRUE;
-+	  *pgp = lh->u.def.value;
-+	  break;
-+	case bfd_link_hash_indirect:
-+	case bfd_link_hash_warning:
-+	  lh = lh->u.i.link;
-+	  /* @@FIXME  ignoring warning for now */
-+	  goto lookup;
-+	case bfd_link_hash_new:
-+	default:
-+	  abort ();
-+	}
-+    }
-+  else
-+    gp_found = FALSE;
-+
-+  if (!gp_found)
-+    {
-+      /* Only get the error once. */
-+      *pgp = 4;
-+      _bfd_set_gp_value (output_bfd, *pgp);
-+      return FALSE;
-+    }
-+
-+  _bfd_set_gp_value (output_bfd, *pgp);
-+
-+  return TRUE;
-+}
-+
-+/* We have to figure out the gp value, so that we can adjust the
-+   symbol value correctly.  We look up the symbol _gp in the output
-+   BFD.  If we can't find it, we're stuck.  We cache it in the ELF
-+   target data.  We don't need to adjust the symbol value for an
-+   external symbol if we are producing relocatable output.  */
-+
-+static bfd_reloc_status_type
-+nios2_elf_final_gp (bfd *output_bfd, asymbol *symbol, bfd_boolean relocatable,
-+                    char **error_message, bfd_vma *pgp,
-+		    struct bfd_link_info *info)
-+{
-+  if (bfd_is_und_section (symbol->section) && !relocatable)
-+    {
-+      *pgp = 0;
-+      return bfd_reloc_undefined;
-+    }
-+
-+  *pgp = _bfd_get_gp_value (output_bfd);
-+  if (*pgp == 0 && (!relocatable || (symbol->flags & BSF_SECTION_SYM) != 0))
-+    {
-+      /* if this is called without link_info, then
-+         we cannot be doing a final link */
-+      if (info == NULL)
-+	relocatable = TRUE;
-+
-+      if (relocatable)
-+	{
-+	  /* Make up a value.  */
-+	  *pgp = symbol->section->output_section->vma + 0x4000;
-+	  _bfd_set_gp_value (output_bfd, *pgp);
-+	}
-+      else if (!nios2_elf_assign_gp (output_bfd, pgp, info))
-+	{
-+	  *error_message =
-+	    (char *)
-+	    _("global pointer relative relocation when _gp not defined");
-+	  return bfd_reloc_dangerous;
-+	}
-+    }
-+
-+  return bfd_reloc_ok;
-+}
-+
-+
-+/* Relocations that require special handling */
-+
-+/* This is for relocations used only when relaxing to ensure
-+   changes in size of section don't screw up .align.  */
-+static bfd_reloc_status_type
-+nios2_elf32_ignore_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry,
-+                          asymbol *symbol ATTRIBUTE_UNUSED,
-+                          void *data ATTRIBUTE_UNUSED, asection *input_section,
-+			  bfd *output_bfd,
-+			  char **error_message ATTRIBUTE_UNUSED)
-+{
-+  if (output_bfd != NULL)
-+    reloc_entry->address += input_section->output_offset;
-+  return bfd_reloc_ok;
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_hi16_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-+			   void *data, asection *input_section,
-+			   bfd *output_bfd,
-+			   char **error_message ATTRIBUTE_UNUSED)
-+{
-+  /* This part is from bfd_elf_generic_reloc.  */
-+  if (output_bfd != (bfd *) NULL
-+      && (symbol->flags & BSF_SECTION_SYM) == 0
-+      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-+    {
-+      reloc_entry->address += input_section->output_offset;
-+      return bfd_reloc_ok;
-+    }
-+
-+  if (output_bfd != NULL)
-+    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-+    return bfd_reloc_ok;
-+
-+  return nios2_elf32_do_hi16_relocate (abfd, reloc_entry->howto,
-+				       input_section,
-+				       data, reloc_entry->address,
-+				       (symbol->value
-+					+ symbol->section->output_section->vma
-+					+ symbol->section->output_offset),
-+				       reloc_entry->addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_lo16_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-+                           void *data, asection *input_section,
-+			   bfd *output_bfd,
-+			   char **error_message ATTRIBUTE_UNUSED)
-+{
-+/* This part is from bfd_elf_generic_reloc.  */
-+  if (output_bfd != (bfd *) NULL
-+      && (symbol->flags & BSF_SECTION_SYM) == 0
-+      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-+    {
-+      reloc_entry->address += input_section->output_offset;
-+      return bfd_reloc_ok;
-+    }
-+
-+  if (output_bfd != NULL)
-+    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-+    return bfd_reloc_ok;
-+
-+  return nios2_elf32_do_lo16_relocate (abfd, reloc_entry->howto,
-+				       input_section,
-+				       data, reloc_entry->address,
-+				       (symbol->value
-+					+ symbol->section->output_section->vma
-+					+ symbol->section->output_offset),
-+				       reloc_entry->addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_hiadj16_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-+			      void *data, asection *input_section,
-+			      bfd *output_bfd,
-+			      char **error_message ATTRIBUTE_UNUSED)
-+{
-+  /* This part is from bfd_elf_generic_reloc.  */
-+  if (output_bfd != (bfd *) NULL
-+      && (symbol->flags & BSF_SECTION_SYM) == 0
-+      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-+    {
-+      reloc_entry->address += input_section->output_offset;
-+      return bfd_reloc_ok;
-+    }
-+
-+  if (output_bfd != NULL)
-+    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-+    return bfd_reloc_ok;
-+
-+  return nios2_elf32_do_hiadj16_relocate (abfd, reloc_entry->howto,
-+					  input_section,
-+					  data, reloc_entry->address,
-+					  (symbol->value
-+					   +
-+					   symbol->section->output_section->
-+					   vma +
-+					   symbol->section->output_offset),
-+					  reloc_entry->addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_pcrel_lo16_relocate (bfd *abfd, arelent *reloc_entry,
-+				 asymbol *symbol, void *data,
-+				 asection *input_section, bfd *output_bfd,
-+				 char **error_message ATTRIBUTE_UNUSED)
-+{
-+  /* This part is from bfd_elf_generic_reloc.  */
-+  if (output_bfd != (bfd *) NULL
-+      && (symbol->flags & BSF_SECTION_SYM) == 0
-+      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-+    {
-+      reloc_entry->address += input_section->output_offset;
-+      return bfd_reloc_ok;
-+    }
-+
-+  if (output_bfd != NULL)
-+    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-+    return bfd_reloc_ok;
-+
-+  return nios2_elf32_do_pcrel_lo16_relocate (
-+    abfd, reloc_entry->howto, input_section, data, reloc_entry->address,
-+    (symbol->value + symbol->section->output_section->vma +
-+     symbol->section->output_offset),
-+    reloc_entry->addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_pcrel_hiadj16_relocate (bfd *abfd, arelent *reloc_entry,
-+				    asymbol *symbol, void *data,
-+				    asection *input_section, bfd *output_bfd,
-+				    char **error_message ATTRIBUTE_UNUSED)
-+{
-+  /* This part is from bfd_elf_generic_reloc.  */
-+  if (output_bfd != (bfd *) NULL
-+      && (symbol->flags & BSF_SECTION_SYM) == 0
-+      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-+    {
-+      reloc_entry->address += input_section->output_offset;
-+      return bfd_reloc_ok;
-+    }
-+
-+  if (output_bfd != NULL)
-+    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-+    return bfd_reloc_ok;
-+
-+  return nios2_elf32_do_pcrel_hiadj16_relocate (
-+    abfd, reloc_entry->howto, input_section, data, reloc_entry->address,
-+    (symbol->value + symbol->section->output_section->vma +
-+     symbol->section->output_offset),
-+    reloc_entry->addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_pcrel16_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-+			      void *data, asection *input_section,
-+			      bfd *output_bfd,
-+			      char **error_message ATTRIBUTE_UNUSED)
-+{
-+  /* This part is from bfd_elf_generic_reloc.  */
-+  if (output_bfd != (bfd *) NULL
-+      && (symbol->flags & BSF_SECTION_SYM) == 0
-+      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-+    {
-+      reloc_entry->address += input_section->output_offset;
-+      return bfd_reloc_ok;
-+    }
-+
-+  if (output_bfd != NULL)
-+    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-+    return bfd_reloc_ok;
-+
-+  return nios2_elf32_do_pcrel16_relocate (abfd, reloc_entry->howto,
-+					  input_section,
-+					  data, reloc_entry->address,
-+					  (symbol->value
-+					   +
-+					   symbol->section->output_section->
-+					   vma +
-+					   symbol->section->output_offset),
-+					  reloc_entry->addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_call26_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-+			     void *data, asection *input_section,
-+			     bfd *output_bfd,
-+			     char **error_message ATTRIBUTE_UNUSED)
-+{
-+  /* This part is from bfd_elf_generic_reloc.  */
-+  if (output_bfd != (bfd *) NULL
-+      && (symbol->flags & BSF_SECTION_SYM) == 0
-+      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-+    {
-+      reloc_entry->address += input_section->output_offset;
-+      return bfd_reloc_ok;
-+    }
-+
-+  if (output_bfd != NULL)
-+    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-+    return bfd_reloc_ok;
-+
-+  return nios2_elf32_do_call26_relocate (abfd, reloc_entry->howto,
-+					 input_section,
-+					 data, reloc_entry->address,
-+					 (symbol->value
-+					  +
-+					  symbol->section->output_section->
-+					  vma +
-+					  symbol->section->output_offset),
-+					 reloc_entry->addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_gprel_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-+                            void *data, asection *input_section,
-+			    bfd *output_bfd, char **msg)
-+{
-+  bfd_vma relocation;
-+  bfd_vma gp;
-+  bfd_reloc_status_type r;
-+
-+
-+  /* This part is from bfd_elf_generic_reloc.  */
-+  if (output_bfd != (bfd *) NULL
-+      && (symbol->flags & BSF_SECTION_SYM) == 0
-+      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-+    {
-+      reloc_entry->address += input_section->output_offset;
-+      return bfd_reloc_ok;
-+    }
-+
-+  if (output_bfd != NULL)
-+    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-+    return bfd_reloc_ok;
-+
-+  relocation = symbol->value
-+    + symbol->section->output_section->vma + symbol->section->output_offset;
-+
-+  if ((r =
-+       nios2_elf_final_gp (abfd, symbol, FALSE, msg, &gp,
-+			   nios2_link_info)) == bfd_reloc_ok)
-+    {
-+      relocation = relocation + reloc_entry->addend - gp;
-+      reloc_entry->addend = 0;
-+      if ((signed) relocation < -32768 || (signed) relocation > 32767)
-+	{
-+	  *msg = _("global pointer relative address out of range");
-+	  r = bfd_reloc_outofrange;
-+	}
-+      else
-+	{
-+	  r = nios2_elf32_do_gprel_relocate (abfd, reloc_entry->howto,
-+					     input_section,
-+					     data, reloc_entry->address,
-+					     relocation, reloc_entry->addend);
-+	}
-+    }
-+
-+  return r;
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_ujmp_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-+                           void *data, asection *input_section,
-+			   bfd *output_bfd, char **msg ATTRIBUTE_UNUSED)
-+{
-+  /* This part is from bfd_elf_generic_reloc.  */
-+  if (output_bfd != (bfd *) NULL
-+      && (symbol->flags & BSF_SECTION_SYM) == 0
-+      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-+    {
-+      reloc_entry->address += input_section->output_offset;
-+      return bfd_reloc_ok;
-+    }
-+
-+  if (output_bfd != NULL)
-+    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-+    return bfd_reloc_ok;
-+
-+  return nios2_elf32_do_ujmp_relocate (abfd, reloc_entry->howto,
-+				       input_section,
-+				       data, reloc_entry->address,
-+				       (symbol->value
-+					+ symbol->section->output_section->vma
-+					+ symbol->section->output_offset),
-+				       reloc_entry->addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_cjmp_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-+			   void *data, asection *input_section,
-+			   bfd *output_bfd, char **msg ATTRIBUTE_UNUSED)
-+{
-+  /* This part is from bfd_elf_generic_reloc.  */
-+  if (output_bfd != (bfd *) NULL
-+      && (symbol->flags & BSF_SECTION_SYM) == 0
-+      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-+    {
-+      reloc_entry->address += input_section->output_offset;
-+      return bfd_reloc_ok;
-+    }
-+
-+  if (output_bfd != NULL)
-+    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-+    return bfd_reloc_ok;
-+
-+  return nios2_elf32_do_cjmp_relocate (abfd, reloc_entry->howto,
-+				       input_section,
-+				       data, reloc_entry->address,
-+				       (symbol->value
-+					+ symbol->section->output_section->vma
-+					+ symbol->section->output_offset),
-+				       reloc_entry->addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_callr_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-+		 	    void *data, asection *input_section,
-+			    bfd *output_bfd, char **msg ATTRIBUTE_UNUSED)
-+{
-+  /* This part is from bfd_elf_generic_reloc.  */
-+  if (output_bfd != (bfd *) NULL
-+      && (symbol->flags & BSF_SECTION_SYM) == 0
-+      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-+    {
-+      reloc_entry->address += input_section->output_offset;
-+      return bfd_reloc_ok;
-+    }
-+
-+  if (output_bfd != NULL)
-+    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-+    return bfd_reloc_ok;
-+
-+
-+  return nios2_elf32_do_callr_relocate (abfd, reloc_entry->howto,
-+					input_section,
-+					data, reloc_entry->address,
-+					(symbol->value
-+					 +
-+					 symbol->section->output_section->
-+					 vma +
-+					 symbol->section->output_offset),
-+					reloc_entry->addend);
-+}
-+
-+/* Do the relocations which require special handling.  */
-+
-+static bfd_reloc_status_type
-+nios2_elf32_do_hi16_relocate (bfd *abfd, reloc_howto_type *howto,
-+                              asection *input_section ATTRIBUTE_UNUSED,
-+			      bfd_byte *data, bfd_vma offset,
-+			      bfd_vma symbol_value, bfd_vma addend)
-+{
-+  symbol_value = symbol_value + addend;
-+  addend = 0;
-+  symbol_value = (symbol_value >> 16) & 0xffff;
-+  return _bfd_final_link_relocate (howto, abfd, input_section,
-+				   data, offset, symbol_value, addend);
-+}
-+
-+
-+static bfd_reloc_status_type
-+nios2_elf32_do_lo16_relocate (bfd *abfd, reloc_howto_type *howto,
-+			      asection *input_section ATTRIBUTE_UNUSED,
-+			      bfd_byte *data, bfd_vma offset,
-+			      bfd_vma symbol_value, bfd_vma addend)
-+{
-+  symbol_value = symbol_value + addend;
-+  addend = 0;
-+  symbol_value = symbol_value & 0xffff;
-+  return _bfd_final_link_relocate (howto, abfd, input_section,
-+				   data, offset, symbol_value, addend);
-+}
-+
-+/* The usual way of loading a 32-bit constant into a Nios II register is to
-+   load the high 16 bits in one instruction and then add the low 16 bits with
-+   a signed add. This means that the high halfword needs to be adjusted to
-+   compensate for the sign bit of the low halfword. This function returns the
-+   adjusted high halfword for a given 32-bit constant.  */
-+
-+static bfd_vma hiadj(bfd_vma symbol_value)
-+{
-+  return
-+    (((symbol_value >> 16) & 0xffff) + ((symbol_value >> 15) & 0x01)) & 0xffff;
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_do_hiadj16_relocate (bfd *abfd, reloc_howto_type *howto,
-+			         asection *input_section ATTRIBUTE_UNUSED,
-+				 bfd_byte *data, bfd_vma offset,
-+				 bfd_vma symbol_value, bfd_vma addend)
-+{
-+  symbol_value = symbol_value + addend;
-+  addend = 0;
-+  symbol_value = hiadj(symbol_value);
-+  return _bfd_final_link_relocate (howto, abfd, input_section, data, offset,
-+				   symbol_value, addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_do_pcrel_lo16_relocate (bfd *abfd, reloc_howto_type *howto,
-+				    asection *input_section ATTRIBUTE_UNUSED,
-+				    bfd_byte *data, bfd_vma offset,
-+				    bfd_vma symbol_value, bfd_vma addend)
-+{
-+  symbol_value = symbol_value + addend;
-+  addend = 0;
-+  symbol_value = symbol_value & 0xffff;
-+  return _bfd_final_link_relocate (howto, abfd, input_section,
-+                                   data, offset, symbol_value, addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_do_pcrel_hiadj16_relocate (bfd *abfd, reloc_howto_type *howto,
-+				       asection *input_section
-+				       ATTRIBUTE_UNUSED,
-+				       bfd_byte *data, bfd_vma offset,
-+				       bfd_vma symbol_value, bfd_vma addend)
-+{
-+  symbol_value = symbol_value + addend;
-+  symbol_value -= (input_section->output_section->vma +
-+		   input_section->output_offset);
-+  symbol_value -= offset;
-+  addend = 0;
-+  symbol_value = hiadj(symbol_value);
-+  return _bfd_final_link_relocate (howto, abfd, input_section, data, offset,
-+                                   symbol_value, addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_do_pcrel16_relocate (bfd *abfd, reloc_howto_type *howto,
-+                                 asection *input_section ATTRIBUTE_UNUSED,
-+				 bfd_byte *data, bfd_vma offset,
-+				 bfd_vma symbol_value, bfd_vma addend)
-+{
-+  /* NIOS2 pc relative relocations are relative to the next 32-bit instruction
-+     so we need to subtract 4 before doing a final_link_relocate. */
-+  symbol_value = symbol_value + addend - 4;
-+  addend = 0;
-+  return _bfd_final_link_relocate (howto, abfd, input_section,
-+				   data, offset, symbol_value, addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_do_call26_relocate (bfd *abfd, reloc_howto_type *howto,
-+                                asection *input_section ATTRIBUTE_UNUSED,
-+				bfd_byte *data, bfd_vma offset,
-+				bfd_vma symbol_value, bfd_vma addend)
-+{
-+  /* Check that the relocation is in the same page as the current address.  */
-+  if (((symbol_value + addend) & 0xf0000000)
-+      != ((input_section->output_section->vma + offset) & 0xf0000000))
-+    return bfd_reloc_overflow;
-+
-+  return _bfd_final_link_relocate (howto, abfd, input_section,
-+				   data, offset, symbol_value, addend);
-+}
-+
-+
-+static bfd_reloc_status_type
-+nios2_elf32_do_gprel_relocate (bfd *abfd, reloc_howto_type *howto,
-+			       asection *input_section ATTRIBUTE_UNUSED,
-+			       bfd_byte *data, bfd_vma offset,
-+			       bfd_vma symbol_value, bfd_vma addend)
-+{
-+  /* Because we need the output_bfd, the special handling is done
-+     in nios2_elf32_relocate_section or in nios2_elf32_gprel_relocate.  */
-+  return _bfd_final_link_relocate (howto, abfd, input_section,
-+				   data, offset, symbol_value, addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_do_ujmp_relocate (bfd *abfd, reloc_howto_type *howto,
-+                              asection *input_section ATTRIBUTE_UNUSED,
-+			      bfd_byte *data, bfd_vma offset,
-+			      bfd_vma symbol_value, bfd_vma addend)
-+{
-+  bfd_vma symbol_lo16, symbol_hi16;
-+  bfd_reloc_status_type r;
-+  symbol_value = symbol_value + addend;
-+  addend = 0;
-+  symbol_hi16 = (symbol_value >> 16) & 0xffff;
-+  symbol_lo16 = symbol_value & 0xffff;
-+
-+  r = _bfd_final_link_relocate (howto, abfd, input_section,
-+				data, offset, symbol_hi16, addend);
-+
-+  if (r == bfd_reloc_ok)
-+    return _bfd_final_link_relocate (howto, abfd, input_section,
-+				     data, offset + 4, symbol_lo16, addend);
-+
-+  return r;
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_do_cjmp_relocate (bfd *abfd, reloc_howto_type *howto,
-+			      asection *input_section ATTRIBUTE_UNUSED,
-+			      bfd_byte *data, bfd_vma offset,
-+			      bfd_vma symbol_value, bfd_vma addend)
-+{
-+  bfd_vma symbol_lo16, symbol_hi16;
-+  bfd_reloc_status_type r;
-+  symbol_value = symbol_value + addend;
-+  addend = 0;
-+  symbol_hi16 = (symbol_value >> 16) & 0xffff;
-+  symbol_lo16 = symbol_value & 0xffff;
-+
-+  r = _bfd_final_link_relocate (howto, abfd, input_section,
-+				data, offset, symbol_hi16, addend);
-+
-+  if (r == bfd_reloc_ok)
-+    return _bfd_final_link_relocate (howto, abfd, input_section,
-+				     data, offset + 4, symbol_lo16, addend);
-+
-+  return r;
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_do_callr_relocate (bfd *abfd, reloc_howto_type *howto,
-+			       asection *input_section ATTRIBUTE_UNUSED,
-+			       bfd_byte *data, bfd_vma offset,
-+			       bfd_vma symbol_value, bfd_vma addend)
-+{
-+  bfd_vma symbol_lo16, symbol_hi16;
-+  bfd_reloc_status_type r;
-+  symbol_value = symbol_value + addend;
-+  addend = 0;
-+  symbol_hi16 = (symbol_value >> 16) & 0xffff;
-+  symbol_lo16 = symbol_value & 0xffff;
-+
-+  r = _bfd_final_link_relocate (howto, abfd, input_section,
-+				data, offset, symbol_hi16, addend);
-+
-+  if (r == bfd_reloc_ok)
-+    return _bfd_final_link_relocate (howto, abfd, input_section,
-+				     data, offset + 4, symbol_lo16, addend);
-+
-+  return r;
-+}
-+
-+/* The function nios2_elf32_relocate_section is used by the linker
-+   to perform relocations.  */
-+static bfd_boolean
-+nios2_elf32_relocate_section (bfd * output_bfd,
-+			      struct bfd_link_info *info,
-+			      bfd * input_bfd,
-+			      asection * input_section,
-+			      bfd_byte * contents,
-+			      Elf_Internal_Rela * relocs,
-+			      Elf_Internal_Sym * local_syms,
-+			      asection ** local_sections)
-+{
-+  Elf_Internal_Shdr *symtab_hdr;
-+  struct elf_link_hash_entry **sym_hashes;
-+  Elf_Internal_Rela *rel;
-+  Elf_Internal_Rela *relend;
-+  struct elf32_nios2_link_hash_table *htab;
-+  asection *sgot;
-+  asection *splt;
-+  asection *sreloc = NULL;
-+  bfd_vma *local_got_offsets;
-+  bfd *dynobj = NULL;
-+
-+  symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
-+  sym_hashes = elf_sym_hashes (input_bfd);
-+  relend = relocs + input_section->reloc_count;
-+
-+  htab = elf32_nios2_hash_table (info);
-+  sgot = htab->sgot;
-+  splt = htab->splt;
-+  local_got_offsets = elf_local_got_offsets (input_bfd);
-+
-+  dynobj = elf_hash_table (info)->dynobj;
-+
-+#if 0
-+  size_t psymalloc = 0;
-+  _bfd_generic_link_output_symbols(output_bfd, input_bfd, info, &psymalloc);
-+#endif
-+  for (rel = relocs; rel < relend; rel++)
-+    {
-+      reloc_howto_type *howto;
-+      unsigned long r_symndx;
-+      Elf_Internal_Sym *sym;
-+      asection *sec;
-+      struct elf_link_hash_entry *h;
-+      struct elf32_nios2_link_hash_entry *eh;
-+      bfd_vma relocation;
-+      bfd_vma gp;
-+      bfd_vma reloc_address;
-+      bfd_reloc_status_type r = bfd_reloc_ok;
-+      const char *name = NULL;
-+      int r_type;
-+      const char *format;
-+      char msgbuf[256];
-+      const char* msg = (const char*) NULL;
-+      bfd_boolean unresolved_reloc;
-+      bfd_vma off;
-+      int use_plt;
-+
-+
-+
-+      r_type = ELF32_R_TYPE (rel->r_info);
-+
-+      r_symndx = ELF32_R_SYM (rel->r_info);
-+
-+      if (info->relocatable)
-+	{
-+	  /* This is a relocatable link.  We don't have to change
-+	     anything, unless the reloc is against a section symbol,
-+	     in which case we have to adjust according to where the
-+	     section symbol winds up in the output section.  */
-+	  if (r_symndx < symtab_hdr->sh_info)
-+	    {
-+	      sym = local_syms + r_symndx;
-+
-+	      if (ELF_ST_TYPE (sym->st_info) == STT_SECTION)
-+		{
-+		  sec = local_sections[r_symndx];
-+		  rel->r_addend += sec->output_offset + sym->st_value;
-+		}
-+	    }
-+	  continue;
-+	}
-+
-+      /* This is a final link.  */
-+      howto = lookup_howto ((unsigned) ELF32_R_TYPE (rel->r_info));
-+      h = NULL;
-+      sym = NULL;
-+      sec = NULL;
-+
-+      if (r_symndx < symtab_hdr->sh_info)
-+	{
-+	  sym = local_syms + r_symndx;
-+	  sec = local_sections[r_symndx];
-+	  relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel);
-+	}
-+      else
-+	{
-+          bfd_boolean warned;
-+
-+          RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
-+				   r_symndx, symtab_hdr, sym_hashes,
-+				   h, sec, relocation,
-+				   unresolved_reloc, warned);
-+	}
-+
-+      if (sec != NULL && elf_discarded_section (sec))
-+        {
-+          /* For relocs against symbols from removed linkonce sections,
-+             or sections discarded by a linker script, we just want the
-+             section contents zeroed.  Avoid any special processing.  */
-+          _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset);
-+          rel->r_info = 0;
-+          rel->r_addend = 0;
-+          continue;
-+	}
-+
-+	if (sec && sec->output_section != NULL)
-+          reloc_address = sec->output_section->vma + sec->output_offset +
-+                          rel->r_offset;
-+	else
-+          reloc_address = 0;
-+
-+      if (howto != NULL)
-+	{
-+	  switch (howto->type)
-+	    {
-+	    case R_NIOS2_HI16:
-+	      r =
-+		nios2_elf32_do_hi16_relocate (input_bfd, howto, input_section,
-+					      contents, rel->r_offset,
-+					      relocation, rel->r_addend);
-+	      break;
-+	    case R_NIOS2_LO16:
-+              r =
-+                nios2_elf32_do_lo16_relocate (input_bfd, howto, input_section,
-+                                              contents, rel->r_offset,
-+                                              relocation, rel->r_addend);
-+	      break;
-+	    case R_NIOS2_PCREL_LO:
-+	      r =
-+		nios2_elf32_do_pcrel_lo16_relocate (input_bfd, howto,
-+						    input_section, contents,
-+						    rel->r_offset, relocation,
-+						    rel->r_addend);
-+	      break;
-+	    case R_NIOS2_HIADJ16:
-+              r =
-+                nios2_elf32_do_hiadj16_relocate (input_bfd, howto,
-+                                                 input_section, contents,
-+                                                 rel->r_offset, relocation,
-+                                                 rel->r_addend);
-+	      break;
-+	    case R_NIOS2_PCREL_HA:
-+	      r =
-+		nios2_elf32_do_pcrel_hiadj16_relocate (input_bfd, howto,
-+						       input_section, contents,
-+						       rel->r_offset,
-+						       relocation,
-+						       rel->r_addend);
-+	      break;
-+	    case R_NIOS2_PCREL16:
-+	      r =
-+		nios2_elf32_do_pcrel16_relocate (input_bfd, howto,
-+						 input_section, contents,
-+						 rel->r_offset, relocation,
-+						 rel->r_addend);
-+	      break;
-+	    case R_NIOS2_GPREL:
-+	      /* Turns an absolute address into a gp-relative address.  */
-+	      if (!nios2_elf_assign_gp (output_bfd, &gp, info))
-+		{
-+		  format = _("global pointer relative relocation at address "
-+			     "0x%08x when _gp not defined\n");
-+		  sprintf(msgbuf, format, reloc_address);
-+		  msg = msgbuf;
-+		  r = bfd_reloc_dangerous;
-+		}
-+	      else
-+		{
-+		  bfd_vma symbol_address = rel->r_addend + relocation;
-+		  relocation = relocation + rel->r_addend - gp;
-+		  rel->r_addend = 0;
-+		  if ((signed) relocation < -32768
-+		      || (signed) relocation > 32767)
-+		    {
-+		      format = _("Unable to reach %s (at 0x%08x) from the "
-+				 "global pointer (at 0x%08x) because the "
-+				 "offset (%d) is out of the allowed range, "
-+				 "-32678 to 32767.\n" );
-+		      sprintf(msgbuf, format, name, symbol_address, gp,
-+			      (signed)relocation);
-+		      msg = msgbuf;
-+		      r = bfd_reloc_outofrange;
-+		    }
-+		  else
-+		    {
-+		      r =
-+			_bfd_final_link_relocate (howto, input_bfd,
-+						  input_section, contents,
-+						  rel->r_offset, relocation,
-+						  rel->r_addend);
-+		    }
-+		}
-+
-+	      break;
-+	    case R_NIOS2_UJMP:
-+	      r =
-+		nios2_elf32_do_ujmp_relocate (input_bfd, howto, input_section,
-+					      contents, rel->r_offset,
-+					      relocation, rel->r_addend);
-+	      break;
-+	    case R_NIOS2_CJMP:
-+	      r =
-+		nios2_elf32_do_cjmp_relocate (input_bfd, howto, input_section,
-+					      contents, rel->r_offset,
-+					      relocation, rel->r_addend);
-+	      break;
-+	    case R_NIOS2_CALLR:
-+	      r =
-+		nios2_elf32_do_callr_relocate (input_bfd, howto,
-+					       input_section, contents,
-+					       rel->r_offset, relocation,
-+					       rel->r_addend);
-+	      break;
-+	    case R_NIOS2_CALL26:
-+              /* Handle relocations which should use the PLT entry.
-+                 NIOS2_BFD_RELOC_32 relocations will use the symbol's value,
-+                 which may point to a PLT entry, but we don't need to handle
-+                 that here.  If we created a PLT entry, all branches in this
-+                 object should go to it.  */
-+              if (h != NULL && splt != NULL && h->plt.offset != (bfd_vma) -1)
-+                {
-+                  /* If we've created a .plt section, and assigned a PLT entry
-+                     to this function, it should not be known to bind locally.
-+                     If it were, we would have cleared the PLT entry.  */
-+                  BFD_ASSERT (!SYMBOL_CALLS_LOCAL (info, h));
-+
-+                  relocation = (splt->output_section->vma
-+                                + splt->output_offset
-+                                + h->plt.offset);
-+
-+                  unresolved_reloc = FALSE;
-+		}
-+	      r =
-+		nios2_elf32_do_call26_relocate (input_bfd, howto,
-+						input_section, contents,
-+						rel->r_offset, relocation,
-+						rel->r_addend);
-+	      break;
-+	    case R_NIOS2_ALIGN:
-+	      r = bfd_reloc_ok;
-+	      /* For symmetry this would be
-+		 r = nios2_elf32_do_ignore_reloc (input_bfd, howto,
-+		                                  input_section, contents,
-+						  rel->r_offset, relocation,
-+						  rel->r_addend);
-+                but do_ignore_reloc would do no more than return bfd_reloc_ok.
-+	      */
-+	      break;
-+
-+            case R_NIOS2_GOT16:
-+	    case R_NIOS2_CALL16:
-+	      /* Relocation is to the entry for this symbol in the
-+		 global offset table.  */
-+	      if (sgot == NULL)
-+		{
-+		  r = bfd_reloc_notsupported;
-+		  break;
-+		}
-+
-+              use_plt = 0;
-+
-+	      if (h != NULL)
-+		{
-+		  bfd_boolean dyn;
-+
-+                  eh = (struct elf32_nios2_link_hash_entry *)h;
-+                  use_plt = (eh->got_types_used == CALL16_USED &&
-+                             h->plt.offset != (bfd_vma) -1);
-+
-+		  off = h->got.offset;
-+		  BFD_ASSERT (off != (bfd_vma) -1);
-+		  dyn = elf_hash_table (info)->dynamic_sections_created;
-+		  if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info->shared, h)
-+		      || (info->shared
-+			  && SYMBOL_REFERENCES_LOCAL (info, h))
-+		      || (ELF_ST_VISIBILITY (h->other)
-+			  && h->root.type == bfd_link_hash_undefweak))
-+		    {
-+        	      /* This is actually a static link, or it is a -Bsymbolic
-+			 link and the symbol is defined locally.  We must
-+			 initialize this entry in the global offset table.
-+			 Since the offset must always be a multiple of 4, we
-+			 use the least significant bit to record whether we
-+			 have initialized it already.
-+
-+        		 When doing a dynamic link, we create a .rela.got
-+			 relocation entry to initialize the value.  This is
-+			 done in the finish_dynamic_symbol routine.  */
-+        	      if ((off & 1) != 0)
-+        		off &= ~1;
-+        	      else
-+        		{
-+        		  bfd_put_32 (output_bfd, relocation,
-+				      sgot->contents + off);
-+        		  h->got.offset |= 1;
-+        		}
-+        	    }
-+        	  else
-+        	    unresolved_reloc = FALSE;
-+        	}
-+              else
-+        	{
-+        	  BFD_ASSERT (local_got_offsets != NULL &&
-+        		      local_got_offsets[r_symndx] != (bfd_vma) -1);
-+
-+        	  off = local_got_offsets[r_symndx];
-+
-+        	  /* The offset must always be a multiple of 4.  We use the
-+        	     least significant bit to record whether we have already
-+        	     generated the necessary reloc.  */
-+        	  if ((off & 1) != 0)
-+        	    off &= ~1;
-+        	  else
-+        	    {
-+              	      bfd_put_32 (output_bfd, relocation,
-+				  sgot->contents + off);
-+
-+               	      if (info->shared)
-+        		{
-+        		  asection * srelgot;
-+        		  Elf_Internal_Rela outrel;
-+        		  bfd_byte *loc;
-+
-+        		  srelgot = htab->srelgot;
-+        		  BFD_ASSERT (srelgot != NULL);
-+
-+        		  outrel.r_addend = relocation;
-+        		  outrel.r_offset = (sgot->output_section->vma
-+        				     + sgot->output_offset
-+        				     + off);
-+        		  outrel.r_info = ELF32_R_INFO (0, R_NIOS2_RELATIVE);
-+        		  loc = srelgot->contents;
-+        		  loc += (srelgot->reloc_count++ *
-+				  sizeof (Elf32_External_Rela));
-+        		  bfd_elf32_swap_reloca_out (output_bfd, &outrel, loc);
-+        		}
-+
-+        	      local_got_offsets[r_symndx] |= 1;
-+        	    }
-+        	}
-+
-+              if (use_plt && info->shared)
-+                {
-+		  off = ((h->plt.offset - 24) / 12 + 3) * 4;
-+		  relocation = htab->sgotplt->output_offset + off;
-+                }
-+	      else
-+		relocation = sgot->output_offset + off;
-+
-+	      /* This relocation does not use the addend.  */
-+	      rel->r_addend = 0;
-+
-+              r = _bfd_final_link_relocate (howto, input_bfd, input_section,
-+					    contents, rel->r_offset,
-+					    relocation, rel->r_addend);
-+	      break;
-+
-+	    case R_NIOS2_GOTOFF_LO:
-+	    case R_NIOS2_GOTOFF_HA:
-+	    case R_NIOS2_GOTOFF:
-+	      /* Relocation is relative to the start of the
-+		 global offset table.  */
-+
-+	      BFD_ASSERT (sgot != NULL);
-+	      if (sgot == NULL)
-+		{
-+		  r = bfd_reloc_notsupported;
-+		  break;
-+		}
-+
-+	      /* Note that sgot->output_offset is not involved in this
-+		 calculation.  We always want the start of .got.  If we
-+		 define _GLOBAL_OFFSET_TABLE in a different way, as is
-+		 permitted by the ABI, we might have to change this
-+		 calculation.  */
-+	      relocation -= sgot->output_section->vma;
-+	      switch (howto->type)
-+		{
-+		case R_NIOS2_GOTOFF_LO:
-+		  r = nios2_elf32_do_lo16_relocate (input_bfd, howto,
-+						    input_section, contents,
-+						    rel->r_offset, relocation,
-+						    rel->r_addend);
-+		  break;
-+		case R_NIOS2_GOTOFF_HA:
-+		  r = nios2_elf32_do_hiadj16_relocate (input_bfd, howto,
-+						       input_section, contents,
-+						       rel->r_offset,
-+						       relocation,
-+						       rel->r_addend);
-+		  break;
-+		default:
-+		  r = _bfd_final_link_relocate (howto, input_bfd,
-+						input_section, contents,
-+						rel->r_offset, relocation,
-+						rel->r_addend);
-+		  break;
-+		}
-+	      break;
-+
-+	    case R_NIOS2_TLS_LDO16:
-+	      relocation -= dtpoff_base (info) + DTP_OFFSET;
-+
-+	      r = _bfd_final_link_relocate (howto, input_bfd, input_section,
-+					    contents, rel->r_offset,
-+					    relocation, rel->r_addend);
-+	      break;
-+	    case R_NIOS2_TLS_LDM16:
-+	      {
-+		bfd_vma off;
-+
-+		if (htab->sgot == NULL)
-+		  abort ();
-+
-+		off = htab->tls_ldm_got.offset;
-+
-+		if ((off & 1) != 0)
-+		  off &= ~1;
-+		else
-+		  {
-+		    /* If we don't know the module number, create a relocation
-+		       for it.  */
-+		    if (info->shared)
-+		      {
-+			Elf_Internal_Rela outrel;
-+			bfd_byte *loc;
-+
-+			if (htab->srelgot == NULL)
-+			  abort ();
-+
-+			outrel.r_addend = 0;
-+			outrel.r_offset = (htab->sgot->output_section->vma
-+					   + htab->sgot->output_offset
-+					   + off);
-+			outrel.r_info = ELF32_R_INFO (0, R_NIOS2_TLS_DTPMOD);
-+
-+			loc = htab->srelgot->contents;
-+			loc += (htab->srelgot->reloc_count++
-+				* sizeof (Elf32_External_Rela));
-+			bfd_elf32_swap_reloca_out (output_bfd, &outrel, loc);
-+		      }
-+		    else
-+		      bfd_put_32 (output_bfd, 1,
-+				  htab->sgot->contents + off);
-+
-+		    htab->tls_ldm_got.offset |= 1;
-+		  }
-+
-+		relocation = (htab->sgot->output_offset + off);
-+
-+		r = _bfd_final_link_relocate (howto, input_bfd,
-+					      input_section, contents,
-+					      rel->r_offset, relocation,
-+					      rel->r_addend);
-+	      }
-+
-+	      break;
-+	    case R_NIOS2_TLS_GD16:
-+            case R_NIOS2_TLS_IE16:
-+	      {
-+		bfd_vma off;
-+		int indx;
-+		char tls_type;
-+
-+		if (htab->sgot == NULL)
-+		  abort ();
-+
-+		indx = 0;
-+		if (h != NULL)
-+		  {
-+		    bfd_boolean dyn;
-+		    dyn = htab->root.dynamic_sections_created;
-+		    if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info->shared, h)
-+			&& (!info->shared
-+			    || !SYMBOL_REFERENCES_LOCAL (info, h)))
-+		      {
-+			unresolved_reloc = FALSE;
-+			indx = h->dynindx;
-+		      }
-+		    off = h->got.offset;
-+		    tls_type = (((struct elf32_nios2_link_hash_entry *) h)
-+				->tls_type);
-+		  }
-+		else
-+		  {
-+		    if (local_got_offsets == NULL)
-+		      abort ();
-+		    off = local_got_offsets[r_symndx];
-+		    tls_type = (elf32_nios2_local_got_tls_type (input_bfd)
-+				[r_symndx]);
-+		  }
-+
-+		if (tls_type == GOT_UNKNOWN)
-+		  abort ();
-+
-+		if ((off & 1) != 0)
-+		  off &= ~1;
-+		else
-+		  {
-+		    bfd_boolean need_relocs = FALSE;
-+		    Elf_Internal_Rela outrel;
-+		    bfd_byte *loc = NULL;
-+		    int cur_off = off;
-+
-+		    /* The GOT entries have not been initialized yet.  Do it
-+		       now, and emit any relocations.  If both an IE GOT and a
-+		       GD GOT are necessary, we emit the GD first.  */
-+
-+		    if ((info->shared || indx != 0)
-+			&& (h == NULL
-+			    || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
-+			    || h->root.type != bfd_link_hash_undefweak))
-+		      {
-+			need_relocs = TRUE;
-+			if (htab->srelgot == NULL)
-+			  abort ();
-+			loc = htab->srelgot->contents;
-+			loc += (htab->srelgot->reloc_count *
-+				sizeof (Elf32_External_Rela));
-+		      }
-+
-+		    if (tls_type & GOT_TLS_GD)
-+		      {
-+			if (need_relocs)
-+			  {
-+			    outrel.r_addend = 0;
-+			    outrel.r_offset = (htab->sgot->output_section->vma
-+					       + htab->sgot->output_offset
-+					       + cur_off);
-+			    outrel.r_info = ELF32_R_INFO (indx,
-+							  R_NIOS2_TLS_DTPMOD);
-+
-+			    bfd_elf32_swap_reloca_out (output_bfd, &outrel,
-+						       loc);
-+			    htab->srelgot->reloc_count++;
-+			    loc += sizeof (Elf32_External_Rela);
-+
-+			    if (indx == 0)
-+			      bfd_put_32 (output_bfd,
-+					  (relocation - dtpoff_base (info) -
-+					   DTP_OFFSET),
-+					  htab->sgot->contents + cur_off + 4);
-+			    else
-+			      {
-+				outrel.r_addend = 0;
-+				outrel.r_info = ELF32_R_INFO (indx,
-+				  R_NIOS2_TLS_DTPREL);
-+				outrel.r_offset += 4;
-+
-+				bfd_elf32_swap_reloca_out (output_bfd, &outrel,
-+							   loc);
-+				htab->srelgot->reloc_count++;
-+				loc += sizeof (Elf32_External_Rela);
-+			      }
-+			  }
-+			else
-+			  {
-+			    /* If we are not emitting relocations for a
-+			       general dynamic reference, then we must be in a
-+			       static link or an executable link with the
-+			       symbol binding locally.  Mark it as belonging
-+			       to module 1, the executable.  */
-+			    bfd_put_32 (output_bfd, 1,
-+					htab->sgot->contents + cur_off);
-+			    bfd_put_32 (output_bfd, (relocation -
-+						     dtpoff_base (info) -
-+						     DTP_OFFSET),
-+					htab->sgot->contents + cur_off + 4);
-+			  }
-+
-+			cur_off += 8;
-+		      }
-+
-+		    if (tls_type & GOT_TLS_IE)
-+		      {
-+			if (need_relocs)
-+			  {
-+			    if (indx == 0)
-+			      outrel.r_addend = (relocation -
-+						 dtpoff_base (info));
-+			    else
-+			      outrel.r_addend = 0;
-+			    outrel.r_offset = (htab->sgot->output_section->vma
-+					       + htab->sgot->output_offset
-+					       + cur_off);
-+			    outrel.r_info = ELF32_R_INFO (indx,
-+							  R_NIOS2_TLS_TPREL);
-+
-+			    bfd_elf32_swap_reloca_out (output_bfd, &outrel,
-+						       loc);
-+			    htab->srelgot->reloc_count++;
-+			    loc += sizeof (Elf32_External_Rela);
-+			  }
-+			else
-+			  bfd_put_32 (output_bfd, (tpoff (info, relocation)
-+						   - TP_OFFSET),
-+				      htab->sgot->contents + cur_off);
-+			cur_off += 4;
-+		      }
-+
-+		    if (h != NULL)
-+		      h->got.offset |= 1;
-+		    else
-+		      local_got_offsets[r_symndx] |= 1;
-+		  }
-+
-+		if ((tls_type & GOT_TLS_GD) && r_type != R_NIOS2_TLS_GD16)
-+		  off += 8;
-+		relocation = (htab->sgot->output_offset + off);
-+
-+		r = _bfd_final_link_relocate (howto, input_bfd, input_section,
-+					      contents, rel->r_offset,
-+					      relocation, rel->r_addend);
-+	      }
-+
-+	      break;
-+            case R_NIOS2_TLS_LE16:
-+	      if (info->shared)
-+		{
-+		  (*_bfd_error_handler)
-+		    (_("%B(%A+0x%lx): R_NIOS2_TLS_LE16 relocation not "
-+		       "permitted in shared object"),
-+		     input_bfd, input_section,
-+		     (long) rel->r_offset, howto->name);
-+		  return FALSE;
-+		}
-+	      else
-+		relocation = tpoff (info, relocation) - TP_OFFSET;
-+
-+	      r = _bfd_final_link_relocate (howto, input_bfd, input_section,
-+					    contents, rel->r_offset,
-+					    relocation, rel->r_addend);
-+	      break;
-+
-+	    case R_NIOS2_BFD_RELOC_32:
-+	      if (info->shared
-+		  && (input_section->flags & SEC_ALLOC) != 0
-+		  && (h == NULL
-+		      || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
-+		      || h->root.type != bfd_link_hash_undefweak))
-+		{
-+		  Elf_Internal_Rela outrel;
-+		  bfd_byte *loc;
-+		  bfd_boolean skip, relocate;
-+
-+		  /* When generating a shared object, these relocations
-+		     are copied into the output file to be resolved at run
-+		     time.  */
-+
-+		  skip = FALSE;
-+		  relocate = FALSE;
-+
-+		  outrel.r_offset =
-+		    _bfd_elf_section_offset (output_bfd, info, input_section,
-+					     rel->r_offset);
-+		  if (outrel.r_offset == (bfd_vma) -1)
-+		    skip = TRUE;
-+		  else if (outrel.r_offset == (bfd_vma) -2)
-+		    skip = TRUE, relocate = TRUE;
-+		  outrel.r_offset += (input_section->output_section->vma
-+				      + input_section->output_offset);
-+
-+		  if (skip)
-+		    memset (&outrel, 0, sizeof outrel);
-+		  else if (h != NULL
-+			   && h->dynindx != -1
-+			   && (!info->shared
-+			       || !info->symbolic
-+			       || !h->def_regular))
-+		    {
-+		      outrel.r_info = ELF32_R_INFO (h->dynindx, r_type);
-+		      outrel.r_addend = rel->r_addend;
-+		    }
-+		  else
-+		    {
-+		      /* This symbol is local, or marked to become local.  */
-+		      outrel.r_addend = relocation + rel->r_addend;
-+		      relocate = TRUE;
-+		      outrel.r_info = ELF32_R_INFO (0, R_NIOS2_RELATIVE);
-+		    }
-+
-+		  sreloc = elf_section_data (input_section)->sreloc;
-+		  if (sreloc == NULL)
-+		    abort ();
-+
-+		  loc = sreloc->contents;
-+		  loc += sreloc->reloc_count++ * sizeof (Elf32_External_Rela);
-+		  bfd_elf32_swap_reloca_out (output_bfd, &outrel, loc);
-+
-+		  /* This reloc will be computed at runtime, so there's no
-+		     need to do anything now, except for R_NIOS2_BFD_RELOC_32
-+		     relocations that have been turned into
-+		     R_NIOS2_RELATIVE.  */
-+		  if (!relocate)
-+		    break;
-+		}
-+
-+              r = _bfd_final_link_relocate (howto, input_bfd,
-+                                            input_section, contents,
-+                                            rel->r_offset, relocation,
-+                                            rel->r_addend);
-+	      break;
-+
-+	    case R_NIOS2_TLS_DTPREL:
-+	      relocation -= dtpoff_base (info);
-+	      /* Fall through.  */
-+
-+	    default:
-+	      r = _bfd_final_link_relocate (howto, input_bfd,
-+					    input_section, contents,
-+					    rel->r_offset, relocation,
-+					    rel->r_addend);
-+	      break;
-+	    }
-+	}
-+      else
-+	{
-+	  r = bfd_reloc_notsupported;
-+	}
-+
-+      if (r != bfd_reloc_ok)
-+	{
-+	  if (h != NULL)
-+	    name = h->root.root.string;
-+	  else
-+	    {
-+	      name = (bfd_elf_string_from_elf_section
-+		      (input_bfd, symtab_hdr->sh_link, sym->st_name));
-+	      if (name == NULL || *name == '\0')
-+		name = bfd_section_name (input_bfd, sec);
-+	    }
-+
-+	  switch (r)
-+	    {
-+	    case bfd_reloc_overflow:
-+	      r = info->callbacks->reloc_overflow
-+		(info, NULL, name, howto->name, (bfd_vma) 0,
-+		 input_bfd, input_section, rel->r_offset);
-+	      break;
-+
-+	    case bfd_reloc_undefined:
-+	      r = info->callbacks->undefined_symbol
-+		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
-+	      break;
-+
-+	    case bfd_reloc_outofrange:
-+	      if (msg == NULL)
-+		msg = _("relocation out of range");
-+	      break;
-+
-+	    case bfd_reloc_notsupported:
-+	      if (msg == NULL)
-+		msg = _("unsupported relocation");
-+	      break;
-+
-+	    case bfd_reloc_dangerous:
-+	      if (msg == NULL)
-+		msg = _("dangerous relocation");
-+	      break;
-+
-+	    default:
-+	      if (msg == NULL)
-+		msg = _("unknown error");
-+	      break;
-+	    }
-+
-+	  if (msg)
-+	    {
-+	      r = info->callbacks->warning
-+		(info, msg, name, input_bfd, input_section, rel->r_offset);
-+	      return linker_force_make_executable;
-+	    }
-+	}
-+    }
-+  return TRUE;
-+}
-+
-+
-+
-+/* Handle an NIOS2 specific section when reading an object file.  This
-+   is called when elfcode.h finds a section with an unknown type.
-+   FIXME: We need to handle the SHF_NIOS2_GPREL flag.  */
-+
-+static bfd_boolean
-+nios2_elf32_section_from_shdr (bfd *abfd,
-+     Elf_Internal_Shdr *hdr, const char *name, int shindex)
-+{
-+  asection *newsect;
-+
-+  /* NG - I'm keeping this code commented out at the moment
-+     in case we add a .mdebug section.  */
-+
-+  /*
-+     switch (hdr->sh_type)
-+     {
-+     case SHT_NIOS2_DEBUG:
-+     if (strcmp (name, ".mdebug") != 0)
-+     return FALSE;
-+     break;
-+     default:
-+     return FALSE;
-+     }
-+   */
-+
-+  if (!_bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
-+    return FALSE;
-+
-+  newsect = hdr->bfd_section;
-+
-+  /* ditto */
-+  /*
-+     if (hdr->sh_type == SHT_NIOS2_DEBUG)
-+     {
-+     if (! bfd_set_section_flags (abfd, newsect,
-+     (bfd_get_section_flags (abfd, newsect)
-+     | SEC_DEBUGGING)))
-+     return FALSE;
-+     }
-+   */
-+  return TRUE;
-+}
-+
-+/* Convert NIOS2 specific section flags to bfd internal section flags.  */
-+
-+static bfd_boolean
-+nios2_elf32_section_flags (flagword *flags, const Elf_Internal_Shdr *hdr)
-+{
-+  if (hdr->sh_flags & SHF_NIOS2_GPREL)
-+    *flags |= SEC_SMALL_DATA;
-+
-+  return TRUE;
-+}
-+
-+/* Set the correct type for an NIOS2 ELF section.  We do this by the
-+   section name, which is a hack, but ought to work.  */
-+
-+static bfd_boolean
-+nios2_elf32_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
-+     Elf_Internal_Shdr *hdr, asection *sec)
-+{
-+  register const char *name;
-+
-+  name = bfd_get_section_name (abfd, sec);
-+
-+  if (strcmp (name, ".mdebug") == 0)
-+    {
-+      /* we don't yet have an .mdebug section, but I'm leaving this here
-+         in case we ever do
-+         hdr->sh_type = SHT_NIOS2_DEBUG;
-+
-+         if ((abfd->flags & DYNAMIC) != 0 )
-+         hdr->sh_entsize = 0;
-+         else
-+         hdr->sh_entsize = 1;
-+       */
-+    }
-+  else if ((sec->flags & SEC_SMALL_DATA)
-+	   || strcmp (name, ".sdata") == 0
-+	   || strcmp (name, ".sbss") == 0
-+	   || strcmp (name, ".lit4") == 0 || strcmp (name, ".lit8") == 0)
-+    hdr->sh_flags |= SHF_NIOS2_GPREL;
-+
-+  return TRUE;
-+}
-+
-+/* Create .got, .gotplt, and .rela.got sections in DYNOBJ, and set up
-+   shortcuts to them in our hash table.  */
-+
-+static bfd_boolean
-+create_got_section (bfd *dynobj, struct bfd_link_info *info)
-+{
-+  struct elf32_nios2_link_hash_table *htab;
-+
-+  htab = elf32_nios2_hash_table (info);
-+
-+  if (! _bfd_elf_create_got_section (dynobj, info))
-+    return FALSE;
-+
-+  htab->sgot = bfd_get_section_by_name (dynobj, ".got");
-+  htab->sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
-+  if (!htab->sgot || !htab->sgotplt)
-+    abort ();
-+
-+  /* In order for the two loads in .PLTresolve to share the same %hiadj,
-+     _GLOBAL_OFFSET_TABLE_ must be aligned to a 16-byte boundary. */
-+  if (!bfd_set_section_alignment (dynobj, htab->sgotplt, 4))
-+    return FALSE;
-+
-+  htab->srelgot = bfd_make_section_with_flags (dynobj,
-+                                               ".rela.got",
-+                                               (SEC_ALLOC | SEC_LOAD
-+                                                | SEC_HAS_CONTENTS
-+                                                | SEC_IN_MEMORY
-+                                                | SEC_LINKER_CREATED
-+                                                | SEC_READONLY));
-+  if (htab->srelgot == NULL
-+      || ! bfd_set_section_alignment (dynobj, htab->srelgot, 2))
-+    return FALSE;
-+  return TRUE;
-+}
-+
-+/* Create .plt, .rela.plt, .got, .got.plt, .rela.got, .dynbss, and
-+   .rela.bss sections in DYNOBJ, and set up shortcuts to them in our
-+   hash table.  */
-+
-+static bfd_boolean
-+nios2_elf32_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
-+{
-+  struct elf32_nios2_link_hash_table *htab;
-+
-+  htab = elf32_nios2_hash_table (info);
-+  if (!htab->sgot && !create_got_section (dynobj, info))
-+    return FALSE;
-+
-+  _bfd_elf_create_dynamic_sections (dynobj, info);
-+
-+  htab->splt = bfd_get_section_by_name (dynobj, ".plt");
-+
-+  /* In order for the two loads in a shared object .PLTresolve to share the
-+     same %hiadj, the start of the PLT (as well as the GOT) must be aligned
-+     to a 16-byte boundary.  This is because the addresses for these loads
-+     include the -(.plt+4) PIC correction.  */
-+  if (!bfd_set_section_alignment (dynobj, htab->splt, 4))
-+    return FALSE;
-+
-+  htab->srelplt = bfd_get_section_by_name (dynobj, ".rela.plt");
-+  htab->sdynbss = bfd_get_section_by_name (dynobj, ".dynbss");
-+  if (!htab->splt || !htab->srelplt || !htab->sdynbss)
-+    return FALSE;
-+  if (!info->shared)
-+    {
-+      htab->srelbss = bfd_get_section_by_name (dynobj, ".rela.bss");
-+      if (!htab->srelbss)
-+        return FALSE;
-+    }
-+
-+  return TRUE;
-+}
-+
-+/* Copy the extra info we tack onto an elf_link_hash_entry.  */
-+
-+static void
-+nios2_elf32_copy_indirect_symbol (struct bfd_link_info *info,
-+                                  struct elf_link_hash_entry *dir,
-+                                  struct elf_link_hash_entry *ind)
-+{
-+  struct elf32_nios2_link_hash_entry *edir, *eind;
-+
-+  edir = (struct elf32_nios2_link_hash_entry *) dir;
-+  eind = (struct elf32_nios2_link_hash_entry *) ind;
-+
-+  if (eind->dyn_relocs != NULL)
-+    {
-+      if (edir->dyn_relocs != NULL)
-+	{
-+          struct elf32_nios2_dyn_relocs **pp;
-+          struct elf32_nios2_dyn_relocs *p;
-+
-+          /* Add reloc counts against the indirect sym to the direct sym
-+             list.  Merge any entries against the same section.  */
-+          for (pp = &eind->dyn_relocs; (p = *pp) != NULL; )
-+            {
-+              struct elf32_nios2_dyn_relocs *q;
-+
-+              for (q = edir->dyn_relocs; q != NULL; q = q->next)
-+		if (q->sec == p->sec)
-+                  {
-+                    q->pc_count += p->pc_count;
-+                    q->count += p->count;
-+                    *pp = p->next;
-+                    break;
-+                  }
-+              if (q == NULL)
-+                pp = &p->next;
-+            }
-+          *pp = edir->dyn_relocs;
-+        }
-+
-+      edir->dyn_relocs = eind->dyn_relocs;
-+      eind->dyn_relocs = NULL;
-+    }
-+
-+  if (ind->root.type == bfd_link_hash_indirect
-+      && dir->got.refcount <= 0)
-+    {
-+      edir->tls_type = eind->tls_type;
-+      eind->tls_type = GOT_UNKNOWN;
-+    }
-+
-+  edir->got_types_used |= eind->got_types_used;
-+
-+  _bfd_elf_link_hash_copy_indirect (info, dir, ind);
-+}
-+
-+/* Look through the relocs for a section during the first phase.  */
-+
-+static bfd_boolean
-+nios2_elf32_check_relocs (bfd *abfd, struct bfd_link_info *info,
-+                          asection *sec, const Elf_Internal_Rela *relocs)
-+{
-+  bfd *dynobj;
-+  Elf_Internal_Shdr *symtab_hdr;
-+  struct elf_link_hash_entry **sym_hashes, **sym_hashes_end;
-+  const Elf_Internal_Rela *rel;
-+  const Elf_Internal_Rela *rel_end;
-+  struct elf32_nios2_link_hash_table *htab;
-+  asection *sgot;
-+  asection *srelgot;
-+  asection *sreloc = NULL;
-+  bfd_signed_vma *local_got_refcounts;
-+
-+  if (info->relocatable)
-+    return TRUE;
-+
-+  dynobj = elf_hash_table (info)->dynobj;
-+  symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
-+  sym_hashes = elf_sym_hashes (abfd);
-+  sym_hashes_end =
-+    sym_hashes + symtab_hdr->sh_size / sizeof (Elf32_External_Sym);
-+  if (!elf_bad_symtab (abfd))
-+    sym_hashes_end -= symtab_hdr->sh_info;
-+  local_got_refcounts = elf_local_got_refcounts (abfd);
-+
-+  htab = elf32_nios2_hash_table (info);
-+  sgot = htab->sgot;
-+  srelgot = htab->srelgot;
-+
-+  rel_end = relocs + sec->reloc_count;
-+  for (rel = relocs; rel < rel_end; rel++)
-+    {
-+      unsigned int r_type;
-+      struct elf_link_hash_entry *h;
-+      unsigned long r_symndx;
-+
-+      r_symndx = ELF32_R_SYM (rel->r_info);
-+      if (r_symndx < symtab_hdr->sh_info)
-+	h = NULL;
-+      else
-+	{
-+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
-+	  while (h->root.type == bfd_link_hash_indirect
-+		 || h->root.type == bfd_link_hash_warning)
-+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
-+	}
-+
-+      r_type = ELF32_R_TYPE (rel->r_info);
-+
-+      switch (r_type)
-+	{
-+        case R_NIOS2_GOT16:
-+	case R_NIOS2_CALL16:
-+	case R_NIOS2_TLS_GD16:
-+	case R_NIOS2_TLS_IE16:
-+	  /* This symbol requires a global offset table entry.  */
-+	  {
-+	    int tls_type, old_tls_type;
-+
-+	    switch (r_type)
-+	      {
-+	      default:
-+	      case R_NIOS2_GOT16:
-+	      case R_NIOS2_CALL16:
-+		tls_type = GOT_NORMAL;
-+		break;
-+	      case R_NIOS2_TLS_GD16:
-+		tls_type = GOT_TLS_GD;
-+		break;
-+	      case R_NIOS2_TLS_IE16:
-+		tls_type = GOT_TLS_IE;
-+		break;
-+	      }
-+
-+	    if (dynobj == NULL)
-+	      {
-+		/* Create the .got section.  */
-+		elf_hash_table (info)->dynobj = dynobj = abfd;
-+		nios2_elf32_create_dynamic_sections (dynobj, info);
-+	      }
-+
-+	    if (sgot == NULL)
-+	      {
-+		sgot = htab->sgot;
-+		BFD_ASSERT (sgot != NULL);
-+	      }
-+
-+	    if (srelgot == NULL
-+		&& (h != NULL || info->shared))
-+	      {
-+		srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
-+		BFD_ASSERT (srelgot != NULL);
-+	      }
-+
-+	    if (h != NULL)
-+	      {
-+		struct elf32_nios2_link_hash_entry *eh =
-+		  (struct elf32_nios2_link_hash_entry *)h;
-+		h->got.refcount++;
-+		old_tls_type = elf32_nios2_hash_entry(h)->tls_type;
-+		if (r_type == R_NIOS2_CALL16)
-+		  {
-+		    /* Make sure a plt entry is created for this symbol if it
-+		       turns out to be a function defined by a dynamic object.
-+		    */
-+		    h->plt.refcount++;
-+
-+		    h->needs_plt = 1;
-+
-+		    h->type = STT_FUNC;
-+
-+		    eh->got_types_used |= CALL16_USED;
-+		  }
-+		else
-+		  eh->got_types_used |= GOT16_USED;
-+	      }
-+	    else
-+	      {
-+		/* This is a global offset table entry for a local symbol.  */
-+		if (local_got_refcounts == NULL)
-+		  {
-+		    bfd_size_type size;
-+
-+		    size = symtab_hdr->sh_info;
-+		    size *= (sizeof (bfd_signed_vma) + sizeof(char));
-+		    local_got_refcounts = ((bfd_signed_vma *)
-+					   bfd_zalloc (abfd, size));
-+		    if (local_got_refcounts == NULL)
-+		      return FALSE;
-+		    elf_local_got_refcounts (abfd) = local_got_refcounts;
-+		    elf32_nios2_local_got_tls_type (abfd) =
-+		      (char *) (local_got_refcounts + symtab_hdr->sh_info);
-+		  }
-+		local_got_refcounts[r_symndx]++;
-+		old_tls_type =
-+		  elf32_nios2_local_got_tls_type (abfd) [r_symndx];
-+	      }
-+
-+	    /* We will already have issued an error message if there is a
-+               TLS / non-TLS mismatch, based on the symbol type.  We don't
-+               support any linker relaxations.  So just combine any TLS
-+               types needed.  */
-+	    if (old_tls_type != GOT_UNKNOWN && old_tls_type != GOT_NORMAL
-+		&& tls_type != GOT_NORMAL)
-+	      tls_type |= old_tls_type;
-+
-+            if (old_tls_type != tls_type)
-+              {
-+                if (h != NULL)
-+                  elf32_nios2_hash_entry (h)->tls_type = tls_type;
-+                else
-+                  elf32_nios2_local_got_tls_type (abfd) [r_symndx] = tls_type;
-+	      }
-+	  }
-+	  /* Fall through */
-+	case R_NIOS2_TLS_LDM16:
-+	  if (r_type == R_NIOS2_TLS_LDM16)
-+	    htab->tls_ldm_got.refcount++;
-+
-+          if (htab->sgot == NULL)
-+            {
-+              if (htab->root.dynobj == NULL)
-+                htab->root.dynobj = abfd;
-+              if (!create_got_section (htab->root.dynobj, info))
-+                return FALSE;
-+            }
-+	  break;
-+
-+          /* This relocation describes the C++ object vtable hierarchy.
-+             Reconstruct it for later use during GC.  */
-+        case R_NIOS2_GNU_VTINHERIT:
-+	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-+            return FALSE;
-+          break;
-+
-+          /* This relocation describes which C++ vtable entries are actually
-+             used.  Record for later use during GC.  */
-+	case R_NIOS2_GNU_VTENTRY:
-+          if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-+            return FALSE;
-+          break;
-+
-+	case R_NIOS2_BFD_RELOC_32:
-+	case R_NIOS2_CALL26:
-+	case R_NIOS2_HIADJ16:
-+	case R_NIOS2_LO16:
-+
-+	  if (h != NULL)
-+	    {
-+	      /* If this reloc is in a read-only section, we might
-+                   need a copy reloc.  We can't check reliably at this
-+                   stage whether the section is read-only, as input
-+                   sections have not yet been mapped to output sections.
-+                   Tentatively set the flag for now, and correct in
-+                   adjust_dynamic_symbol.  */
-+	      if (!info->shared)
-+		h->non_got_ref = 1;
-+
-+	      /* Make sure a plt entry is created for this symbol if it
-+		 turns out to be a function defined by a dynamic object.  */
-+	      h->plt.refcount++;
-+
-+	      if (r_type == R_NIOS2_CALL26)
-+		h->needs_plt = 1;
-+	    }
-+
-+	  /* 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
-+	      && (r_type == R_NIOS2_BFD_RELOC_32
-+		  || (h != NULL && ! h->needs_plt
-+		      && (! info->symbolic || ! h->def_regular))))
-+	    {
-+	      struct elf32_nios2_dyn_relocs *p;
-+	      struct elf32_nios2_dyn_relocs **head;
-+
-+	      /* When creating a shared object, we must copy these
-+		 reloc types into the output file.  We create a reloc
-+		 section in dynobj and make room for this reloc.  */
-+	      if (sreloc == NULL)
-+		{
-+		  const char *name;
-+
-+		  name = (bfd_elf_string_from_elf_section
-+			  (abfd,
-+			   elf_elfheader (abfd)->e_shstrndx,
-+			   elf_section_data (sec)->rel_hdr.sh_name));
-+		  if (name == NULL)
-+		    return FALSE;
-+
-+		  BFD_ASSERT (CONST_STRNEQ (name, ".rela")
-+			      && strcmp (bfd_get_section_name (abfd, sec),
-+					 name + 5) == 0);
-+
-+		  sreloc = bfd_get_section_by_name (dynobj, name);
-+		  if (sreloc == NULL)
-+		    {
-+		      sreloc = bfd_make_section_with_flags (
-+		        dynobj,
-+			name,
-+			(SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS |
-+			 SEC_IN_MEMORY | SEC_LINKER_CREATED | SEC_READONLY));
-+		      if (sreloc == NULL ||
-+			  !bfd_set_section_alignment (dynobj, sreloc, 2))
-+			return FALSE;
-+		    }
-+		  elf_section_data (sec)->sreloc = sreloc;
-+		}
-+
-+              /* If this is a global symbol, we count the number of
-+                 relocations we need for this symbol.  */
-+              if (h != NULL)
-+                head = &((struct elf32_nios2_link_hash_entry *) h)->dyn_relocs;
-+              else
-+                {
-+                  /* Track dynamic relocs needed for local syms too.
-+                     We really need local syms available to do this
-+                     easily.  Oh well.  */
-+
-+                  asection *s;
-+                  void *vpp;
-+                  Elf_Internal_Sym *isym;
-+
-+                  isym = bfd_sym_from_r_symndx (&htab->sym_sec,
-+                                                abfd, r_symndx);
-+                  if (isym == NULL)
-+                    return FALSE;
-+
-+                  s = bfd_section_from_elf_index (abfd, isym->st_shndx);
-+                  if (s == NULL)
-+                    s = sec;
-+
-+                  vpp = &elf_section_data (s)->local_dynrel;
-+                  head = (struct _bfd_nios2_elf_dyn_relocs **) vpp;
-+                }
-+
-+              p = *head;
-+              if (p == NULL || p->sec != sec)
-+                {
-+                  bfd_size_type amt = sizeof *p;
-+                  p = ((struct elf32_nios2_dyn_relocs *)
-+                       bfd_alloc (htab->root.dynobj, amt));
-+                  if (p == NULL)
-+                    return FALSE;
-+                  p->next = *head;
-+                  *head = p;
-+                  p->sec = sec;
-+                  p->count = 0;
-+                  p->pc_count = 0;
-+                }
-+
-+              p->count += 1;
-+
-+	    }
-+	  break;
-+	}
-+    }
-+
-+  return TRUE;
-+}
-+
-+
-+/* Return the section that should be marked against GC for a given
-+   relocation.  */
-+
-+asection *
-+nios2_elf32_gc_mark_hook (asection *sec,
-+			  struct bfd_link_info *info ATTRIBUTE_UNUSED,
-+			  Elf_Internal_Rela *rel,
-+			  struct elf_link_hash_entry *h,
-+			  Elf_Internal_Sym *sym)
-+{
-+  if (h != NULL)
-+    switch (ELF32_R_TYPE (rel->r_info))
-+      {
-+      case R_NIOS2_GNU_VTINHERIT:
-+      case R_NIOS2_GNU_VTENTRY:
-+	return NULL;
-+      }
-+  return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym);
-+}
-+
-+/* Update the got entry reference counts for the section being removed.  */
-+
-+static bfd_boolean
-+nios2_elf32_gc_sweep_hook (bfd *abfd,
-+	  	  	   struct bfd_link_info *info,
-+			   asection *sec,
-+			   const Elf_Internal_Rela *relocs)
-+{
-+  Elf_Internal_Shdr *symtab_hdr;
-+  struct elf_link_hash_entry **sym_hashes;
-+  bfd_signed_vma *local_got_refcounts;
-+  const Elf_Internal_Rela *rel, *relend;
-+  bfd *dynobj;
-+  asection *sgot;
-+  asection *srelgot;
-+  struct elf32_nios2_link_hash_table *htab;
-+
-+  htab = elf32_nios2_hash_table (info);
-+  sgot = htab->sgot;
-+  srelgot = htab->srelgot;
-+
-+  elf_section_data (sec)->local_dynrel = NULL;
-+
-+  dynobj = elf_hash_table (info)->dynobj;
-+  if (dynobj == NULL)
-+    return TRUE;
-+
-+  symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
-+  sym_hashes = elf_sym_hashes (abfd);
-+  local_got_refcounts = elf_local_got_refcounts (abfd);
-+
-+  relend = relocs + sec->reloc_count;
-+  for (rel = relocs; rel < relend; rel++)
-+    {
-+      unsigned long r_symndx;
-+      struct elf_link_hash_entry *h = NULL;
-+      int r_type;
-+
-+      r_symndx = ELF32_R_SYM (rel->r_info);
-+      if (r_symndx >= symtab_hdr->sh_info)
-+	{
-+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
-+	  while (h->root.type == bfd_link_hash_indirect
-+		 || h->root.type == bfd_link_hash_warning)
-+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
-+	}
-+
-+      r_type = ELF32_R_TYPE (rel->r_info);
-+      switch (r_type)
-+	{
-+	case R_NIOS2_GOT16:
-+        case R_NIOS2_CALL16:
-+	  if (h != NULL)
-+	    {
-+	      if (h->got.refcount > 0)
-+		--h->got.refcount;
-+	    }
-+	  else if (local_got_refcounts != NULL)
-+	    {
-+	      if (local_got_refcounts[r_symndx] > 0)
-+		--local_got_refcounts[r_symndx];
-+	    }
-+	  break;
-+
-+	case R_NIOS2_PCREL_LO:
-+	case R_NIOS2_PCREL_HA:
-+	case R_NIOS2_BFD_RELOC_32:
-+	case R_NIOS2_CALL26:
-+	  if (h != NULL)
-+	    {
-+              struct elf32_nios2_link_hash_entry *eh;
-+              struct elf32_nios2_dyn_relocs **pp;
-+              struct elf32_nios2_dyn_relocs *p;
-+
-+              eh = (struct elf32_nios2_link_hash_entry *) h;
-+
-+	      if (h->plt.refcount > 0)
-+		--h->plt.refcount;
-+
-+	      if (r_type == R_NIOS2_PCREL_LO || r_type == R_NIOS2_PCREL_HA ||
-+		  r_type == R_NIOS2_BFD_RELOC_32)
-+		{
-+		  for (pp = &eh->dyn_relocs; (p = *pp) != NULL;
-+		       pp = &p->next)
-+		    if (p->sec == sec)
-+		      {
-+			p->count -= 1;
-+			if (p->count == 0)
-+			  *pp = p->next;
-+			break;
-+		      }
-+		}
-+	    }
-+	  break;
-+
-+	default:
-+	  break;
-+	}
-+    }
-+
-+  return TRUE;
-+}
-+
-+/* Install 16-bit immediate value VALUE at offset OFFSET into section SEC.  */
-+
-+static void
-+nios2_elf32_install_imm16 (asection *sec, bfd_vma offset, bfd_vma value)
-+{
-+  bfd_vma word = bfd_get_32 (sec->owner, sec->contents + offset);
-+
-+  BFD_ASSERT(value <= 0xffff);
-+
-+  bfd_put_32 (sec->owner, word | ((value & 0xffff) << 6),
-+              sec->contents + offset);
-+}
-+
-+/* Install COUNT 32-bit values DATA starting at offset OFFSET into section SEC.
-+ */
-+
-+static void
-+nios2_elf32_install_data (asection *sec, const bfd_vma *data, bfd_vma offset,
-+			  int count)
-+{
-+  while (count--)
-+    {
-+      bfd_put_32 (sec->owner, *data, sec->contents + offset);
-+      offset += 4;
-+      ++data;
-+    }
-+}
-+
-+
-+/* Finish up dynamic symbol handling.  We set the contents of various
-+   dynamic sections here.  */
-+
-+static bfd_boolean
-+nios2_elf32_finish_dynamic_symbol (bfd * output_bfd,
-+				   struct bfd_link_info * info,
-+				   struct elf_link_hash_entry * h,
-+				   Elf_Internal_Sym * sym)
-+{
-+  struct elf32_nios2_link_hash_table *htab;
-+  struct elf32_nios2_link_hash_entry *eh =
-+    (struct elf32_nios2_link_hash_entry *)h;
-+  bfd *dynobj;
-+  int use_plt;
-+
-+  htab = elf32_nios2_hash_table (info);
-+
-+  dynobj = elf_hash_table (info)->dynobj;
-+
-+  if (h->plt.offset != (bfd_vma) -1)
-+    {
-+      asection *splt;
-+      asection *sgotplt;
-+      asection *srela;
-+      bfd_vma plt_index;
-+      bfd_vma got_offset;
-+      Elf_Internal_Rela rela;
-+      bfd_byte *loc;
-+      bfd_vma got_address;
-+
-+      /* This symbol has an entry in the procedure linkage table.  Set
-+	 it up.  */
-+
-+      BFD_ASSERT (h->dynindx != -1);
-+
-+      splt = htab->splt;
-+      sgotplt = htab->sgotplt;
-+      srela = htab->srelplt;
-+      BFD_ASSERT (splt != NULL && sgotplt != NULL && srela != NULL);
-+
-+      /* Emit the PLT entry.  */
-+      if (info->shared)
-+        {
-+	  nios2_elf32_install_data (splt, nios2_so_plt_entry, h->plt.offset,
-+				    3);
-+          plt_index = (h->plt.offset - 24) / 12;
-+          got_offset = (plt_index + 3) * 4;
-+          nios2_elf32_install_imm16 (splt, h->plt.offset,
-+                                     hiadj(plt_index * 4));
-+          nios2_elf32_install_imm16 (splt, h->plt.offset + 4,
-+                                     (plt_index * 4) & 0xffff);
-+          nios2_elf32_install_imm16 (splt, h->plt.offset + 8,
-+                                     0xfff4 - h->plt.offset);
-+	  got_address = (sgotplt->output_section->vma + sgotplt->output_offset
-+			 + got_offset);
-+
-+	  /* Fill in the entry in the global offset table.  There are no
-+	     res_n slots for a shared object PLT, instead the .got.plt entries
-+	     point to the PLT entries.  */
-+	  bfd_put_32 (output_bfd,
-+		      splt->output_section->vma + splt->output_offset
-+		      + h->plt.offset, sgotplt->contents + got_offset);
-+        }
-+      else
-+        {
-+          plt_index = (h->plt.offset - 28 - htab->res_n_size) / 12;
-+          got_offset = (plt_index + 3) * 4;
-+
-+	  nios2_elf32_install_data (splt, nios2_plt_entry, h->plt.offset, 3);
-+          got_address = (sgotplt->output_section->vma + sgotplt->output_offset
-+                         + got_offset);
-+          nios2_elf32_install_imm16 (splt, h->plt.offset, hiadj(got_address));
-+          nios2_elf32_install_imm16 (splt, h->plt.offset + 4,
-+                                     got_address & 0xffff);
-+
-+	  /* Fill in the entry in the global offset table.  */
-+	  bfd_put_32 (output_bfd,
-+		      splt->output_section->vma + splt->output_offset
-+		      + plt_index * 4, sgotplt->contents + got_offset);
-+        }
-+
-+      /* Fill in the entry in the .rela.plt section.  */
-+      rela.r_offset = got_address;
-+      rela.r_info = ELF32_R_INFO (h->dynindx, R_NIOS2_JUMP_SLOT);
-+      rela.r_addend = 0;
-+      loc = srela->contents + plt_index * sizeof (Elf32_External_Rela);
-+      bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
-+
-+      if (!h->def_regular)
-+	{
-+	  /* Mark the symbol as undefined, rather than as defined in
-+	     the .plt section.  Leave the value alone.  */
-+	  sym->st_shndx = SHN_UNDEF;
-+          /* If the symbol is weak, we do need to clear the value.
-+             Otherwise, the PLT entry would provide a definition for
-+             the symbol even if the symbol wasn't defined anywhere,
-+             and so the symbol would never be NULL.  */
-+          if (!h->ref_regular_nonweak)
-+            sym->st_value = 0;
-+	}
-+    }
-+
-+  use_plt = (eh->got_types_used == CALL16_USED &&
-+	     h->plt.offset != (bfd_vma) -1);
-+
-+  if (!use_plt && h->got.offset != (bfd_vma) -1
-+      && (elf32_nios2_hash_entry (h)->tls_type & GOT_TLS_GD) == 0
-+      && (elf32_nios2_hash_entry (h)->tls_type & GOT_TLS_IE) == 0)
-+    {
-+      asection *sgot;
-+      asection *srela;
-+      Elf_Internal_Rela rela;
-+      bfd_byte *loc;
-+      bfd_vma offset;
-+
-+      /* This symbol has an entry in the global offset table.  Set it
-+	 up.  */
-+
-+      sgot = htab->sgot;
-+      srela = htab->srelgot;
-+      BFD_ASSERT (sgot != NULL && srela != NULL);
-+
-+      offset = (h->got.offset & ~(bfd_vma) 1);
-+      rela.r_offset = (sgot->output_section->vma
-+		       + sgot->output_offset + offset);
-+
-+      /* If this is a -Bsymbolic link, and the symbol is defined
-+	 locally, we just want to emit a RELATIVE reloc.  Likewise if
-+	 the symbol was forced to be local because of a version file.
-+	 The entry in the global offset table will already have been
-+	 initialized in the relocate_section function.  */
-+
-+      if (info->shared && SYMBOL_REFERENCES_LOCAL (info, h))
-+	{
-+	  rela.r_info = ELF32_R_INFO (0, R_NIOS2_RELATIVE);
-+	  rela.r_addend = bfd_get_signed_32 (output_bfd,
-+					     (sgot->contents + offset));
-+	  bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + offset);
-+	}
-+      else
-+	{
-+	  bfd_put_32 (output_bfd, (bfd_vma) 0,
-+		      sgot->contents + offset);
-+	  rela.r_info = ELF32_R_INFO (h->dynindx, R_NIOS2_GLOB_DAT);
-+	  rela.r_addend = 0;
-+	}
-+
-+      loc = srela->contents;
-+      loc += srela->reloc_count++ * sizeof (Elf32_External_Rela);
-+      bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
-+    }
-+
-+  if (use_plt && h->got.offset != (bfd_vma) -1)
-+    {
-+      bfd_vma offset = (h->got.offset & ~(bfd_vma) 1);
-+      asection *sgot = htab->sgot;
-+      asection *splt = htab->splt;
-+      bfd_put_32 (output_bfd, (splt->output_section->vma + splt->output_offset
-+			       + h->plt.offset), sgot->contents + offset);
-+    }
-+
-+  if (h->needs_copy)
-+    {
-+      asection *s;
-+      Elf_Internal_Rela rela;
-+      bfd_byte *loc;
-+
-+      /* This symbol needs a copy reloc.  Set it up.  */
-+
-+      BFD_ASSERT (h->dynindx != -1
-+		  && (h->root.type == bfd_link_hash_defined
-+		      || h->root.type == bfd_link_hash_defweak));
-+
-+      s = bfd_get_section_by_name (h->root.u.def.section->owner,
-+				   ".rela.bss");
-+      BFD_ASSERT (s != NULL);
-+
-+      rela.r_offset = (h->root.u.def.value
-+		       + h->root.u.def.section->output_section->vma
-+		       + h->root.u.def.section->output_offset);
-+      rela.r_info = ELF32_R_INFO (h->dynindx, R_NIOS2_COPY);
-+      rela.r_addend = 0;
-+      loc = s->contents + s->reloc_count++ * sizeof (Elf32_External_Rela);
-+      bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
-+    }
-+
-+  /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute.  */
-+  if (strcmp (h->root.root.string, "_DYNAMIC") == 0
-+      || h == elf_hash_table (info)->hgot)
-+    sym->st_shndx = SHN_ABS;
-+
-+  return TRUE;
-+}
-+
-+/* Finish up the dynamic sections.  */
-+
-+static bfd_boolean
-+nios2_elf32_finish_dynamic_sections (bfd * output_bfd,
-+				     struct bfd_link_info * info)
-+{
-+  bfd *dynobj;
-+  asection *sgotplt;
-+  asection *sdyn;
-+  struct elf32_nios2_link_hash_table *htab;
-+
-+  htab = elf32_nios2_hash_table (info);
-+
-+  dynobj = elf_hash_table (info)->dynobj;
-+
-+  sgotplt = htab->sgotplt;
-+  BFD_ASSERT (sgotplt != NULL);
-+  sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
-+
-+  if (elf_hash_table (info)->dynamic_sections_created)
-+    {
-+      asection *splt;
-+      Elf32_External_Dyn *dyncon, *dynconend;
-+
-+      splt = htab->splt;
-+      BFD_ASSERT (splt != NULL && sdyn != NULL);
-+
-+      dyncon = (Elf32_External_Dyn *) sdyn->contents;
-+      dynconend = (Elf32_External_Dyn *) (sdyn->contents + sdyn->size);
-+      for (; dyncon < dynconend; dyncon++)
-+	{
-+	  Elf_Internal_Dyn dyn;
-+	  const char *name;
-+	  asection *s;
-+
-+	  bfd_elf32_swap_dyn_in (dynobj, dyncon, &dyn);
-+
-+	  switch (dyn.d_tag)
-+	    {
-+	    default:
-+	      break;
-+
-+	    case DT_PLTGOT:
-+	      name = ".got";
-+	      goto get_vma;
-+	    case DT_JMPREL:
-+	      name = ".rela.plt";
-+	    get_vma:
-+	      s = bfd_get_section_by_name (output_bfd, name);
-+	      BFD_ASSERT (s != NULL);
-+	      dyn.d_un.d_ptr = s->vma;
-+	      bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
-+	      break;
-+
-+	    case DT_PLTRELSZ:
-+	      s = bfd_get_section_by_name (output_bfd, ".rela.plt");
-+	      BFD_ASSERT (s != NULL);
-+	      dyn.d_un.d_val = s->size;
-+	      bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
-+	      break;
-+
-+	    case DT_RELASZ:
-+	      /* The procedure linkage table relocs (DT_JMPREL) should
-+		 not be included in the overall relocs (DT_RELA).
-+		 Therefore, we override the DT_RELASZ entry here to
-+		 make it not include the JMPREL relocs.  Since the
-+		 linker script arranges for .rela.plt to follow all
-+		 other relocation sections, we don't have to worry
-+		 about changing the DT_RELA entry.  */
-+	      s = bfd_get_section_by_name (output_bfd, ".rela.plt");
-+	      if (s != NULL)
-+		dyn.d_un.d_val -= s->size;
-+	      bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
-+	      break;
-+
-+	    case DT_NIOS2_GP:
-+	      s = bfd_get_section_by_name (output_bfd, ".got");
-+	      BFD_ASSERT (s != NULL);
-+	      dyn.d_un.d_ptr = s->vma + 0x7ff0;
-+	      bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
-+	      break;
-+	    }
-+	}
-+
-+      /* Fill in the first entry in the procedure linkage table.  */
-+      if (splt->size > 0)
-+	{
-+          bfd_vma got_address = (sgotplt->output_section->vma +
-+				 sgotplt->output_offset);
-+          if (info->shared)
-+            {
-+              bfd_vma corrected = got_address - (splt->output_section->vma +
-+						 splt->output_offset + 4);
-+	      nios2_elf32_install_data (splt, nios2_so_plt0_entry, 0, 6);
-+              nios2_elf32_install_imm16 (splt, 4, hiadj (corrected));
-+              nios2_elf32_install_imm16 (splt, 12, (corrected & 0xffff) + 4);
-+              nios2_elf32_install_imm16 (splt, 16, (corrected & 0xffff) + 8);
-+
-+   	      elf_section_data (splt->output_section)->this_hdr.sh_entsize
-+   	        = 24;
-+            }
-+          else
-+            {
-+	      /* Divide by 4 here, not 3 because we already corrected for the
-+		 res_N branches.  */
-+              bfd_vma res_size = (splt->size - 28) / 4;
-+              bfd_vma res_start = (splt->output_section->vma +
-+				   splt->output_offset);
-+              bfd_vma res_offset;
-+
-+              for (res_offset = 0; res_offset < res_size; res_offset += 4)
-+                bfd_put_32 (output_bfd,
-+			    6 | ((res_size - (res_offset + 4)) << 6),
-+                            splt->contents + res_offset);
-+
-+	      nios2_elf32_install_data (splt, nios2_plt0_entry, res_size, 7);
-+              nios2_elf32_install_imm16 (splt, res_size, hiadj (res_start));
-+              nios2_elf32_install_imm16 (splt, res_size + 4,
-+					 res_start & 0xffff);
-+              nios2_elf32_install_imm16 (splt, res_size + 12,
-+					 hiadj (got_address));
-+              nios2_elf32_install_imm16 (splt, res_size + 16,
-+					 (got_address & 0xffff) + 4);
-+              nios2_elf32_install_imm16 (splt, res_size + 20,
-+					 (got_address & 0xffff) + 8);
-+
-+   	      elf_section_data (splt->output_section)->this_hdr.sh_entsize
-+	        = 28 + res_size;
-+            }
-+	}
-+    }
-+  /* Fill in the first three entries in the global offset table.  */
-+  if (sgotplt->size > 0)
-+    {
-+      if (sdyn == NULL)
-+	bfd_put_32 (output_bfd, (bfd_vma) 0, sgotplt->contents);
-+      else
-+	bfd_put_32 (output_bfd,
-+		    sdyn->output_section->vma + sdyn->output_offset,
-+		    sgotplt->contents);
-+      bfd_put_32 (output_bfd, (bfd_vma) 0, sgotplt->contents + 4);
-+      bfd_put_32 (output_bfd, (bfd_vma) 0, sgotplt->contents + 8);
-+    }
-+
-+  elf_section_data (sgotplt->output_section)->this_hdr.sh_entsize = 4;
-+
-+  return TRUE;
-+}
-+
-+/* Adjust a symbol defined by a dynamic object and referenced by a
-+   regular object.  The current definition is in some section of the
-+   dynamic object, but we're not including those sections.  We have to
-+   change the definition to something the rest of the link can
-+   understand.  */
-+
-+static bfd_boolean
-+nios2_elf32_adjust_dynamic_symbol (struct bfd_link_info * info,
-+				   struct elf_link_hash_entry * h)
-+{
-+  struct elf32_nios2_link_hash_table *htab;
-+  bfd *dynobj;
-+  asection *s;
-+  unsigned align2;
-+
-+  htab = elf32_nios2_hash_table (info);
-+  dynobj = elf_hash_table (info)->dynobj;
-+
-+  /* Make sure we know what is going on here.  */
-+  BFD_ASSERT (dynobj != NULL
-+              && (h->needs_plt
-+                  || h->u.weakdef != NULL
-+                  || (h->def_dynamic
-+                      && h->ref_regular
-+                      && !h->def_regular)));
-+
-+  /* If this is a function, put it in the procedure linkage table.  We
-+     will fill in the contents of the procedure linkage table later,
-+     when we know the address of the .got section.  */
-+  if (h->type == STT_FUNC
-+      || h->needs_plt)
-+    {
-+      if (h->plt.refcount <= 0
-+          || SYMBOL_CALLS_LOCAL (info, h)
-+          || (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
-+              && h->root.type == bfd_link_hash_undefweak))
-+	{
-+	  /* This case can occur if we saw a PLT reloc in an input
-+             file, but the symbol was never referred to by a dynamic
-+             object, or if all references were garbage collected.  In
-+             such a case, we don't actually need to build a procedure
-+             linkage table, and we can just do a PCREL reloc instead.  */
-+          h->plt.offset = (bfd_vma) -1;
-+          h->needs_plt = 0;
-+        }
-+
-+      return TRUE;
-+    }
-+
-+  /* Reinitialize the plt offset now that it is not used as a reference
-+     count any more.  */
-+  h->plt.offset = (bfd_vma) -1;
-+
-+  /* If this is a weak symbol, and there is a real definition, the
-+     processor independent code will have arranged for us to see the
-+     real definition first, and we can just use the same value.  */
-+  if (h->u.weakdef != NULL)
-+    {
-+      BFD_ASSERT (h->u.weakdef->root.type == bfd_link_hash_defined
-+                  || h->u.weakdef->root.type == bfd_link_hash_defweak);
-+      h->root.u.def.section = h->u.weakdef->root.u.def.section;
-+      h->root.u.def.value = h->u.weakdef->root.u.def.value;
-+      return TRUE;
-+    }
-+
-+  /* If there are no non-GOT references, we do not need a copy
-+     relocation.  */
-+  if (!h->non_got_ref)
-+    return TRUE;
-+
-+  /* This is a reference to a symbol defined by a dynamic object which
-+     is not a function.  */
-+
-+  /* If we are creating a shared library, we must presume that the
-+     only references to the symbol are via the global offset table.
-+     For such cases we need not do anything here; the relocations will
-+     be handled correctly by relocate_section.  */
-+  if (info->shared)
-+    return TRUE;
-+
-+  if (h->size == 0)
-+    {
-+      (*_bfd_error_handler) (_("dynamic variable `%s' is zero size"),
-+                             h->root.root.string);
-+      return TRUE;
-+    }
-+
-+  /* We must allocate the symbol in our .dynbss section, which will
-+     become part of the .bss section of the executable.  There will be
-+     an entry for this symbol in the .dynsym section.  The dynamic
-+     object will contain position independent code, so all references
-+     from the dynamic object to this symbol will go through the global
-+     offset table.  The dynamic linker will use the .dynsym entry to
-+     determine the address it must put in the global offset table, so
-+     both the dynamic object and the regular object will refer to the
-+     same memory location for the variable.  */
-+
-+  s = htab->sdynbss;
-+  BFD_ASSERT (s != NULL);
-+
-+  /* We must generate a R_NIOS2_COPY reloc to tell the dynamic linker to
-+     copy the initial value out of the dynamic object and into the
-+     runtime process image.  We need to remember the offset into the
-+     .rela.bss section we are going to use.  */
-+  if ((h->root.u.def.section->flags & SEC_ALLOC) != 0)
-+    {
-+      asection *srel;
-+
-+      srel = htab->srelbss;
-+      BFD_ASSERT (srel != NULL);
-+      srel->size += sizeof (Elf32_External_Rela);
-+      h->needs_copy = 1;
-+    }
-+
-+  align2 = bfd_log2 (h->size);
-+  if (align2 > h->root.u.def.section->alignment_power)
-+    align2 = h->root.u.def.section->alignment_power;
-+
-+  /* align dynbss */
-+  s->size = BFD_ALIGN (s->size, (bfd_size_type)1 << align2);
-+  if (align2 > bfd_get_section_alignment (dynobj, s)
-+      && !bfd_set_section_alignment (dynobj, s, align2))
-+    return FALSE;
-+
-+  /* Define the symbol as being at this point in the section.  */
-+  h->root.u.def.section = s;
-+  h->root.u.def.value = s->size;
-+
-+  /* Increment the section size to make room for the symbol.  */
-+  s->size += h->size;
-+
-+  return TRUE;
-+}
-+
-+static bfd_boolean
-+adjust_dynrelocs (struct elf_link_hash_entry *h, PTR inf)
-+{
-+  struct bfd_link_info *info;
-+  struct elf32_nios2_link_hash_table *htab;
-+
-+  if (h->root.type == bfd_link_hash_indirect)
-+    return TRUE;
-+
-+  if (h->root.type == bfd_link_hash_warning)
-+    /* When warning symbols are created, they **replace** the "real"
-+       entry in the hash table, thus we never get to see the real
-+       symbol in a hash traversal.  So look at it now.  */
-+    h = (struct elf_link_hash_entry *) h->root.u.i.link;
-+
-+  info = (struct bfd_link_info *) inf;
-+  htab = elf32_nios2_hash_table (info);
-+
-+  if (h->plt.offset != (bfd_vma)-1)
-+    h->plt.offset += htab->res_n_size;
-+  if (htab->splt == h->root.u.def.section)
-+    h->root.u.def.value += htab->res_n_size;
-+
-+  return TRUE;
-+}
-+
-+/* Allocate space in .plt, .got and associated reloc sections for
-+   dynamic relocs.  */
-+
-+static bfd_boolean
-+allocate_dynrelocs (struct elf_link_hash_entry *h, PTR inf)
-+{
-+  struct bfd_link_info *info;
-+  struct elf32_nios2_link_hash_table *htab;
-+  struct elf32_nios2_link_hash_entry *eh;
-+  struct elf32_nios2_dyn_relocs *p;
-+  int use_plt;
-+
-+  if (h->root.type == bfd_link_hash_indirect)
-+    return TRUE;
-+
-+  if (h->root.type == bfd_link_hash_warning)
-+    /* When warning symbols are created, they **replace** the "real"
-+       entry in the hash table, thus we never get to see the real
-+       symbol in a hash traversal.  So look at it now.  */
-+    h = (struct elf_link_hash_entry *) h->root.u.i.link;
-+
-+  info = (struct bfd_link_info *) inf;
-+  htab = elf32_nios2_hash_table (info);
-+
-+  if (htab->root.dynamic_sections_created
-+      && h->plt.refcount > 0)
-+    {
-+      /* Make sure this symbol is output as a dynamic symbol.
-+         Undefined weak syms won't yet be marked as dynamic.  */
-+      if (h->dynindx == -1
-+          && !h->forced_local)
-+        {
-+          if (! bfd_elf_link_record_dynamic_symbol (info, h))
-+            return FALSE;
-+        }
-+
-+      if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, info->shared, h))
-+        {
-+          asection *s = htab->splt;
-+
-+          /* Allocate room for the header.  */
-+          if (s->size == 0)
-+            {
-+	      if (info->shared)
-+		s->size = 24;
-+	      else
-+		s->size = 28;
-+            }
-+
-+	  h->plt.offset = s->size;
-+
-+          /* If this symbol is not defined in a regular file, and we are
-+             not generating a shared library, then set the symbol to this
-+             location in the .plt.  This is required to make function
-+             pointers compare as equal between the normal executable and
-+             the shared library.  */
-+          if (! info->shared
-+              && !h->def_regular)
-+            {
-+	      h->root.u.def.section = s;
-+              h->root.u.def.value = h->plt.offset;
-+	    }
-+
-+          /* Make room for this entry.  */
-+          s->size += 12;
-+
-+	  /* We also need to make an entry in the .rela.plt section.  */
-+          htab->srelplt->size += sizeof (Elf32_External_Rela);
-+
-+	  /* And the .got.plt section.  */
-+	  htab->sgotplt->size += 4;
-+	}
-+      else
-+        {
-+          h->plt.offset = (bfd_vma) -1;
-+          h->needs_plt = 0;
-+	}
-+    }
-+  else
-+    {
-+      h->plt.offset = (bfd_vma) -1;
-+      h->needs_plt = 0;
-+    }
-+
-+  eh = (struct elf32_nios2_link_hash_entry *) h;
-+  use_plt = (eh->got_types_used == CALL16_USED &&
-+             h->plt.offset != (bfd_vma) -1);
-+
-+  if (h->got.refcount > 0)
-+    {
-+      asection *s;
-+      bfd_boolean dyn;
-+      int tls_type = eh->tls_type;
-+      int indx;
-+
-+      /* Make sure this symbol is output as a dynamic symbol.
-+         Undefined weak syms won't yet be marked as dynamic.  */
-+      if (h->dynindx == -1
-+          && !h->forced_local)
-+	{
-+          if (! bfd_elf_link_record_dynamic_symbol (info, h))
-+            return FALSE;
-+        }
-+
-+      s = htab->sgot;
-+      h->got.offset = s->size;
-+
-+      if (tls_type == GOT_UNKNOWN)
-+	abort ();
-+
-+      if (tls_type == GOT_NORMAL)
-+	/* Non-TLS symbols need one GOT slot.  */
-+	s->size += 4;
-+      else
-+	{
-+	  if (tls_type & GOT_TLS_GD)
-+	    /* R_NIOS2_TLS_GD16 needs 2 consecutive GOT slots.  */
-+	    s->size += 8;
-+	  if (tls_type & GOT_TLS_IE)
-+	    /* R_NIOS2_TLS_IE16 needs one GOT slot.  */
-+	    s->size += 4;
-+	}
-+
-+      dyn = htab->root.dynamic_sections_created;
-+
-+      indx = 0;
-+      if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info->shared, h)
-+	  && (!info->shared
-+	      || !SYMBOL_REFERENCES_LOCAL (info, h)))
-+	indx = h->dynindx;
-+
-+      if (tls_type != GOT_NORMAL
-+	  && (info->shared || indx != 0)
-+	  && (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
-+	      || h->root.type != bfd_link_hash_undefweak))
-+	{
-+	  if (tls_type & GOT_TLS_IE)
-+	    htab->srelgot->size += sizeof (Elf32_External_Rela);
-+
-+	  if (tls_type & GOT_TLS_GD)
-+	    htab->srelgot->size += sizeof (Elf32_External_Rela);
-+
-+	  if ((tls_type & GOT_TLS_GD) && indx != 0)
-+	    htab->srelgot->size += sizeof (Elf32_External_Rela);
-+	}
-+      else if ((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
-+		|| h->root.type != bfd_link_hash_undefweak)
-+	       && !use_plt && (info->shared
-+			       || WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h)))
-+	htab->srelgot->size += sizeof (Elf32_External_Rela);
-+    }
-+  else
-+    h->got.offset = (bfd_vma) -1;
-+
-+  if (eh->dyn_relocs == NULL)
-+    return TRUE;
-+
-+  /* In the shared -Bsymbolic case, discard space allocated for
-+     dynamic pc-relative relocs against symbols which turn out to be
-+     defined in regular objects.  For the normal shared case, discard
-+     space for pc-relative relocs that have become local due to symbol
-+     visibility changes.  */
-+
-+  if (info->shared)
-+    {
-+      if (h->def_regular
-+          && (h->forced_local
-+              || info->symbolic))
-+        {
-+          struct elf32_nios2_dyn_relocs **pp;
-+
-+          for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
-+            {
-+              p->count -= p->pc_count;
-+              p->pc_count = 0;
-+              if (p->count == 0)
-+		*pp = p->next;
-+              else
-+                pp = &p->next;
-+            }
-+        }
-+
-+      /* Also discard relocs on undefined weak syms with non-default
-+         visibility.  */
-+      if (eh->dyn_relocs != NULL
-+          && h->root.type == bfd_link_hash_undefweak)
-+	{
-+          if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
-+            eh->dyn_relocs = NULL;
-+
-+          /* Make sure undefined weak symbols are output as a dynamic
-+             symbol in PIEs.  */
-+          else if (h->dynindx == -1
-+                   && !h->forced_local)
-+            {
-+              if (! bfd_elf_link_record_dynamic_symbol (info, h))
-+                return FALSE;
-+            }
-+        }
-+    }
-+  else
-+    {
-+      /* For the non-shared case, discard space for relocs against
-+         symbols which turn out to need copy relocs or are not
-+         dynamic.  */
-+
-+      if (!h->non_got_ref
-+	  && ((h->def_dynamic
-+	       && !h->def_regular)
-+              || (htab->root.dynamic_sections_created
-+                  && (h->root.type == bfd_link_hash_undefweak
-+                      || h->root.type == bfd_link_hash_undefined))))
-+        {
-+          /* Make sure this symbol is output as a dynamic symbol.
-+             Undefined weak syms won't yet be marked as dynamic.  */
-+          if (h->dynindx == -1
-+              && !h->forced_local)
-+	    {
-+              if (! bfd_elf_link_record_dynamic_symbol (info, h))
-+		return FALSE;
-+            }
-+
-+          /* If that succeeded, we know we'll be keeping all the
-+             relocs.  */
-+	  if (h->dynindx != -1)
-+            goto keep;
-+	}
-+
-+      eh->dyn_relocs = NULL;
-+
-+    keep: ;
-+    }
-+
-+  /* Finally, allocate space.  */
-+  for (p = eh->dyn_relocs; p != NULL; p = p->next)
-+    {
-+      asection *sreloc = elf_section_data (p->sec)->sreloc;
-+      sreloc->size += p->count * sizeof (Elf32_External_Rela);
-+    }
-+
-+  return TRUE;
-+}
-+
-+/* Set the sizes of the dynamic sections.  */
-+
-+static bfd_boolean
-+nios2_elf32_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-+                                   struct bfd_link_info *info)
-+{
-+  bfd *dynobj;
-+  asection *s;
-+  bfd_boolean plt;
-+  bfd_boolean got;
-+  bfd_boolean relocs;
-+  bfd *ibfd;
-+  struct elf32_nios2_link_hash_table *htab;
-+
-+  htab = elf32_nios2_hash_table (info);
-+  dynobj = elf_hash_table (info)->dynobj;
-+  BFD_ASSERT (dynobj != NULL);
-+
-+  htab->res_n_size = 0;
-+  if (elf_hash_table (info)->dynamic_sections_created)
-+    {
-+      /* Set the contents of the .interp section to the interpreter.  */
-+      if (info->executable)
-+	{
-+	  s = bfd_get_section_by_name (dynobj, ".interp");
-+	  BFD_ASSERT (s != NULL);
-+	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
-+	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
-+	}
-+    }
-+  else
-+    {
-+      /* We may have created entries in the .rela.got section.
-+	 However, if we are not creating the dynamic sections, we will
-+	 not actually use these entries.  Reset the size of .rela.got,
-+	 which will cause it to get stripped from the output file
-+	 below.  */
-+      s = htab->srelgot;
-+      if (s != NULL)
-+	s->size = 0;
-+    }
-+
-+  /* Set up .got offsets for local syms, and space for local dynamic
-+     relocs.  */
-+  for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next)
-+    {
-+      bfd_signed_vma *local_got;
-+      bfd_signed_vma *end_local_got;
-+      char *local_tls_type;
-+      bfd_size_type locsymcount;
-+      Elf_Internal_Shdr *symtab_hdr;
-+      asection *srel;
-+
-+      if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
-+        continue;
-+
-+      for (s = ibfd->sections; s != NULL; s = s->next)
-+        {
-+          struct elf32_nios2_dyn_relocs *p;
-+
-+          for (p = elf_section_data (s)->local_dynrel; p != NULL; p = p->next)
-+            {
-+              if (!bfd_is_abs_section (p->sec)
-+                  && bfd_is_abs_section (p->sec->output_section))
-+                {
-+                  /* Input section has been discarded, either because
-+                     it is a copy of a linkonce section or due to
-+                     linker script /DISCARD/, so we'll be discarding
-+                     the relocs too.  */
-+                }
-+	      else if (p->count != 0)
-+                {
-+                  srel = elf_section_data (p->sec)->sreloc;
-+                  srel->size += p->count * sizeof (Elf32_External_Rela);
-+                  if ((p->sec->output_section->flags & SEC_READONLY) != 0)
-+                    info->flags |= DF_TEXTREL;
-+                }
-+            }
-+	}
-+
-+      local_got = elf_local_got_refcounts (ibfd);
-+      if (!local_got)
-+        continue;
-+
-+      symtab_hdr = &elf_tdata (ibfd)->symtab_hdr;
-+      locsymcount = symtab_hdr->sh_info;
-+      end_local_got = local_got + locsymcount;
-+      local_tls_type = elf32_nios2_local_got_tls_type (ibfd);
-+      s = htab->sgot;
-+      srel = htab->srelgot;
-+      for (; local_got < end_local_got; ++local_got, ++local_tls_type)
-+        {
-+          if (*local_got > 0)
-+            {
-+              *local_got = s->size;
-+              if (*local_tls_type & GOT_TLS_GD)
-+                /* TLS_GD relocs need an 8-byte structure in the GOT.  */
-+                s->size += 8;
-+              if (*local_tls_type & GOT_TLS_IE)
-+                s->size += 4;
-+              if (*local_tls_type == GOT_NORMAL)
-+                s->size += 4;
-+
-+              if (info->shared || *local_tls_type == GOT_TLS_GD)
-+                srel->size += sizeof (Elf32_External_Rela);
-+            }
-+          else
-+            *local_got = (bfd_vma) -1;
-+        }
-+    }
-+
-+  if (htab->tls_ldm_got.refcount > 0)
-+    {
-+      /* Allocate two GOT entries and one dynamic relocation (if necessary)
-+         for R_NIOS2_TLS_LDM16 relocations.  */
-+      htab->tls_ldm_got.offset = htab->sgot->size;
-+      htab->sgot->size += 8;
-+      if (info->shared)
-+        htab->srelgot->size += sizeof (Elf32_External_Rela);
-+    }
-+  else
-+    htab->tls_ldm_got.offset = -1;
-+
-+  /* Allocate global sym .plt and .got entries, and space for global
-+     sym dynamic relocs.  */
-+  elf_link_hash_traverse (& htab->root, allocate_dynrelocs, info);
-+
-+  /* The check_relocs and adjust_dynamic_symbol entry points have
-+     determined the sizes of the various dynamic sections.  Allocate
-+     memory for them.  */
-+  plt = FALSE;
-+  got = FALSE;
-+  relocs = FALSE;
-+  for (s = dynobj->sections; s != NULL; s = s->next)
-+    {
-+      const char *name;
-+
-+      if ((s->flags & SEC_LINKER_CREATED) == 0)
-+	continue;
-+
-+      /* It's OK to base decisions on the section name, because none
-+	 of the dynobj section names depend upon the input files.  */
-+      name = bfd_get_section_name (dynobj, s);
-+
-+      if (strcmp (name, ".plt") == 0)
-+	{
-+	  /* Remember whether there is a PLT.  */
-+	  plt = s->size != 0;
-+
-+          /* Correct for the number of res_N branches.  */
-+          if (plt && !info->shared)
-+	    {
-+	      htab->res_n_size = (s->size-28) / 3;
-+	      s->size += htab->res_n_size;
-+	    }
-+	}
-+      else if (CONST_STRNEQ (name, ".rela"))
-+	{
-+	  if (s->size != 0)
-+	    {
-+	      relocs = TRUE;
-+
-+	      /* We use the reloc_count field as a counter if we need
-+		 to copy relocs into the output file.  */
-+	      s->reloc_count = 0;
-+	    }
-+	}
-+      else if (CONST_STRNEQ (name, ".got"))
-+	got = s->size != 0;
-+      else if (strcmp (name, ".dynbss") != 0)
-+	{
-+	  /* It's not one of our sections, so don't allocate space.  */
-+	  continue;
-+	}
-+
-+      if (s->size == 0)
-+	{
-+	  /* If we don't need this section, strip it from the
-+	     output file.  This is mostly to handle .rela.bss and
-+	     .rela.plt.  We must create both sections in
-+	     create_dynamic_sections, because they must be created
-+	     before the linker maps input sections to output
-+	     sections.  The linker does that before
-+	     adjust_dynamic_symbol is called, and it is that
-+	     function which decides whether anything needs to go
-+	     into these sections.  */
-+	  s->flags |= SEC_EXCLUDE;
-+	  continue;
-+	}
-+
-+      if ((s->flags & SEC_HAS_CONTENTS) == 0)
-+	continue;
-+
-+      /* Allocate memory for the section contents.  */
-+      /* FIXME: This should be a call to bfd_alloc not bfd_zalloc.
-+	 Unused entries should be reclaimed before the section's contents
-+	 are written out, but at the moment this does not happen.  Thus in
-+	 order to prevent writing out garbage, we initialise the section's
-+	 contents to zero.  */
-+      s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
-+      if (s->contents == NULL)
-+	return FALSE;
-+    }
-+
-+  /* Adjust dynamic symbols that point to the plt to account for the
-+     now-known number of resN slots.  */
-+  if (htab->res_n_size)
-+    elf_link_hash_traverse (& htab->root, adjust_dynrelocs, info);
-+
-+  if (elf_hash_table (info)->dynamic_sections_created)
-+    {
-+      /* Add some entries to the .dynamic section.  We fill in the
-+	 values later, in elf_nios2_finish_dynamic_sections, but we
-+	 must add the entries now so that we get the correct size for
-+	 the .dynamic section.  The DT_DEBUG entry is filled in by the
-+	 dynamic linker and used by the debugger.  */
-+#define add_dynamic_entry(TAG, VAL) \
-+  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-+
-+      if (!info->shared)
-+	{
-+	  if (!add_dynamic_entry (DT_DEBUG, 0))
-+	    return FALSE;
-+	}
-+
-+      if (got)
-+	if (!add_dynamic_entry (DT_PLTGOT, 0))
-+	  return FALSE;
-+
-+      if (plt)
-+	if (!add_dynamic_entry (DT_PLTRELSZ, 0)
-+	    || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-+	    || !add_dynamic_entry (DT_JMPREL, 0))
-+	  return FALSE;
-+
-+      if (relocs)
-+	{
-+	  if (!add_dynamic_entry (DT_RELA, 0)
-+	      || !add_dynamic_entry (DT_RELASZ, 0)
-+	      || !add_dynamic_entry (DT_RELAENT, sizeof (Elf32_External_Rela)))
-+	    return FALSE;
-+	}
-+
-+      if (!info->shared)
-+	{
-+	  if (!add_dynamic_entry (DT_NIOS2_GP, 0))
-+	    return FALSE;
-+	}
-+
-+      if ((info->flags & DF_TEXTREL) != 0)
-+	{
-+	  if (!add_dynamic_entry (DT_TEXTREL, 0))
-+	    return FALSE;
-+	}
-+    }
-+#undef add_dynamic_entry
-+
-+  return TRUE;
-+}
-+
-+/* Create a Nios II elf linker hash table.  */
-+
-+static struct bfd_link_hash_table *
-+nios2_elf32_link_hash_table_create (bfd *abfd)
-+{
-+  struct elf32_nios2_link_hash_table *ret;
-+  bfd_size_type amt = sizeof (struct elf32_nios2_link_hash_table);
-+
-+  ret = bfd_malloc (amt);
-+  if (ret == NULL)
-+    return NULL;
-+
-+  if (!_bfd_elf_link_hash_table_init (& ret->root, abfd,
-+				      link_hash_newfunc,
-+				      sizeof (struct
-+					      elf32_nios2_link_hash_entry)))
-+    {
-+      free (ret);
-+      return NULL;
-+    }
-+
-+  ret->sgot = NULL;
-+  ret->sgotplt = NULL;
-+  ret->srelgot = NULL;
-+  ret->splt = NULL;
-+  ret->srelplt = NULL;
-+  ret->sdynbss = NULL;
-+  ret->srelbss = NULL;
-+  ret->sbss = NULL;
-+  ret->tls_ldm_got.refcount = 0;
-+  ret->sym_sec.abfd = NULL;
-+  return &ret->root.root;
-+}
-+
-+static enum elf_reloc_type_class
-+nios2_elf32_reloc_type_class (const Elf_Internal_Rela *rela)
-+{
-+  switch ((int) ELF32_R_TYPE (rela->r_info))
-+    {
-+    case R_NIOS2_RELATIVE:
-+      return reloc_class_relative;
-+    case R_NIOS2_JUMP_SLOT:
-+      return reloc_class_plt;
-+    case R_NIOS2_COPY:
-+      return reloc_class_copy;
-+    default:
-+      return reloc_class_normal;
-+    }
-+}
-+
-+/* Return 1 if target is one of ours.  */
-+
-+static bfd_boolean
-+is_nios2_elf_target (const struct bfd_target *targ)
-+{
-+  return (targ == &bfd_elf32_littlenios2_vec
-+	  || targ == &bfd_elf32_bignios2_vec);
-+}
-+
-+/* Hook called by the linker routine which adds symbols from an object
-+   file.  We use it to put .comm items in .sbss, and not .bss.  */
-+
-+static bfd_boolean
-+nios2_elf_add_symbol_hook (bfd *abfd,
-+                           struct bfd_link_info *info,
-+                           Elf_Internal_Sym *sym,
-+                           const char **namep ATTRIBUTE_UNUSED,
-+                           flagword *flagsp ATTRIBUTE_UNUSED,
-+                           asection **secp,
-+                           bfd_vma *valp)
-+{
-+  bfd *dynobj;
-+
-+  if (sym->st_shndx == SHN_COMMON
-+      && !info->relocatable
-+      && is_nios2_elf (info->output_bfd)
-+      && sym->st_size <= elf_gp_size (abfd))
-+    {
-+      /* Common symbols less than or equal to -G nn bytes are automatically
-+         put into .sbss.  */
-+      struct elf32_nios2_link_hash_table *htab;
-+
-+      htab = elf32_nios2_hash_table (info);
-+      if (htab->sbss == NULL)
-+        {
-+          flagword flags = SEC_IS_COMMON | SEC_LINKER_CREATED;
-+
-+	  dynobj = elf_hash_table (info)->dynobj;
-+	  if (!dynobj)
-+	    dynobj = abfd;
-+
-+          htab->sbss = bfd_make_section_anyway_with_flags (dynobj, ".sbss",
-+                                                           flags);
-+          if (htab->sbss == NULL)
-+            return FALSE;
-+        }
-+
-+      *secp = htab->sbss;
-+      *valp = sym->st_size;
-+    }
-+
-+  if (ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC)
-+    elf_tdata (info->output_bfd)->has_ifunc_symbols = TRUE;
-+
-+  return TRUE;
-+}
-+
-+/* Decide whether to attempt to turn absptr or lsda encodings in
-+   shared libraries into pcrel within the given input section.  */
-+
-+static bfd_boolean
-+nios2_elf32_can_make_relative_eh_frame(bfd *input_bfd ATTRIBUTE_UNUSED,
-+				       struct bfd_link_info *info
-+				       ATTRIBUTE_UNUSED,
-+				       asection *eh_frame_section
-+				       ATTRIBUTE_UNUSED)
-+{
-+  /* We can't use PC-relative encodings in the .eh_frame section.  */
-+  return FALSE;
-+}
-+
-+#define ELF_ARCH                            bfd_arch_nios2
-+#define ELF_MACHINE_CODE                EM_ALTERA_NIOS2
-+
-+/* The Nios II MMU uses a 4K page size.  */
-+
-+#define ELF_MAXPAGESIZE                 0x1000
-+
-+#define bfd_elf32_bfd_link_hash_table_create \
-+                                          nios2_elf32_link_hash_table_create
-+
-+/* Relocation table lookup macros.  */
-+
-+#define bfd_elf32_bfd_reloc_type_lookup   nios2_elf32_bfd_reloc_type_lookup
-+#define bfd_elf32_bfd_reloc_name_lookup   nios2_elf32_bfd_reloc_name_lookup
-+
-+/* JUMP_TABLE_LINK macros.  */
-+
-+#define bfd_elf32_bfd_relax_section		  nios2_elf32_relax_section
-+
-+/* elf_info_to_howto (using RELA relocations).  */
-+
-+#define elf_info_to_howto                 nios2_elf32_info_to_howto
-+
-+/* elf backend functions.  */
-+
-+#define elf_backend_can_gc_sections	1
-+#define elf_backend_can_refcount        1
-+#define elf_backend_plt_readonly        1
-+#define elf_backend_want_got_plt        1
-+
-+#define elf_backend_relocate_section      nios2_elf32_relocate_section
-+#define elf_backend_section_from_shdr     nios2_elf32_section_from_shdr
-+#define elf_backend_section_flags         nios2_elf32_section_flags
-+#define elf_backend_fake_sections         nios2_elf32_fake_sections
-+#define elf_backend_check_relocs		  nios2_elf32_check_relocs
-+
-+#define elf_backend_gc_mark_hook          nios2_elf32_gc_mark_hook
-+#define elf_backend_gc_sweep_hook	  nios2_elf32_gc_sweep_hook
-+#define elf_backend_create_dynamic_sections \
-+                                          nios2_elf32_create_dynamic_sections
-+#define elf_backend_finish_dynamic_symbol nios2_elf32_finish_dynamic_symbol
-+#define elf_backend_finish_dynamic_sections \
-+                                          nios2_elf32_finish_dynamic_sections
-+#define elf_backend_adjust_dynamic_symbol nios2_elf32_adjust_dynamic_symbol
-+#define elf_backend_reloc_type_class      nios2_elf32_reloc_type_class
-+#define elf_backend_size_dynamic_sections nios2_elf32_size_dynamic_sections
-+#define elf_backend_add_symbol_hook       nios2_elf_add_symbol_hook
-+#define elf_backend_copy_indirect_symbol  nios2_elf32_copy_indirect_symbol
-+
-+#define elf_backend_grok_prstatus       nios2_grok_prstatus
-+#define elf_backend_grok_psinfo         nios2_grok_psinfo
-+
-+#undef elf_backend_can_make_relative_eh_frame
-+#define elf_backend_can_make_relative_eh_frame \
-+                                        nios2_elf32_can_make_relative_eh_frame
-+
-+/* Support for SGI-ish mips targets.  */
-+#define TARGET_LITTLE_SYM               bfd_elf32_littlenios2_vec
-+#define TARGET_LITTLE_NAME              "elf32-littlenios2"
-+#define TARGET_BIG_SYM                  bfd_elf32_bignios2_vec
-+#define TARGET_BIG_NAME                 "elf32-bignios2"
-+
-+#define elf_backend_got_header_size	12
-+
-+#include "elf32-target.h"
-Index: binutils-2.20.1/gas/config/tc-nios2.c
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/config/tc-nios2.c
-@@ -0,0 +1,3361 @@
-+/* NOT ASSIGNED TO FSF.  COPYRIGHT ALTERA.  */
-+/* tc-nios2.c -- assemble code for a New Jersey processor.
-+
-+   Copyright (C) 2003
-+   by Nigel Gray (ngray@altera.com).
-+
-+
-+   This file is part of GAS.
-+
-+   GAS 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, or (at your option)
-+   any later version.
-+
-+   GAS 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 GAS; see the file COPYING.  If not, write to the Free
-+   Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-+   02111-1307, USA.  */
-+
-+
-+#include <stdio.h>
-+#include <limits.h>
-+#include <string.h>
-+#include <stdlib.h>
-+#include "as.h"
-+#include "opcode/nios2.h"
-+#include "elf/nios2.h"
-+#include "tc-nios2.h"
-+#include "bfd.h"
-+#include "dwarf2dbg.h"
-+#include "subsegs.h"
-+#include "safe-ctype.h"
-+#include "dw2gencfi.h"
-+
-+/* We can choose our endianness at run-time, regardless of configuration.  */
-+extern int target_big_endian;
-+
-+#ifndef OBJ_ELF
-+	/* We are not supporting any other target
-+	   so we throw a compile time error.  */
-+OBJ_ELF not defined
-+#endif
-+  typedef enum
-+{
-+  relax_section = 0,
-+  relax_none,
-+  relax_all
-+}
-+relax_optionT;
-+
-+
-+/* Struct contains all assembler options set with .set.  */
-+struct
-+{
-+  /* .set noat -> noat = 1 allows assembly code to use at without warning
-+     and macro expansions will generate a warning.
-+     .set at -> noat = 0, assembly code using at will warn
-+     macro expansions will not generate warnings.  */
-+  bfd_boolean noat;
-+
-+  /* .set nobreak -> nobreak = 1 allows assembly code to use ba,bt without
-+				 warning.
-+     .set break -> nobreak = 0, assembly code using ba,bt will warn.  */
-+  bfd_boolean nobreak;
-+
-+  /* .cmd line option -relax-all allows all branches and calls to be replaced
-+     with longer versions.
-+     -no-relax inhibits branch/call conversion.
-+     default value is relax_section, which relaxes branches within a section.
-+  */
-+  relax_optionT relax;
-+
-+}
-+nios2_as_options =
-+{
-+FALSE, FALSE, relax_section};
-+
-+
-+typedef struct nios2_insn_reloc
-+{
-+  /* Any expression in the instruction is parsed into
-+     this field which is passed to fix_new_exp() to
-+     generate a fixup.  */
-+  expressionS reloc_expression;
-+
-+  /* The type of the relocation to be applied.  */
-+  bfd_reloc_code_real_type reloc_type;
-+
-+  /* pc relative.  */
-+  unsigned int reloc_pcrel;
-+
-+  /* The next relocation to be applied to the instruction.  */
-+  struct nios2_insn_reloc *reloc_next;
-+}
-+nios2_insn_relocS;
-+
-+
-+/* ------------------------------------------------------------------
-+	This struct is used by the functions in tc-nios2.c to assemble an
-+	instruction
-+   ------------------------------------------------------------------*/
-+
-+typedef struct nios2_insn_info
-+{
-+  /* Assembled instruction.  */
-+  unsigned long insn_code;
-+  /* Pointer to the relevant bit of the opcode table.  */
-+  const struct nios2_opcode *insn_nios2_opcode;
-+  /* After parsing ptrs to the tokens in the instruction fill this array
-+     it is terminated with a null pointer (hence the first +1).
-+     The second +1 is because in some parts of the code the opcode
-+     is not counted as a token, but still placed in this array. */
-+  const char *insn_tokens[NIOS2_MAX_INSN_TOKENS + 1 + 1];
-+
-+  /* This holds information used to generate fixups
-+     and eventually relocations if it is not null.  */
-+  nios2_insn_relocS *insn_reloc;
-+}
-+nios2_insn_infoS;
-+
-+
-+/* This struct associates an argument assemble function with
-+   an argument syntax string.  Used by the assembler to find out
-+   how to parse and assemble a set of instruction operands and
-+   return the instruction field values.  */
-+
-+typedef struct nios2_arg_info
-+{
-+  const char *args;
-+  void (*assemble_args_func) (nios2_insn_infoS * insn_info);
-+}
-+nios2_arg_infoS;
-+
-+/* This struct is used to convert New Jersey pseudo-ops into the
-+   corresponding real op.  */
-+typedef struct nios2_ps_insn_info
-+{
-+  const char *pseudo_insn;
-+  const char *insn;
-+  const char *arg_modifier;
-+  void (*arg_modifer_func) (const char *arg, char **parsedArgs, int numArg,
-+			    int startIndex);
-+  int num;
-+  int index;
-+}
-+nios2_ps_insn_infoS;
-+
-+
-+
-+/* Function prototypes.  */
-+static void NIOS2_CHECK_ASSEMBLY (unsigned int opcode,
-+				  const char *exp_opcode);
-+static void s_nios2_sdata (int);
-+void nios2_assemble_args_dst (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_tsi (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_tsu (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_o (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_m (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_s (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_tis (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_dc (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_cs (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_ldst (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_none (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_dsj (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_is (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_sto (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_d (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_b (nios2_insn_infoS * insn_info);
-+
-+nios2_insn_relocS *nios2_insn_reloc_new (bfd_reloc_code_real_type reloc_type,
-+					 unsigned int pcrel);
-+void nios2_insn_reloc_destroy (nios2_insn_relocS * reloc);
-+unsigned long nios2_assemble_expression (const char *exprstr,
-+					 nios2_insn_infoS * insn,
-+					 nios2_insn_relocS * prev_reloc,
-+					 bfd_reloc_code_real_type reloc_type,
-+					 unsigned int pcrel);
-+char *nios2_consume_separator (char *argStr, const char *separator);
-+char *nios2_consume_arg (char *argStr, const char *argType);
-+void nios2_parse_args (char *argStr, const char *parseStr, char **parsedArgs);
-+
-+void nios2_modify_arg (const char *modifier, char **parsedArgs, int unused,
-+		       int index);
-+void nios2_append_arg (const char *append, char **parsedArgs, int numAppend,
-+		       int startIndex);
-+void nios2_insert_arg (const char *insert, char **parsedArgs, int numInsert,
-+		       int startIndex);
-+void nios2_swap_args (const char *unused, char **parsedArgs, int index_1,
-+		      int index_2);
-+void nios2_negate_arg (const char *modifier ATTRIBUTE_UNUSED,
-+		       char **parsedArgs, int unused ATTRIBUTE_UNUSED,
-+		       int index);
-+void nios2_translate_pseudo_insn (nios2_insn_infoS * insn);
-+void md_apply_fix (fixS * fixP, valueT * valP, segT seg ATTRIBUTE_UNUSED);
-+valueT md_chars_to_number (char *buf, int n);
-+void md_number_to_imm (char *buf, valueT val, int n);
-+void md_number_to_disp (char *buf, valueT val, int n);
-+void md_number_to_field (char *buf, valueT val, int n);
-+static void nios2_align (int log_size, const char *pfill, symbolS * sym);
-+static void s_nios2_ucons (int nbytes);
-+static void s_nios2_set (int equiv);
-+static void s_nios2_align (int ignore);
-+static void s_nios2_text (int);
-+static void s_nios2_data (int);
-+static void s_nios2_section (int);
-+static bfd_boolean nios2_coproc_reg (const char *reg_name);
-+static void output_insn (void);
-+static void output_ubranch (void);
-+static void output_cbranch (void);
-+static void output_call (void);
-+static void output_movia (void);
-+static void output_andi (void);
-+static void output_addi (void);
-+static void output_ori (void);
-+static void output_xori (void);
-+static int can_evaluate_expr (void);
-+static int get_expr_value (void);
-+
-+
-+bfd_boolean nios2_check_overflow (valueT fixup, reloc_howto_type * howto);
-+
-+/* The known current alignment of the current section.  */
-+static int nios2_current_align;
-+static segT nios2_current_align_seg;
-+
-+/* The last seen label in the current section.  This is used to auto-align
-+   labels preceeding instructions.  */
-+static symbolS *nios2_last_label;
-+
-+
-+static int nios2_auto_align_on = 1;
-+
-+/* This array holds the chars that always start a comment.  If the
-+   pre-processor is disabled, these aren't very useful.  */
-+const char comment_chars[] = "#";
-+
-+/* This array holds the chars that only start a comment at the beginning of
-+   a line.  If the line seems to have the form '# 123 filename'
-+   .line and .file directives will appear in the pre-processed output.  */
-+/* Note that input_file.c hand checks for '#' at the beginning of the
-+   first line of the input file.  This is because the compiler outputs
-+   #NO_APP at the beginning of its output.  */
-+/* Also note that C style comments are always supported.  */
-+const char line_comment_chars[] = "#";
-+
-+/* This array holds machine specific line separator characters.  */
-+const char line_separator_chars[] = ";";
-+
-+/* Chars that can be used to separate mant from exp in floating point nums.  */
-+const char EXP_CHARS[] = "eE";
-+
-+/* Chars that mean this number is a floating point constant.  */
-+/* As in 0f12.456 */
-+/* or    0d1.2345e12 */
-+const char FLT_CHARS[] = "rRsSfFdDxXpP";
-+
-+/* Also be aware that MAXIMUM_NUMBER_OF_CHARS_FOR_FLOAT may have to be
-+   changed in read.c.  Ideally it shouldn't have to know about it at all,
-+   but nothing is ideal around here.  */
-+
-+/* Handle of the OPCODE hash table.  */
-+static struct hash_control *nios2_opcode_hash = NULL;
-+
-+/* Handle of the Register hash table.  */
-+static struct hash_control *nios2_reg_hash = NULL;
-+
-+/* Handle of the parse args hash table.  */
-+static struct hash_control *nios2_arg_hash = NULL;
-+
-+/* Pseudo-op hash table.  */
-+static struct hash_control *nios2_ps_hash = NULL;
-+
-+#ifdef OBJ_ELF
-+/* Pre-defined "_GLOBAL_OFFSET_TABLE_"  */
-+symbolS * GOT_symbol;
-+#endif
-+
-+#define streq(a, b)           (strcmp (a, b) == 0)
-+
-+/* Mode of the assembler.  */
-+typedef enum
-+{
-+  NIOS2_MODE_ASSEMBLE,		/* Ordinary operation.  */
-+  NIOS2_MODE_TEST		/* Hidden mode used for self testing.  */
-+}
-+NIOS2_MODE;
-+
-+static NIOS2_MODE nios2_mode = NIOS2_MODE_ASSEMBLE;
-+
-+/* This function is used to in self-checking mode
-+   to check the assembled instruction
-+   opcode should be the assembled opcode, and exp_opcode
-+   the parsed string representing the expected opcode.  */
-+void
-+NIOS2_CHECK_ASSEMBLY (unsigned int opcode, const char *exp_opcode)
-+{
-+  if (nios2_mode == NIOS2_MODE_TEST)
-+    {
-+      if ((exp_opcode) == NULL)
-+	{
-+	  as_bad (_("expecting opcode string in self test mode"));
-+	}
-+      else if ((opcode) != strtoul ((exp_opcode), NULL, 16))
-+	{
-+	  as_bad (_("assembly 0x%08x, expected %s"), (opcode), (exp_opcode));
-+	}
-+    }
-+}
-+
-+/* Machine-dependent command-line options.  */
-+
-+const char *md_shortopts = "r";
-+
-+struct option md_longopts[] = {
-+#define OPTION_RELAX_ALL (OPTION_MD_BASE + 0)
-+  {"relax-all", no_argument, NULL, OPTION_RELAX_ALL},
-+#define OPTION_NORELAX (OPTION_MD_BASE + 1)
-+  {"no-relax", no_argument, NULL, OPTION_NORELAX},
-+#define OPTION_RELAX_SECTION (OPTION_MD_BASE + 2)
-+  {"relax-section", no_argument, NULL, OPTION_RELAX_SECTION},
-+#define OPTION_EB (OPTION_MD_BASE + 3)
-+  {"EB", no_argument, NULL, OPTION_EB},
-+#define OPTION_EL (OPTION_MD_BASE + 4)
-+  {"EL", no_argument, NULL, OPTION_EL}
-+};
-+
-+size_t md_longopts_size = sizeof (md_longopts);
-+
-+/* Machine dependent pseudo-ops.
-+   These are actually assembler directives.
-+   Format of each entry is:
-+
-+   { "directive", handler_func, param }  */
-+const pseudo_typeS md_pseudo_table[] = {
-+  {"align", s_nios2_align, 0},
-+  {"text", s_nios2_text, 0},
-+  {"data", s_nios2_data, 0},
-+  {"section", s_nios2_section, 0},
-+  {"section.s", s_nios2_section, 0},
-+  {"sect", s_nios2_section, 0},
-+  {"sect.s", s_nios2_section, 0},
-+  /* .dword and .half are included for compatibility with MIPS.  */
-+  {"dword", cons, 8},
-+  {"half", cons, 2},
-+  /* NIOS2 native word size is 4 bytes, so we override
-+     the GAS default of 2.  */
-+  {"word", cons, 4},
-+  /* Explicitly unaligned directives.  */
-+  {"2byte", s_nios2_ucons, 2},
-+  {"4byte", s_nios2_ucons, 4},
-+  {"8byte", s_nios2_ucons, 8},
-+  {"16byte", s_nios2_ucons, 16},
-+#ifdef OBJ_ELF
-+  {"sdata", s_nios2_sdata, 0},
-+#endif
-+  {"set", s_nios2_set, 0},
-+  {NULL, NULL, 0}
-+};
-+
-+#define BYTE_F	32764
-+#define BYTE_B	-32768
-+#define ABS	(long)0xffffffff   /* Special value to indicate
-+				      non-pc relative jmp.  */
-+
-+#define UBRANCH	1
-+#define UJMP	2
-+#define CBRANCH	3
-+#define CJMP	4
-+
-+
-+#define RELAX_MAX_SIZE(type) nios2_relax_table[nios2_relax_table[type \
-+			       ].rlx_more].rlx_length
-+#define RELAX_SIZE(type) nios2_relax_table[type].rlx_length
-+#define RELAX_SUBSTATE(type)  type
-+
-+/* Machine dependent relaxations.  */
-+struct relax_type nios2_relax_table[] = {
-+  /* First entry unused (ends relaxation sequence).  */
-+  {1, 1, 0, 0},
-+  /* Unconditional branch.  */
-+  {BYTE_F, BYTE_B, 4, 2},	/* br label (label is in range) */
-+  /* Unconditional jmp.  */
-+  {ABS, ABS, 12, 0},		/* movhi at, %hi(label) ;
-+				   ori at, %lo(label) ; jmp at */
-+  /* Conditional branch.  */
-+  {BYTE_F, BYTE_B, 4, 4},	/* br{cond} label (label is in range) */
-+  /* Conditional jmp.  */
-+  {ABS, ABS, 16, 0},		/* br{opp_cond} skip ; movhi at, %hi(label) ;
-+				   ori at, %lo(label) ; jmp at ; skip: } */
-+};
-+
-+
-+/* This is just the generic relax_frag function but
-+   amended to include absolute jmps in the relax table.  */
-+
-+long
-+nios2_relax_frag (segT segment, fragS * fragP, long stretch)
-+{
-+  const relax_typeS *this_type;
-+  const relax_typeS *start_type;
-+  relax_substateT next_state;
-+  relax_substateT this_state;
-+  long growth;
-+  offsetT aim;
-+  addressT target;
-+  addressT address;
-+  symbolS *symbolP;
-+  const relax_typeS *table;
-+
-+  target = fragP->fr_offset;
-+  address = fragP->fr_address;
-+  table = nios2_relax_table;
-+  this_state = fragP->fr_subtype;
-+  start_type = this_type = table + this_state;
-+  symbolP = fragP->fr_symbol;
-+
-+  if (symbolP)
-+    {
-+      fragS *sym_frag;
-+
-+      sym_frag = symbol_get_frag (symbolP);
-+
-+#ifndef DIFF_EXPR_OK
-+#if 0
-+#if !defined (MANY_SEGMENTS) && !defined (BFD_ASSEMBLER)
-+      know ((S_GET_SEGMENT (symbolP) == SEG_ABSOLUTE)
-+	    || (S_GET_SEGMENT (symbolP) == SEG_DATA)
-+	    || (S_GET_SEGMENT (symbolP) == SEG_BSS)
-+	    || (S_GET_SEGMENT (symbolP) == SEG_TEXT));
-+#endif
-+#endif
-+      know (sym_frag != NULL);
-+#endif
-+      know (!(S_GET_SEGMENT (symbolP) == absolute_section)
-+	    || sym_frag == &zero_address_frag);
-+      target += S_GET_VALUE (symbolP);
-+
-+      /* If frag has yet to be reached on this pass,
-+         assume it will move by STRETCH just as we did.
-+         If this is not so, it will be because some frag
-+         between grows, and that will force another pass.  */
-+
-+      if (stretch != 0
-+	  && sym_frag->relax_marker != fragP->relax_marker
-+	  && S_GET_SEGMENT (symbolP) == segment)
-+	{
-+	  target += stretch;
-+	}
-+    }
-+
-+
-+  /* NG we subtract 4 because all pc relative branches are
-+     from the next instruction.  */
-+  aim = target - address - fragP->fr_fix - 4;
-+
-+  if (aim < 0)
-+    {
-+      /* Look backwards.  */
-+      for (next_state = this_type->rlx_more; next_state;)
-+	{
-+	  if (aim >= this_type->rlx_backward
-+	      || this_type->rlx_backward == ABS)
-+	    next_state = 0;
-+	  else
-+	    {
-+	      /* Grow to next state.  */
-+	      this_state = next_state;
-+	      this_type = table + this_state;
-+	      next_state = this_type->rlx_more;
-+	    }
-+	}
-+    }
-+  else
-+    {
-+      /* Look forwards.  */
-+
-+      for (next_state = this_type->rlx_more; next_state;)
-+	{
-+	  if (aim <= this_type->rlx_forward || this_type->rlx_forward == ABS)
-+	    next_state = 0;
-+	  else
-+	    {
-+	      /* Grow to next state.  */
-+	      this_state = next_state;
-+	      this_type = table + this_state;
-+	      next_state = this_type->rlx_more;
-+	    }
-+	}
-+    }
-+
-+
-+  growth = this_type->rlx_length - start_type->rlx_length;
-+
-+  if (growth != 0)
-+    fragP->fr_subtype = this_state;
-+
-+  return growth;
-+}
-+
-+/*--------------------------------------------------------------------------------
-+   The next table associates pointers to functions which parse the arguments to an
-+   instruction and fill in the relevant fields of the instruction
-+  --------------------------------------------------------------------------------*/
-+
-+const nios2_arg_infoS nios2_arg_info_structs[] = {
-+  /* args, assemble_args_func */
-+  {"d,s,t", nios2_assemble_args_dst},
-+  {"d,s,t,E", nios2_assemble_args_dst},
-+  {"t,s,i", nios2_assemble_args_tsi},
-+  {"t,s,i,E", nios2_assemble_args_tsi},
-+  {"t,s,u", nios2_assemble_args_tsu},
-+  {"t,s,u,E", nios2_assemble_args_tsu},
-+  {"s,t,o", nios2_assemble_args_sto},
-+  {"s,t,o,E", nios2_assemble_args_sto},
-+  {"o", nios2_assemble_args_o},
-+  {"o,E", nios2_assemble_args_o},
-+  {"s", nios2_assemble_args_s},
-+  {"s,E", nios2_assemble_args_s},
-+  {"", nios2_assemble_args_none},
-+  {"E", nios2_assemble_args_none},
-+  {"i(s)", nios2_assemble_args_is},
-+  {"i(s)E", nios2_assemble_args_is},
-+  {"m", nios2_assemble_args_m},
-+  {"m,E", nios2_assemble_args_m},
-+  {"t,i(s)", nios2_assemble_args_tis},
-+  {"t,i(s)E", nios2_assemble_args_tis},
-+  {"d,c", nios2_assemble_args_dc},
-+  {"d,c,E", nios2_assemble_args_dc},
-+  {"c,s", nios2_assemble_args_cs},
-+  {"c,s,E", nios2_assemble_args_cs},
-+  {"l,d,s,t", nios2_assemble_args_ldst},
-+  {"l,d,s,t,E", nios2_assemble_args_ldst},
-+  {"d,s,j", nios2_assemble_args_dsj},
-+  {"d,s,j,E", nios2_assemble_args_dsj},
-+  {"d", nios2_assemble_args_d},
-+  {"d,E", nios2_assemble_args_d},
-+  {"b", nios2_assemble_args_b},
-+  {"b,E", nios2_assemble_args_b}
-+};
-+
-+#define NIOS2_NUM_ARGS \
-+	((sizeof(nios2_arg_info_structs)/sizeof(nios2_arg_info_structs[0])))
-+const int nios2_num_arg_info_structs = NIOS2_NUM_ARGS;
-+
-+
-+const nios2_ps_insn_infoS nios2_ps_insn_info_structs[] = {
-+  /* pseudo-op, real-op, arg, arg_modifier_func, num, index */
-+  {"mov", "add", "zero", nios2_append_arg, 1, 3},
-+  {"movi", "addi", "zero", nios2_insert_arg, 1, 2},
-+  {"movhi", "orhi", "zero", nios2_insert_arg, 1, 2},
-+  {"movui", "ori", "zero", nios2_insert_arg, 1, 2},
-+  {"movia", "orhi", "zero", nios2_insert_arg, 1, 2},
-+  {"nop", "add", "zero", nios2_append_arg, 3, 1},
-+  {"bgt", "blt", "", nios2_swap_args, 1, 2},
-+  {"bgtu", "bltu", "", nios2_swap_args, 1, 2},
-+  {"ble", "bge", "", nios2_swap_args, 1, 2},
-+  {"bleu", "bgeu", "", nios2_swap_args, 1, 2},
-+  {"cmpgt", "cmplt", "", nios2_swap_args, 2, 3},
-+  {"cmpgtu", "cmpltu", "", nios2_swap_args, 2, 3},
-+  {"cmple", "cmpge", "", nios2_swap_args, 2, 3},
-+  {"cmpleu", "cmpgeu", "", nios2_swap_args, 2, 3},
-+  {"cmpgti", "cmpgei", "+1", nios2_modify_arg, 0, 3},
-+  {"cmpgtui", "cmpgeui", "+1", nios2_modify_arg, 0, 3},
-+  {"cmplei", "cmplti", "+1", nios2_modify_arg, 0, 3},
-+  {"cmpleui", "cmpltui", "+1", nios2_modify_arg, 0, 3},
-+  {"subi", "addi", "", nios2_negate_arg, 0, 3}
-+  /* Add further pseudo-ops here.  */
-+};
-+
-+#define NIOS2_NUM_PSEUDO_INSNS \
-+	((sizeof(nios2_ps_insn_info_structs)/ \
-+	  sizeof(nios2_ps_insn_info_structs[0])))
-+const int nios2_num_ps_insn_info_structs = NIOS2_NUM_PSEUDO_INSNS;
-+
-+/* Special relocation directive strings.  */
-+
-+struct nios2_special_relocS
-+{
-+  const char *string;
-+  bfd_reloc_code_real_type reloc_type;
-+};
-+
-+struct nios2_special_relocS nios2_special_reloc[] = {
-+  {"%hiadj", BFD_RELOC_NIOS2_HIADJ16},
-+  {"%hi", BFD_RELOC_NIOS2_HI16},
-+  {"%lo", BFD_RELOC_NIOS2_LO16},
-+  {"%gprel", BFD_RELOC_NIOS2_GPREL},
-+  {"%call", BFD_RELOC_NIOS2_CALL16},
-+  {"%gotoff_lo", BFD_RELOC_NIOS2_GOTOFF_LO},
-+  {"%gotoff_hiadj", BFD_RELOC_NIOS2_GOTOFF_HA},
-+  {"%tls_gd", BFD_RELOC_NIOS2_TLS_GD16},
-+  {"%tls_ldm", BFD_RELOC_NIOS2_TLS_LDM16},
-+  {"%tls_ldo", BFD_RELOC_NIOS2_TLS_LDO16},
-+  {"%tls_ie", BFD_RELOC_NIOS2_TLS_IE16},
-+  {"%tls_le", BFD_RELOC_NIOS2_TLS_LE16},
-+  {"%gotoff", BFD_RELOC_NIOS2_GOTOFF},
-+  {"%got", BFD_RELOC_NIOS2_GOT16}
-+};
-+
-+#define NIOS2_NUM_SPECIAL_RELOCS \
-+	(sizeof(nios2_special_reloc)/sizeof(nios2_special_reloc[0]))
-+const int nios2_num_special_relocs = NIOS2_NUM_SPECIAL_RELOCS;
-+
-+/* The function nios2_modify_arg appends the string modifier to the string
-+   contained in the argument at index in the array parsedArgs[].  */
-+void
-+nios2_modify_arg (const char *modifier,
-+		  char **parsedArgs, int unused ATTRIBUTE_UNUSED, int index)
-+{
-+  gas_assert (index < NIOS2_MAX_INSN_TOKENS);
-+
-+  /* We can't just strcat here because strcat will free the memory pointed
-+     to by the first argument and allocate new memory - but at this stage,
-+     parsedArgs[index] may point into the middle of a block of allocated
-+     memory, so trying to free it will cause a seg fault.  */
-+  char *tmp = parsedArgs[index];
-+  parsedArgs[index] =
-+    (char *) malloc (strlen (parsedArgs[index]) + strlen (modifier) + 1);
-+  strcpy (parsedArgs[index], tmp);
-+  strcat (parsedArgs[index], modifier);
-+}
-+
-+
-+void
-+nios2_negate_arg (const char *modifier ATTRIBUTE_UNUSED,
-+		  char **parsedArgs, int unused ATTRIBUTE_UNUSED, int index)
-+{
-+  char *tmp = parsedArgs[index];
-+  parsedArgs[index] =
-+    (char *) malloc (strlen ("~(") + strlen (parsedArgs[index]) +
-+		     strlen (")+1") + 1);
-+
-+  strcpy (parsedArgs[index], "~(");
-+  strcat (parsedArgs[index], tmp);
-+  strcat (parsedArgs[index], ")+1");
-+}
-+
-+/* The function nios2_swap_args swaps the pointers at indices index_1 and
-+   index_2 in the array parsedArgs[] - this is used for operand swapping
-+   for comparison operations.  */
-+void
-+nios2_swap_args (const char *unused ATTRIBUTE_UNUSED,
-+		 char **parsedArgs, int index_1, int index_2)
-+{
-+  char *tmp;
-+  gas_assert (index_1 < NIOS2_MAX_INSN_TOKENS && index_2 < NIOS2_MAX_INSN_TOKENS);
-+  tmp = parsedArgs[index_1];
-+  parsedArgs[index_1] = parsedArgs[index_2];
-+  parsedArgs[index_2] = tmp;
-+}
-+
-+/* This function appends the string append to the array of strings in
-+   parsedArgs numAppend times starting at index startIndex in the array.  */
-+void
-+nios2_append_arg (const char *append, char **parsedArgs, int numAppend,
-+		  int startIndex)
-+{
-+  int i, count;
-+  char *tmp;
-+
-+  gas_assert ((startIndex + numAppend) < NIOS2_MAX_INSN_TOKENS);
-+  i = startIndex;
-+  count = numAppend;
-+
-+  if (nios2_mode == NIOS2_MODE_TEST)
-+    tmp = parsedArgs[startIndex];
-+  else
-+    tmp = NULL;
-+
-+  while (count > 0)
-+    {
-+      parsedArgs[i] = (char *) append;
-+      ++i;
-+      --count;
-+    }
-+
-+  gas_assert (i == (startIndex + numAppend));
-+  parsedArgs[i] = tmp;
-+  parsedArgs[i + 1] = NULL;
-+}
-+
-+/* This function inserts the string insert numInsert times in the array
-+   parsedArgs, starting at the index startIndex.  */
-+void
-+nios2_insert_arg (const char *insert, char **parsedArgs, int numInsert,
-+		  int startIndex)
-+{
-+  int i, count, from, to;
-+
-+  gas_assert ((startIndex + numInsert) < NIOS2_MAX_INSN_TOKENS);
-+
-+  to = startIndex + numInsert;
-+  from = startIndex;
-+
-+  /* Move the existing arguments up to create space.  */
-+  i = NIOS2_MAX_INSN_TOKENS;
-+  while ((i - numInsert) >= startIndex)
-+    {
-+      parsedArgs[i] = parsedArgs[i - numInsert];
-+      --i;
-+    }
-+
-+  i = startIndex;
-+  count = numInsert;
-+  while (count > 0)
-+    {
-+      parsedArgs[i] = (char *) insert;
-+      ++i;
-+      --count;
-+    }
-+}
-+
-+/* This function swaps the pseudo-op for a real op.
-+   FIXME - only works for 1-to-1 correspondence.  */
-+void
-+nios2_translate_pseudo_insn (nios2_insn_infoS * insn)
-+{
-+
-+  nios2_ps_insn_infoS *ps_insn;
-+
-+  /* Find which real insn the pseudo-op transates to and
-+     switch the insn_info ptr to point to it.  */
-+  ps_insn =
-+    (nios2_ps_insn_infoS *) hash_find (nios2_ps_hash,
-+				       insn->insn_nios2_opcode->name);
-+
-+  if (ps_insn != NULL)
-+    {
-+      insn->insn_nios2_opcode =
-+	(struct nios2_opcode *) hash_find (nios2_opcode_hash, ps_insn->insn);
-+      insn->insn_tokens[0] = insn->insn_nios2_opcode->name;
-+      /* Modify the args so they work with the real insn.  */
-+      ps_insn->arg_modifer_func (ps_insn->arg_modifier,
-+				 (char **) insn->insn_tokens, ps_insn->num,
-+				 ps_insn->index);
-+    }
-+  else
-+    {
-+      /* we cannot recover from this.  */
-+      as_fatal (_("unrecognized pseudo-instruction %s"),
-+		ps_insn->pseudo_insn);
-+    }
-+}
-+
-+/********************************************************************
-+  The following functions are called by machine-independent parts of
-+  the assembler
-+ ********************************************************************/
-+
-+int
-+md_parse_option (int c, char *arg ATTRIBUTE_UNUSED)
-+{
-+  switch (c)
-+    {
-+    case 'r':
-+      /* hidden option for self-test mode */
-+      nios2_mode = NIOS2_MODE_TEST;
-+      break;
-+    case OPTION_RELAX_ALL:
-+      nios2_as_options.relax = relax_all;
-+      break;
-+    case OPTION_NORELAX:
-+      nios2_as_options.relax = relax_none;
-+      break;
-+    case OPTION_RELAX_SECTION:
-+      nios2_as_options.relax = relax_section;
-+      break;
-+    case OPTION_EB:
-+      target_big_endian = 1;
-+      break;
-+    case OPTION_EL:
-+      target_big_endian = 0;
-+      break;
-+    default:
-+      return 0;
-+      break;
-+    }
-+
-+  return 1;
-+}
-+
-+/* We can choose to be big-endian or little-endian at runtime based
-+   on a switch.  */
-+const char *
-+nios2_target_format (void)
-+{
-+  return target_big_endian ? "elf32-bignios2" : "elf32-littlenios2";
-+}
-+
-+/* Machine-dependent usage message. */
-+void
-+md_show_usage (FILE * stream)
-+{
-+  fprintf (stream, "        NIOS2 options:\n"
-+           "  -relax-all            replace all branch and call "
-+           "instructions with jmp and callr sequences\n"
-+           "  -relax-section        replace identified out of range "
-+           "branches with jmp sequences (default)\n"
-+           "  -no-relax             do not replace any branches or calls\n"
-+           "  -EB                   force big-endian byte ordering\n"
-+           "  -EL                   force little-endian byte ordering\n");
-+}
-+
-+/* This function is called once, at assembler startup time.
-+   It should set up all the tables, etc. that the MD part of the
-+   assembler will need. */
-+void
-+md_begin (void)
-+{
-+  int i;
-+  const char *inserted;
-+
-+  /* Create and fill a hashtable for the New Jersey opcodes, registers and
-+     arguments.  */
-+  nios2_opcode_hash = hash_new ();
-+  nios2_reg_hash = hash_new ();
-+  nios2_arg_hash = hash_new ();
-+  nios2_ps_hash = hash_new ();
-+
-+  for (i = 0; i < NUMOPCODES; ++i)
-+    {
-+      inserted =
-+	hash_insert (nios2_opcode_hash, nios2_opcodes[i].name,
-+		     (PTR) & nios2_opcodes[i]);
-+      if (inserted != NULL)
-+	{
-+	  fprintf (stderr, _("internal error: can't hash `%s': %s\n"),
-+		   nios2_opcodes[i].name, inserted);
-+	  /* Probably a memory allocation problem?  Give up now.  */
-+	  as_fatal (_("Broken assembler.  No assembly attempted."));
-+	}
-+    }
-+
-+  for (i = 0; i < nios2_num_regs; ++i)
-+    {
-+      inserted =
-+	hash_insert (nios2_reg_hash, nios2_regs[i].name,
-+		     (PTR) & nios2_regs[i]);
-+      if (inserted != NULL)
-+	{
-+	  fprintf (stderr, _("internal error: can't hash `%s': %s\n"),
-+		   nios2_regs[i].name, inserted);
-+	  /* Probably a memory allocation problem?  Give up now.  */
-+	  as_fatal (_("Broken assembler.  No assembly attempted."));
-+	}
-+
-+    }
-+
-+  for (i = 0; i < nios2_num_arg_info_structs; ++i)
-+    {
-+      inserted =
-+	hash_insert (nios2_arg_hash, nios2_arg_info_structs[i].args,
-+		     (PTR) & nios2_arg_info_structs[i]);
-+      if (inserted != NULL)
-+	{
-+	  fprintf (stderr, _("internal error: can't hash `%s': %s\n"),
-+		   nios2_arg_info_structs[i].args, inserted);
-+	  /* Probably a memory allocation problem?  Give up now.  */
-+	  as_fatal (_("Broken assembler.  No assembly attempted."));
-+	}
-+    }
-+
-+  for (i = 0; i < nios2_num_ps_insn_info_structs; ++i)
-+    {
-+      inserted =
-+	hash_insert (nios2_ps_hash, nios2_ps_insn_info_structs[i].pseudo_insn,
-+		     (PTR) & nios2_ps_insn_info_structs[i]);
-+      if (inserted != NULL)
-+	{
-+	  fprintf (stderr, _("internal error: can't hash `%s': %s\n"),
-+		   nios2_ps_insn_info_structs[i].pseudo_insn, inserted);
-+	  /* Probably a memory allocation problem?  Give up now.  */
-+	  as_fatal (_("Broken assembler.  No assembly attempted."));
-+	}
-+    }
-+
-+  /* Assembler option defaults.  */
-+  nios2_as_options.noat = FALSE;
-+  nios2_as_options.nobreak = FALSE;
-+
-+  /* Debug information is incompatible with relaxation.  */
-+  if (debug_type != DEBUG_UNSPECIFIED)
-+    {
-+      nios2_as_options.relax = relax_none;
-+    }
-+
-+  /* Initialize the alignment data.  */
-+  nios2_current_align_seg = now_seg;
-+  nios2_last_label = NULL;
-+  nios2_current_align = 0;
-+}
-+
-+
-+
-+
-+/* Made this global to avoid changing one function prototype.  */
-+nios2_insn_infoS insn;
-+
-+/* Assembles a single line of Nios II assembly language.  */
-+void
-+md_assemble (char *op_str)
-+{
-+  char *argstr;
-+  char *op_strdup;
-+  nios2_arg_infoS *arg_info;
-+  unsigned long saved_pinfo = 0;
-+
-+  /* Make sure we are aligned on a 4-byte boundary.  */
-+  if (nios2_current_align < 2)
-+    nios2_align (2, NULL, nios2_last_label);
-+  else if (nios2_current_align > 2)
-+    nios2_current_align = 2;
-+  nios2_last_label = NULL;
-+
-+
-+  /* We don't want to clobber to op_str
-+     because we want to be able to use it in messages.  */
-+  op_strdup = strdup (op_str);
-+
-+  insn.insn_tokens[0] = strtok (op_strdup, " ");
-+  argstr = strtok (NULL, "");
-+
-+  /* Assemble the opcode.  */
-+  insn.insn_nios2_opcode =
-+    (struct nios2_opcode *) hash_find (nios2_opcode_hash,
-+				       insn.insn_tokens[0]);
-+  insn.insn_reloc = NULL;
-+
-+  if (insn.insn_nios2_opcode != NULL)
-+    {
-+      /* Set the opcode for the instruction.  */
-+      insn.insn_code = insn.insn_nios2_opcode->match;
-+
-+      /* Parse the arguments pointed to by argstr.  */
-+      if (nios2_mode == NIOS2_MODE_ASSEMBLE)
-+	{
-+	  nios2_parse_args (argstr, insn.insn_nios2_opcode->args,
-+			    (char **) &insn.insn_tokens[1]);
-+	}
-+      else
-+	{
-+	  nios2_parse_args (argstr, insn.insn_nios2_opcode->args_test,
-+			    (char **) &insn.insn_tokens[1]);
-+	}
-+
-+      /* We need to preserve the MOVIA macro as this is clobbered by
-+         translate_pseudo_insn.  */
-+      if (insn.insn_nios2_opcode->pinfo == NIOS2_INSN_MACRO_MOVIA)
-+	{
-+	  saved_pinfo = NIOS2_INSN_MACRO_MOVIA;
-+	}
-+      /* If the instruction is an pseudo-instruction, we want to replace it
-+         with its real equivalent, and then continue.  */
-+      if ((insn.insn_nios2_opcode->pinfo & NIOS2_INSN_MACRO) ==
-+	  NIOS2_INSN_MACRO)
-+	{
-+	  nios2_translate_pseudo_insn (&insn);
-+	}
-+
-+      /* Find the assemble function, and call it.  */
-+      arg_info =
-+	(nios2_arg_infoS *) hash_find (nios2_arg_hash,
-+				       insn.insn_nios2_opcode->args);
-+      if (arg_info != NULL)
-+	{
-+	  arg_info->assemble_args_func (&insn);
-+
-+	  if (nios2_as_options.relax != relax_none
-+	      && insn.insn_nios2_opcode->pinfo & NIOS2_INSN_UBRANCH)
-+	    output_ubranch ();
-+	  else if (nios2_as_options.relax != relax_none
-+		   && insn.insn_nios2_opcode->pinfo & NIOS2_INSN_CBRANCH)
-+	    output_cbranch ();
-+	  else if (nios2_as_options.relax == relax_all
-+		   && insn.insn_nios2_opcode->pinfo & NIOS2_INSN_CALL)
-+	    output_call ();
-+	  else if (insn.insn_nios2_opcode->pinfo & NIOS2_INSN_ANDI)
-+	    output_andi ();
-+	  else if (insn.insn_nios2_opcode->pinfo & NIOS2_INSN_ORI)
-+	    output_ori ();
-+	  else if (insn.insn_nios2_opcode->pinfo & NIOS2_INSN_XORI)
-+	    output_xori ();
-+	  else if (insn.insn_nios2_opcode->pinfo & NIOS2_INSN_ADDI)
-+	    output_addi ();
-+	  else if (saved_pinfo == NIOS2_INSN_MACRO_MOVIA)
-+	    output_movia ();
-+	  else
-+	    output_insn ();
-+	}
-+      else
-+	{
-+	  /* The assembler is broken.  */
-+	  fprintf (stderr,
-+		   _("internal error: %s is not a valid argument syntax\n"),
-+		   insn.insn_nios2_opcode->args);
-+	  /* Probably a memory allocation problem.  Give up now.  */
-+	  as_fatal (_("Broken assembler.  No assembly attempted."));
-+	}
-+    }
-+  else
-+    {
-+      /* Unrecognised instruction - error.  */
-+      as_bad (_("unrecognised instruction %s"), insn.insn_tokens[0]);
-+    }
-+}
-+
-+/* Output a normal instruction.  */
-+static void
-+output_insn ()
-+{
-+  char *f;
-+  nios2_insn_relocS *reloc;
-+
-+  f = frag_more (4);
-+  /* This allocates enough space for the instruction
-+     and puts it in the current frag.  */
-+  md_number_to_chars (f, insn.insn_code, 4);
-+  /* Emit debug info.  */
-+  dwarf2_emit_insn (4);
-+  /* Create any fixups.  */
-+  reloc = insn.insn_reloc;
-+  while (reloc != NULL)
-+    {
-+      /* This creates any fixups to be acted on later.  */
-+      fix_new_exp (frag_now, f - frag_now->fr_literal, 4,
-+		   &reloc->reloc_expression, reloc->reloc_pcrel,
-+		   reloc->reloc_type);
-+      reloc = reloc->reloc_next;
-+    }
-+}
-+
-+/* Output an unconditional branch.  */
-+static void
-+output_ubranch (void)
-+{
-+  char *f;
-+  nios2_insn_relocS *reloc;
-+  symbolS *symp;
-+  offsetT offset;
-+
-+  reloc = insn.insn_reloc;
-+
-+  /* If the reloc is NULL, there was an error assembling the branch.  */
-+  if (reloc != NULL)
-+    {
-+
-+      symp = reloc->reloc_expression.X_add_symbol;
-+      offset = reloc->reloc_expression.X_add_number;
-+
-+      /* We must tag debug info here since we can't do it after
-+         calling frag_var.  */
-+      dwarf2_emit_insn (4);
-+
-+      /* We create a machine dependent frag which can grow
-+         to accommodate the largest possible instruction sequence
-+         this may generate.  */
-+      f = frag_var (rs_machine_dependent,
-+		    RELAX_MAX_SIZE (UBRANCH),
-+		    RELAX_SIZE (UBRANCH),
-+		    RELAX_SUBSTATE (UBRANCH), symp, offset, NULL);
-+
-+      md_number_to_chars (f, insn.insn_code, 4);
-+
-+      /* We leave fixup generation to md_convert_frag.  */
-+    }
-+}
-+
-+/* Output a conditional branch.  */
-+static void
-+output_cbranch (void)
-+{
-+  char *f;
-+  nios2_insn_relocS *reloc;
-+  symbolS *symp;
-+  offsetT offset;
-+
-+  reloc = insn.insn_reloc;
-+
-+  /* If the reloc is NULL, there was an error assembling the branch.  */
-+  if (reloc != NULL)
-+    {
-+
-+      symp = reloc->reloc_expression.X_add_symbol;
-+      offset = reloc->reloc_expression.X_add_number;
-+
-+      /* We must tag debug info here since we can't do it after
-+         calling frag_var.  */
-+      dwarf2_emit_insn (4);
-+
-+      /* We create a machine dependent frag which can grow
-+         to accommodate the largest possible instruction sequence
-+         this may generate.  */
-+      f = frag_var (rs_machine_dependent,
-+		    RELAX_MAX_SIZE (CBRANCH),
-+		    RELAX_SIZE (CBRANCH),
-+		    RELAX_SUBSTATE (CBRANCH), symp, offset, NULL);
-+
-+      md_number_to_chars (f, insn.insn_code, 4);
-+
-+
-+      /* We leave fixup generation to md_convert_frag.  */
-+    }
-+}
-+
-+/* Output a call sequence.  Since calls are not pc-relative for NIOS2,
-+   but are page-relative, we cannot tell at any stage in assembly
-+   whether a call will be out of range since a section may be linked
-+   at any address.  So if we are relaxing, we convert all call instructions
-+   to long call sequences, and rely on the linker to relax them back to
-+   short calls.  */
-+static void
-+output_call (void)
-+{
-+  char *f;
-+  nios2_insn_relocS *reloc;
-+  f = frag_more (12);
-+  /* This allocates enough space for the instruction
-+     and puts it in the current frag.  */
-+  reloc = insn.insn_reloc;
-+
-+  /* If the reloc is NULL, there was an error assembling the branch.  */
-+  if (reloc != NULL)
-+    {
-+      md_number_to_chars (f, OP_MATCH_ORHI | 0x00400000, 4);
-+      dwarf2_emit_insn (4);
-+      md_number_to_chars (f + 4, OP_MATCH_ORI | 0x08400000, 4);
-+      dwarf2_emit_insn (4);
-+      md_number_to_chars (f + 8, OP_MATCH_CALLR | 0x08000000, 4);
-+      dwarf2_emit_insn (4);
-+      fix_new (frag_now, f - frag_now->fr_literal, 4,
-+	       reloc->reloc_expression.X_add_symbol,
-+	       reloc->reloc_expression.X_add_number, 0,
-+	       BFD_RELOC_NIOS2_CALLR);
-+
-+
-+    }
-+}
-+
-+
-+static int
-+can_evaluate_expr (void)
-+{
-+  /* Remove this check for null and the invalid insn "ori r9, 1234" seg faults. */
-+  if (!insn.insn_reloc)
-+    {
-+      /* ??? Ideally we should do something other than as_fatal here as we can
-+ 	 continue to assemble.
-+         However this function (actually the output_* functions) should not
-+	 have been called in the first place once an illegal instruction had
-+	 been encountered.  */
-+      as_fatal (_("Invalid instruction encountered, cannot recover. No assembly attempted."));
-+    }
-+
-+  if (insn.insn_reloc->reloc_expression.X_op == O_constant)
-+    return 1;
-+
-+  return 0;
-+}
-+
-+static int
-+get_expr_value (void)
-+{
-+  int value = 0;
-+  if (insn.insn_reloc->reloc_expression.X_op == O_constant)
-+    value = insn.insn_reloc->reloc_expression.X_add_number;
-+  return value;
-+}
-+
-+/* Output an addi - will silently convert to
-+   orhi if rA = r0 and (expr & 0xffff0000) == 0.  */
-+static void
-+output_addi (void)
-+{
-+  int expr_val = 0;
-+  if (can_evaluate_expr ())
-+    {
-+      expr_val = get_expr_value ();
-+      if (GET_INSN_FIELD (RRS, insn.insn_code) == 0 &&
-+	  (expr_val & 0xffff) == 0 && expr_val != 0)
-+	{
-+
-+	  /* We really want a movhi (orhi) here.  */
-+	  insn.insn_code = (insn.insn_code & ~OP_MATCH_ADDI) | OP_MATCH_ORHI;
-+	  insn.insn_reloc->reloc_expression.X_add_number =
-+	    (insn.insn_reloc->reloc_expression.X_add_number >> 16) & 0xffff;
-+	  insn.insn_reloc->reloc_type = BFD_RELOC_NIOS2_U16;
-+	}
-+    }
-+
-+  /* Output an instruction.  */
-+  output_insn ();
-+}
-+
-+static void
-+output_andi (void)
-+{
-+  int expr_val = 0;
-+  if (can_evaluate_expr ())
-+    {
-+      expr_val = get_expr_value ();
-+      if (expr_val != 0 && (expr_val & 0xffff) == 0)
-+	{
-+	  /* We really want a movhi (orhi) here.  */
-+	  insn.insn_code = (insn.insn_code & ~OP_MATCH_ANDI) | OP_MATCH_ANDHI;
-+	  insn.insn_reloc->reloc_expression.X_add_number =
-+	    (insn.insn_reloc->reloc_expression.X_add_number >> 16) & 0xffff;
-+	  insn.insn_reloc->reloc_type = BFD_RELOC_NIOS2_U16;
-+	}
-+    }
-+
-+  /* Output an instruction.  */
-+  output_insn ();
-+}
-+
-+static void
-+output_ori (void)
-+{
-+  int expr_val = 0;
-+  if (can_evaluate_expr ())
-+    {
-+      expr_val = get_expr_value ();
-+      if (expr_val != 0 && (expr_val & 0xffff) == 0)
-+	{
-+	  /* We really want a movhi (orhi) here.  */
-+	  insn.insn_code = (insn.insn_code & ~OP_MATCH_ORI) | OP_MATCH_ORHI;
-+	  insn.insn_reloc->reloc_expression.X_add_number =
-+	    (insn.insn_reloc->reloc_expression.X_add_number >> 16) & 0xffff;
-+	  insn.insn_reloc->reloc_type = BFD_RELOC_NIOS2_U16;
-+	}
-+    }
-+
-+  /* Output an instruction.  */
-+  output_insn ();
-+}
-+
-+static void
-+output_xori (void)
-+{
-+  int expr_val = 0;
-+  if (can_evaluate_expr ())
-+    {
-+      expr_val = get_expr_value ();
-+      if (expr_val != 0 && (expr_val & 0xffff) == 0)
-+	{
-+	  /* We really want a movhi (orhi) here.  */
-+	  insn.insn_code = (insn.insn_code & ~OP_MATCH_XORI) | OP_MATCH_XORHI;
-+	  insn.insn_reloc->reloc_expression.X_add_number =
-+	    (insn.insn_reloc->reloc_expression.X_add_number >> 16) & 0xffff;
-+	  insn.insn_reloc->reloc_type = BFD_RELOC_NIOS2_U16;
-+	}
-+    }
-+
-+  /* Output an instruction.  */
-+  output_insn ();
-+}
-+
-+
-+/* Output a movhi/addi pair for the movia pseudo-op.  */
-+static void
-+output_movia (void)
-+{
-+  char *f;
-+  nios2_insn_relocS *reloc;
-+  f = frag_more (8);
-+  unsigned long reg_index = GET_INSN_FIELD (IRT, insn.insn_code);
-+
-+  /* This allocates enough space for the instruction
-+     and puts it in the current frag.  */
-+  reloc = insn.insn_reloc;
-+
-+  /* If the reloc is NULL, there was an error assembling the movia.  */
-+  if (reloc != NULL)
-+    {
-+      md_number_to_chars (f, insn.insn_code, 4);
-+      dwarf2_emit_insn (4);
-+      md_number_to_chars (f + 4,
-+			  OP_MATCH_ADDI | (reg_index << OP_SH_IRT) |
-+			  (reg_index << OP_SH_IRS), 4);
-+      dwarf2_emit_insn (4);
-+      fix_new (frag_now, f - frag_now->fr_literal, 4,
-+	       reloc->reloc_expression.X_add_symbol,
-+	       reloc->reloc_expression.X_add_number, 0,
-+	       BFD_RELOC_NIOS2_HIADJ16);
-+      fix_new (frag_now, f + 4 - frag_now->fr_literal, 4,
-+	       reloc->reloc_expression.X_add_symbol,
-+	       reloc->reloc_expression.X_add_number, 0, BFD_RELOC_NIOS2_LO16);
-+
-+    }
-+}
-+
-+/* Function md_chars_to_number takes the sequence of
-+   bytes in buf and returns the corresponding value
-+   in an int. n must be 1, 2 or 4.  */
-+valueT
-+md_chars_to_number (char *buf, int n)
-+{
-+  int i;
-+  valueT val;
-+
-+  gas_assert (n == 1 || n == 2 || n == 4);
-+
-+  val = 0;
-+  if (target_big_endian)
-+  {
-+    for (i = 0; i < n; ++i)
-+      {
-+        val = val | ((buf[i] & 0xff) << 8 * (n - (i + 1)));
-+      }
-+  }
-+  else
-+  {
-+    for (i = 0; i < n; ++i)
-+      {
-+        val = val | ((buf[i] & 0xff) << 8 * i);
-+      }
-+  }
-+  return val;
-+}
-+
-+
-+/* This function turns a C long int, short int or char
-+   into the series of bytes that represent the number
-+   on the target machine.  */
-+void
-+md_number_to_chars (char *buf, valueT val, int n)
-+{
-+  gas_assert (n == 1 || n == 2 || n == 4);
-+  if (target_big_endian)
-+    {
-+      number_to_chars_bigendian (buf, val, n);
-+    }
-+  else
-+    {
-+      number_to_chars_littleendian (buf, val, n);
-+    }
-+}
-+
-+/* This function is identical to md_number_to_chars.  */
-+void
-+md_number_to_imm (char *buf, valueT val, int n)
-+{
-+  md_number_to_chars (buf, val, n);
-+}
-+
-+/* This function is identical to md_number_to_chars.  */
-+void
-+md_number_to_disp (char *buf, valueT val, int n)
-+{
-+  md_number_to_chars (buf, val, n);
-+}
-+
-+/* This function is identical to md_number_to_chars.  */
-+void
-+md_number_to_field (char *buf, valueT val, int n)
-+{
-+  md_number_to_chars (buf, val, n);
-+}
-+
-+/* Turn a string in input_line_pointer into a floating point constant
-+   of type TYPE, and store the appropriate bytes in *LITP.  The number
-+   of LITTLENUMS emitted is stored in *SIZEP.  An error message is
-+   returned, or NULL on OK.  */
-+char *
-+md_atof (int type, char *litP, int *sizeP)
-+{
-+  int prec;
-+  LITTLENUM_TYPE words[4];
-+  char *t;
-+  int i;
-+
-+  switch (type)
-+    {
-+    case 'f':
-+      prec = 2;
-+      break;
-+    case 'd':
-+      prec = 4;
-+      break;
-+    default:
-+      *sizeP = 0;
-+      return _("bad call to md_atof");
-+    }
-+
-+  t = atof_ieee (input_line_pointer, type, words);
-+  if (t)
-+    input_line_pointer = t;
-+
-+  *sizeP = prec * 2;
-+
-+  if (! target_big_endian)
-+    {
-+      for (i = prec - 1; i >= 0; i--)
-+	{
-+	  md_number_to_chars (litP, (valueT) words[i], 2);
-+	  litP += 2;
-+	}
-+    }
-+  else
-+    {
-+      for (i = 0; i < prec; i++)
-+	{
-+	  md_number_to_chars (litP, (valueT) words[i], 2);
-+	  litP += 2;
-+	}
-+    }
-+
-+  return NULL;
-+}
-+
-+
-+
-+int md_short_jump_size;
-+int md_long_jump_size;
-+
-+void
-+md_create_short_jump (char *result_ptr ATTRIBUTE_UNUSED,
-+		      addressT from_addr ATTRIBUTE_UNUSED,
-+		      addressT to_addr ATTRIBUTE_UNUSED,
-+		      fragS * frag ATTRIBUTE_UNUSED,
-+		      symbolS * to_symbol ATTRIBUTE_UNUSED)
-+{
-+  abort ();
-+}
-+
-+void
-+md_create_long_jump (char *ptr ATTRIBUTE_UNUSED,
-+		     addressT from_addr ATTRIBUTE_UNUSED,
-+		     addressT to_addr ATTRIBUTE_UNUSED,
-+		     fragS * frag ATTRIBUTE_UNUSED,
-+		     symbolS * to_symbol ATTRIBUTE_UNUSED)
-+{
-+  abort ();
-+}
-+
-+int
-+md_estimate_size_before_relax (fragS * fragp, segT segment ATTRIBUTE_UNUSED)
-+{
-+  /* We only support ELF targets. */
-+
-+  switch (nios2_as_options.relax)
-+    {
-+    case relax_none:
-+    case relax_section:
-+      break;
-+    case relax_all:
-+      /* The NIOS2 linker performs relaxation so the assembler
-+         always assumes the worst case, so that the linker can
-+         replace with a better case if possible - this way, linker
-+         relaxation can never cause a short branch to be out of range.  */
-+      while (nios2_relax_table[fragp->fr_subtype].rlx_more != 0)
-+	fragp->fr_subtype = nios2_relax_table[fragp->fr_subtype].rlx_more;
-+      break;
-+    default:
-+      abort ();
-+      break;
-+    }
-+
-+  /* Return the estimated size of the frag.  */
-+  return nios2_relax_table[fragp->fr_subtype].rlx_length;
-+}
-+
-+
-+void
-+md_convert_frag (bfd * headers ATTRIBUTE_UNUSED, segT seg ATTRIBUTE_UNUSED,
-+		 fragS * fragp)
-+{
-+  unsigned char *buffer = fragp->fr_literal + fragp->fr_fix;
-+  relax_substateT subtype = fragp->fr_subtype;
-+  unsigned int growth = RELAX_SIZE (subtype);
-+  unsigned int br_opcode, br_op_a, br_op_b;
-+
-+  switch (subtype)
-+    {
-+    case UBRANCH:
-+      /* We just need to generate the fixup for the symbol and offset.  */
-+      fix_new (fragp, fragp->fr_fix, 4, fragp->fr_symbol, fragp->fr_offset, 1,
-+	       BFD_RELOC_16_PCREL);
-+      break;
-+    case UJMP:
-+      /* Replace ubranch at fr_fix with :
-+         movhi at, %hi(symbol+offset)
-+         ori at, %lo(symbol+offset)
-+         jmp at
-+       */
-+      md_number_to_chars (buffer, OP_MATCH_ORHI | 0x00400000, 4);
-+      md_number_to_chars (buffer + 4, OP_MATCH_ORI | 0x08400000, 4);
-+      md_number_to_chars (buffer + 8, OP_MATCH_JMP | 0x08000000, 4);
-+      fix_new (fragp, fragp->fr_fix, 4, fragp->fr_symbol, fragp->fr_offset, 0,
-+	       BFD_RELOC_NIOS2_UJMP);
-+      break;
-+    case CBRANCH:
-+      /* We just need to generate the fixup for the symbol and offset.  */
-+      fix_new (fragp, fragp->fr_fix, 4, fragp->fr_symbol, fragp->fr_offset, 1,
-+	       BFD_RELOC_16_PCREL);
-+      break;
-+    case CJMP:
-+      /* Replace cbranch at fr_fix with :
-+         b(opposite condition) r, s, skip
-+         movhi at, %hi(symbol+offset)
-+         ori at, %lo(symbol+offset)
-+         jmp at
-+         skip:
-+         ...
-+       */
-+      br_opcode = md_chars_to_number (buffer, 4);
-+
-+      switch (br_opcode & OP_MASK_OP)
-+	{
-+	case OP_MATCH_BEQ:
-+	  br_opcode =
-+	    (br_opcode & ~OP_MASK_OP) | OP_MATCH_BNE | (12 << OP_SH_IMM16);
-+	  break;
-+	case OP_MATCH_BNE:
-+	  br_opcode =
-+	    (br_opcode & ~OP_MASK_OP) | OP_MATCH_BEQ | (12 << OP_SH_IMM16);
-+	  break;
-+	case OP_MATCH_BGE:
-+	case OP_MATCH_BGEU:
-+	case OP_MATCH_BLT:
-+	case OP_MATCH_BLTU:
-+	  /* Swap the operands.  */
-+	  br_op_a = (br_opcode & OP_MASK_RRT) << 5;
-+	  br_op_b = (br_opcode & OP_MASK_RRS) >> 5;
-+	  br_opcode =
-+	    (br_opcode & ~(OP_MASK_RRS | OP_MASK_RRT)) | br_op_a | br_op_b |
-+	    (12 << OP_SH_IMM16);
-+	  break;
-+	default:
-+	  as_bad_where (fragp->fr_file, fragp->fr_line,
-+			_("expecting conditional branch for relaxation\n"));
-+	  abort ();
-+	}
-+
-+      md_number_to_chars (buffer, br_opcode, 4);
-+      md_number_to_chars (buffer + 4, OP_MATCH_ORHI | 0x00400000, 4);
-+      md_number_to_chars (buffer + 8, OP_MATCH_ORI | 0x08400000, 4);
-+      md_number_to_chars (buffer + 12, OP_MATCH_JMP | 0x08000000, 4);
-+      fix_new (fragp, fragp->fr_fix + 4, 4, fragp->fr_symbol,
-+	       fragp->fr_offset, 0, BFD_RELOC_NIOS2_CJMP);
-+      break;
-+    default:
-+      as_bad_where (fragp->fr_file, fragp->fr_line,
-+		    _("can't relax instruction\n"));
-+      abort ();
-+      break;
-+    }
-+
-+  fragp->fr_fix += growth;
-+}
-+
-+
-+/* Round up section size.  */
-+valueT
-+md_section_align (asection * seg ATTRIBUTE_UNUSED, valueT size)
-+{
-+  /* I think byte alignment is fine here */
-+  return size;
-+}
-+
-+
-+int
-+nios2_force_relocation (fixS * fixp)
-+{
-+  if (fixp->fx_r_type == BFD_RELOC_VTABLE_INHERIT
-+      || fixp->fx_r_type == BFD_RELOC_VTABLE_ENTRY
-+      || fixp->fx_r_type == BFD_RELOC_NIOS2_ALIGN)
-+    return 1;
-+
-+  return generic_force_reloc (fixp);
-+}
-+
-+/* nios2_fix_adjustable is called to see whether a reloc against a defined
-+   symbol should be converted into a reloc against a section.  */
-+int
-+nios2_fix_adjustable (fixS * fixp)
-+{
-+  if (fixp->fx_addsy == NULL)
-+    return 1;
-+
-+#ifdef OBJ_ELF
-+  /* Prevent all adjustments to global symbols.  */
-+  if (OUTPUT_FLAVOR == bfd_target_elf_flavour
-+      && (S_IS_EXTERNAL (fixp->fx_addsy) || S_IS_WEAK (fixp->fx_addsy)))
-+    return 0;
-+#endif
-+  if (fixp->fx_r_type == BFD_RELOC_VTABLE_INHERIT
-+      || fixp->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
-+    return 0;
-+
-+  /* Preserve relocations against symbols with function type.  */
-+  if (symbol_get_bfdsym (fixp->fx_addsy)->flags & BSF_FUNCTION)
-+    return 0;
-+
-+  /* Don't allow symbols to be discarded on GOT related relocs.  */
-+  if (fixp->fx_r_type == BFD_RELOC_NIOS2_GOT16
-+      || fixp->fx_r_type == BFD_RELOC_NIOS2_CALL16
-+      || fixp->fx_r_type == BFD_RELOC_NIOS2_GOTOFF_LO
-+      || fixp->fx_r_type == BFD_RELOC_NIOS2_GOTOFF_HA
-+      || fixp->fx_r_type == BFD_RELOC_NIOS2_TLS_GD16
-+      || fixp->fx_r_type == BFD_RELOC_NIOS2_TLS_LDM16
-+      || fixp->fx_r_type == BFD_RELOC_NIOS2_TLS_LDO16
-+      || fixp->fx_r_type == BFD_RELOC_NIOS2_TLS_IE16
-+      || fixp->fx_r_type == BFD_RELOC_NIOS2_TLS_LE16
-+      || fixp->fx_r_type == BFD_RELOC_NIOS2_TLS_DTPMOD
-+      || fixp->fx_r_type == BFD_RELOC_NIOS2_TLS_DTPREL
-+      || fixp->fx_r_type == BFD_RELOC_NIOS2_TLS_TPREL
-+      || fixp->fx_r_type == BFD_RELOC_NIOS2_GOTOFF)
-+    return 0;
-+
-+  return 1;
-+}
-+
-+/* nios2_frob_symbol is called in adjust_reloc_syms through the macro
-+   tc_frob_symbol - it is used to remove *ABS* references from the
-+   symbol table.  */
-+int
-+nios2_frob_symbol (symbolS * symp)
-+{
-+  if ((OUTPUT_FLAVOR == bfd_target_elf_flavour
-+       && (symp) == section_symbol (absolute_section))
-+      || !S_IS_DEFINED (symp))
-+    return 1;
-+  else
-+    return 0;
-+}
-+
-+/* The function tc_gen_reloc creates a relocation structure for the
-+   fixup fixp, and returns a pointer to it.  This structure is passed
-+   to bfd_install_relocation so that it can be written to the object
-+   file for linking.
-+*/
-+arelent *
-+tc_gen_reloc (asection * section ATTRIBUTE_UNUSED, fixS * fixp)
-+{
-+  arelent *reloc;
-+  reloc = (arelent *) xmalloc (sizeof (arelent));
-+  reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
-+  *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
-+
-+  reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
-+  reloc->addend = fixp->fx_offset; // fixp->fx_addnumber;
-+
-+  if (fixp->fx_pcrel)
-+    {
-+      switch (fixp->fx_r_type)
-+	{
-+	case BFD_RELOC_16:
-+	  fixp->fx_r_type = BFD_RELOC_16_PCREL;
-+	  break;
-+	case BFD_RELOC_NIOS2_LO16:
-+	  fixp->fx_r_type = BFD_RELOC_NIOS2_PCREL_LO;
-+	  break;
-+	case BFD_RELOC_NIOS2_HIADJ16:
-+	  fixp->fx_r_type = BFD_RELOC_NIOS2_PCREL_HA;
-+	  break;
-+	default:
-+	  break;
-+	}
-+    }
-+
-+  reloc->howto = bfd_reloc_type_lookup (stdoutput, fixp->fx_r_type);
-+  if (reloc->howto == NULL)
-+    {
-+      as_bad_where (fixp->fx_file, fixp->fx_line,
-+		    _("can't represent relocation type %s"),
-+		    bfd_get_reloc_code_name (fixp->fx_r_type));
-+
-+      /* Set howto to a garbage value so that we can keep going.  */
-+      reloc->howto = bfd_reloc_type_lookup (stdoutput, BFD_RELOC_32);
-+      gas_assert (reloc->howto != NULL);
-+    }
-+  return reloc;
-+}
-+
-+long
-+md_pcrel_from (fixS * fixP ATTRIBUTE_UNUSED)
-+{
-+  return 0;
-+}
-+
-+
-+/* Apply a fixup to the object file.  */
-+void
-+md_apply_fix (fixS * fixP, valueT * valP, segT seg ATTRIBUTE_UNUSED)
-+{
-+  const struct nios2_opcode *opcode;
-+  enum overflow_type overflow_msg_type;
-+  bfd_boolean overflowed = FALSE;
-+  valueT fixup = 0;
-+
-+  /* Assert that the fixup is one we can handle.  */
-+  gas_assert (fixP != NULL && valP != NULL &&
-+	  (fixP->fx_r_type == BFD_RELOC_8 ||
-+	   fixP->fx_r_type == BFD_RELOC_16 ||
-+	   fixP->fx_r_type == BFD_RELOC_32 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_S16 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_U16 ||
-+	   fixP->fx_r_type == BFD_RELOC_16_PCREL ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_CALL26 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_IMM5 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_CACHE_OPX ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_IMM6 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_IMM8 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_HI16 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_LO16 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_HIADJ16 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_GPREL ||
-+	   fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT ||
-+	   fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_UJMP ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_CJMP ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_CALLR ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_ALIGN ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_GOT16 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_CALL16 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_GOTOFF_LO ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_GOTOFF_HA ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_TLS_GD16 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_TLS_LDM16 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_TLS_LDO16 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_TLS_IE16 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_TLS_LE16 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_GOTOFF ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_TLS_DTPREL
-+	   /* Add other relocs here as we generate them.  */
-+	  ));
-+
-+
-+  /* The value passed in valP can be the value of a fully
-+     resolved expression, or it can be the value of a partially
-+     resolved expression.  In the former case, both fixP->fx_addsy
-+     and fixP->fx_subsy are NULL, and fixP->fx_offset == *valP, and
-+     we can fix up the instruction that fixP relates to.
-+     In the latter case, one or both of fixP->fx_addsy and
-+     fixP->fx_subsy are not NULL, and fixP->fx_offset may or may not
-+     equal *valP.  We don't need to check for fixP->fx_subsy being null
-+     because the generic part of the assembler generates an error if
-+     it is not an absolute symbol.  */
-+
-+  if (fixP->fx_addsy != NULL)
-+    {
-+      fixP->fx_addnumber = fixP->fx_offset;
-+      fixP->fx_done = 0;
-+
-+      switch (fixP->fx_r_type)
-+        {
-+        case BFD_RELOC_NIOS2_TLS_GD16:
-+        case BFD_RELOC_NIOS2_TLS_LDM16:
-+        case BFD_RELOC_NIOS2_TLS_LDO16:
-+        case BFD_RELOC_NIOS2_TLS_IE16:
-+        case BFD_RELOC_NIOS2_TLS_LE16:
-+        case BFD_RELOC_NIOS2_TLS_DTPMOD:
-+        case BFD_RELOC_NIOS2_TLS_DTPREL:
-+        case BFD_RELOC_NIOS2_TLS_TPREL:
-+          S_SET_THREAD_LOCAL (fixP->fx_addsy);
-+	  break;
-+	default:
-+	  break;
-+        }
-+    }
-+  else
-+    {
-+      valueT value;
-+
-+      char *buf;
-+      reloc_howto_type *howto;
-+      howto = bfd_reloc_type_lookup (stdoutput, fixP->fx_r_type);
-+
-+      if (howto == NULL)
-+	{
-+	  as_bad_where (fixP->fx_file, fixP->fx_line,
-+			_("relocation is not supported"));
-+	}
-+      else
-+	{
-+	  fixup += *valP;
-+
-+	  /* If this is a pc-relative relocation, we need to
-+	     subtract the current offset within the object file
-+	     FIXME : for some reason fixP->fx_pcrel isn't 1 when it should be
-+	     so I'm using the howto structure instead to determine this.  */
-+	  if (howto->pc_relative == 1)
-+	    fixup = fixup - (fixP->fx_frag->fr_address + fixP->fx_where + 4);
-+
-+
-+
-+	  /* Get the instruction to be fixed up.  */
-+	  buf = fixP->fx_frag->fr_literal + fixP->fx_where;
-+	  value = md_chars_to_number (buf, 4);
-+
-+	  /* What opcode is the instruction?  This will determine
-+	     whether we check for overflow in immediate values
-+	     and what error message we get.  */
-+	  opcode = nios2_find_opcode_hash (value);
-+	  overflow_msg_type = opcode->overflow_msg;
-+
-+	  overflowed = nios2_check_overflow (fixup, howto);
-+
-+
-+	  if (overflowed)
-+	    {
-+	      unsigned int range_min;
-+	      unsigned int range_max;
-+	      unsigned int address;
-+	      switch (overflow_msg_type)
-+		{
-+		case call_target_overflow:
-+		  range_min =
-+		    ((fixP->fx_frag->fr_address +
-+		      fixP->fx_where) & 0xf0000000);
-+		  range_max = range_min + 0x0fffffff;
-+		  address = fixup | range_min;
-+
-+		  as_bad_where (fixP->fx_file, fixP->fx_line,
-+				_(overflow_msgs[call_target_overflow]),
-+				address, range_min, range_max);
-+		  break;
-+		case branch_target_overflow:
-+		  as_bad_where (fixP->fx_file, fixP->fx_line,
-+				_(overflow_msgs[branch_target_overflow]),
-+				fixup, BYTE_B, BYTE_F);
-+		  break;
-+		case address_offset_overflow:
-+		  as_bad_where (fixP->fx_file, fixP->fx_line,
-+				_(overflow_msgs[address_offset_overflow]),
-+				opcode->name, fixup, -32768, 32767);
-+		  break;
-+		case signed_immed16_overflow:
-+		  as_bad_where (fixP->fx_file, fixP->fx_line,
-+				_(overflow_msgs[signed_immed16_overflow]),
-+				fixup, -32768, 32767);
-+		  break;
-+		case unsigned_immed16_overflow:
-+		  as_bad_where (fixP->fx_file, fixP->fx_line,
-+				_(overflow_msgs[unsigned_immed16_overflow]),
-+				fixup, 0, 65535);
-+		  break;
-+		case unsigned_immed5_overflow:
-+		  as_bad_where (fixP->fx_file, fixP->fx_line,
-+				_(overflow_msgs[unsigned_immed5_overflow]),
-+				fixup, 0, 31);
-+		  break;
-+		case custom_opcode_overflow:
-+		  as_bad_where (fixP->fx_file, fixP->fx_line,
-+				_(overflow_msgs[custom_opcode_overflow]),
-+				fixup, 0, 255);
-+		  break;
-+		default:
-+		  as_bad_where (fixP->fx_file, fixP->fx_line,
-+				_
-+				("unspecified overflow in immediate argument"));
-+		  break;
-+		}
-+	    }
-+
-+
-+	  /* Apply the rightshift.  */
-+	  fixup = ((signed)fixup) >> howto->rightshift;
-+
-+	  /* Truncate the fixup to right size.  */
-+	  switch (fixP->fx_r_type)
-+	    {
-+	    case BFD_RELOC_NIOS2_HI16:
-+	      fixup = (fixup >> 16) & 0xFFFF;
-+	      break;
-+	    case BFD_RELOC_NIOS2_LO16:
-+	      fixup = fixup & 0xFFFF;
-+	      break;
-+	    case BFD_RELOC_NIOS2_HIADJ16:
-+	      fixup = ((fixup >> 16) & 0xFFFF) + ((fixup >> 15) & 0x01);
-+	      break;
-+	    default:
-+	      fixup =
-+		(fixup << (32 - howto->bitsize)) >> (32 - howto->bitsize);
-+	      break;
-+	    }
-+
-+	  /* Fixup the instruction.  */
-+	  value = (value & ~howto->dst_mask) | (fixup << howto->bitpos);
-+	  md_number_to_chars (buf, value, 4);
-+	}
-+
-+      fixP->fx_done = 1;
-+    }
-+
-+  if (fixP->fx_r_type == 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);
-+    }
-+  else if (fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
-+    {
-+      fixP->fx_done = 0;
-+    }
-+}
-+
-+bfd_boolean
-+nios2_check_overflow (valueT fixup, reloc_howto_type * howto)
-+{
-+  /* Apply the rightshift before checking for overflow.  */
-+  fixup = ((signed)fixup) >> howto->rightshift;
-+
-+  /* Check for overflow - return TRUE if overflow, FALSE if not.  */
-+  switch (howto->complain_on_overflow)
-+    {
-+    case complain_overflow_dont:
-+      break;
-+    case complain_overflow_bitfield:
-+      if ((fixup >> howto->bitsize) != 0)
-+	return TRUE;
-+      break;
-+    case complain_overflow_signed:
-+      if ((fixup & 0x80000000) > 0)
-+	{
-+	  /* Check for negative overflow.  */
-+	  if ((signed) fixup < ((signed) 0x80000000 >> howto->bitsize))
-+	    return TRUE;
-+	}
-+      else
-+	{
-+	  /* Check for positive overflow.  */
-+	  if (fixup >= ((unsigned) 1 << (howto->bitsize - 1)))
-+	    return TRUE;
-+	}
-+      break;
-+    case complain_overflow_unsigned:
-+      if ((fixup >> howto->bitsize) != 0)
-+	return TRUE;
-+      break;
-+    default:
-+      as_bad (_("error checking for overflow - broken assembler"));
-+      break;
-+    }
-+
-+  return FALSE;
-+}
-+
-+/* Called just before the assembler exits.  */
-+void
-+md_end ()
-+{
-+  /* FIXME - not yet implemented */
-+}
-+
-+/* Under ELF we need to default _GLOBAL_OFFSET_TABLE.
-+   Otherwise we have no need to default values of symbols.  */
-+
-+symbolS *
-+md_undefined_symbol (char * name ATTRIBUTE_UNUSED)
-+{
-+#ifdef OBJ_ELF
-+  if (name[0] == '_' && name[1] == 'G'
-+      && streq (name, GLOBAL_OFFSET_TABLE_NAME))
-+    {
-+      if (!GOT_symbol)
-+        {
-+          if (symbol_find (name))
-+            as_bad ("GOT already in the symbol table");
-+
-+          GOT_symbol = symbol_new (name, undefined_section,
-+                                   (valueT) 0, & zero_address_frag);
-+        }
-+
-+      return GOT_symbol;
-+    }
-+#endif
-+
-+  return 0;
-+}
-+
-+
-+/* Creates a new nios2_insn_relocS and returns a pointer to it.  */
-+nios2_insn_relocS *
-+nios2_insn_reloc_new (bfd_reloc_code_real_type reloc_type, unsigned int pcrel)
-+{
-+  nios2_insn_relocS *retval;
-+  retval = (nios2_insn_relocS *) malloc (sizeof (nios2_insn_relocS));
-+  if (retval == NULL)
-+    {
-+      as_bad (_("can't create relocation"));
-+      abort ();
-+    }
-+
-+  /* Fill out the fields with default values.  */
-+  retval->reloc_next = NULL;
-+  retval->reloc_type = reloc_type;
-+  retval->reloc_pcrel = pcrel;
-+  return retval;
-+}
-+
-+/* Frees up memory previously allocated by nios2_insn_reloc_new().  */
-+void
-+nios2_insn_reloc_destroy (nios2_insn_relocS * reloc)
-+{
-+  gas_assert (reloc != NULL);
-+  free (reloc);
-+}
-+
-+/* The various nios2_assemble_* functions call this
-+   function to generate an expression from a string representing an expression.
-+   It then tries to evaluate the expression, and if it can, returns its value.
-+   If not, it creates a new nios2_insn_relocS and stores the expression and
-+   reloc_type for future use.  */
-+unsigned long
-+nios2_assemble_expression (const char *exprstr,
-+			   nios2_insn_infoS * insn,
-+			   nios2_insn_relocS * prev_reloc,
-+			   bfd_reloc_code_real_type reloc_type,
-+			   unsigned int pcrel)
-+{
-+  nios2_insn_relocS *reloc;
-+  char *saved_line_ptr;
-+  unsigned short value;
-+  int i;
-+
-+  gas_assert (exprstr != NULL);
-+  gas_assert (insn != NULL);
-+
-+  /* Check for relocation operators.
-+     Change the relocation type and advance the ptr to the start of
-+     the expression proper. */
-+  for (i = 0; i < nios2_num_special_relocs; i++)
-+    {
-+      if (strstr (exprstr, nios2_special_reloc[i].string) != NULL)
-+	{
-+	  reloc_type = nios2_special_reloc[i].reloc_type;
-+	  exprstr += strlen (nios2_special_reloc[i].string) + 1;
-+
-+	  /* %lo and %hiadj have different meanings for PC-relative
-+	     expressions.  */
-+	  if (pcrel)
-+	    {
-+	      if (reloc_type == BFD_RELOC_NIOS2_LO16)
-+		reloc_type = BFD_RELOC_NIOS2_PCREL_LO;
-+	      if (reloc_type == BFD_RELOC_NIOS2_HIADJ16)
-+		reloc_type = BFD_RELOC_NIOS2_PCREL_HA;
-+	    }
-+
-+	  break;
-+	}
-+    }
-+
-+  /* We potentially have a relocation.  */
-+  reloc = nios2_insn_reloc_new (reloc_type, pcrel);
-+  if (prev_reloc != NULL)
-+    prev_reloc->reloc_next = reloc;
-+  else
-+    insn->insn_reloc = reloc;
-+
-+  /* Parse the expression string.  */
-+  saved_line_ptr = input_line_pointer;
-+  input_line_pointer = (char *) exprstr;
-+  expression (&reloc->reloc_expression);
-+  input_line_pointer = saved_line_ptr;
-+
-+  /* This is redundant as the fixup will put this into
-+     the instruction, but it is included here so that
-+     self-test mode (-r) works.  */
-+  value = 0;
-+  if (nios2_mode == NIOS2_MODE_TEST)
-+    {
-+      if (reloc->reloc_expression.X_op == O_constant)
-+	value = reloc->reloc_expression.X_add_number;
-+    }
-+
-+  return (unsigned long) value;
-+}
-+
-+/* The function consume_separate takes a pointer into a string
-+   of instruction tokens (args) and a pointer into a string representing
-+   the expected sequence of tokens and separators.  It finds the first
-+   instance of the character pointed to by separator in argStr, and
-+   returns a pointer to the next element of argStr, which is the
-+   following token in the sequence.  */
-+char *
-+nios2_consume_separator (char *argStr, const char *separator)
-+{
-+  char *argPtr;
-+
-+  /* If we have a opcode reg, expr(reg) type instruction, and
-+   * we are separating the expr from the (reg), we find the last
-+   * (, just in case the expression has brackets.  */
-+
-+  if (*separator == '(')
-+    argPtr = strrchr (argStr, *separator);
-+  else
-+    argPtr = strchr (argStr, *separator);
-+
-+  if (argPtr != NULL)
-+    *argPtr++ = 0;
-+  else
-+    as_bad (_("expecting %c near %s"), *separator, argStr);
-+  return argPtr;
-+}
-+
-+/* The function consume_arg takes a pointer into a string
-+   of instruction tokens (args) and a pointer into a string
-+   representing the expected sequence of tokens and separators.
-+   It checks whether the first argument in argStr is of the
-+   expected type, throwing an error if it is not, and returns
-+   the pointer argStr.  */
-+char *
-+nios2_consume_arg (char *argStr, const char *argType)
-+{
-+  char *temp;
-+  int regno = -1;
-+
-+  switch (*argType)
-+    {
-+    case 'c':
-+      if (strncmp (argStr, "ctl", strlen ("ctl")) != 0
-+	  && strncmp (argStr, "cpuid", strlen ("cpuid")) != 0
-+	  && strncmp (argStr, "status", strlen ("status")) != 0
-+	  && strncmp (argStr, "estatus", strlen ("estatus")) != 0
-+	  && strncmp (argStr, "bstatus", strlen ("bstatus")) != 0
-+	  && strncmp (argStr, "ienable", strlen ("ienable")) != 0
-+	  && strncmp (argStr, "ipending", strlen ("ipending")) != 0
-+	  && strncmp (argStr, "exception", strlen ("exception")) != 0
-+	  && strncmp (argStr, "pteaddr", strlen ("pteaddr")) != 0
-+	  && strncmp (argStr, "tlbacc", strlen ("tlbacc")) != 0
-+	  && strncmp (argStr, "tlbmisc", strlen ("tlbmisc")) != 0
-+	  && strncmp (argStr, "fstatus", strlen ("fstatus")) != 0
-+	  && strncmp (argStr, "config", strlen ("config")) != 0
-+	  && strncmp (argStr, "mpubase", strlen ("mpubase")) != 0
-+	  && strncmp (argStr, "mpuacc", strlen ("mpuacc")) != 0
-+	  && strncmp (argStr, "badaddr", strlen ("badaddr")) != 0)
-+	{
-+	  as_bad (_("expecting control register"));
-+	}
-+      break;
-+    case 'd':
-+    case 's':
-+    case 't':
-+
-+      /* We check to make sure we don't have a control register.  */
-+      if (strncmp (argStr, "ctl", strlen ("ctl")) == 0
-+	  || strncmp (argStr, "cpuid", strlen ("cpuid")) == 0
-+	  || strncmp (argStr, "status", strlen ("status")) == 0
-+	  || strncmp (argStr, "estatus", strlen ("estatus")) == 0
-+	  || strncmp (argStr, "bstatus", strlen ("bstatus")) == 0
-+	  || strncmp (argStr, "ienable", strlen ("ienable")) == 0
-+	  || strncmp (argStr, "ipending", strlen ("ipending")) == 0
-+	  || strncmp (argStr, "exception", strlen ("exception")) == 0
-+	  || strncmp (argStr, "pteaddr", strlen ("pteaddr")) == 0
-+	  || strncmp (argStr, "tlbacc", strlen ("tlbacc")) == 0
-+	  || strncmp (argStr, "tlbmisc", strlen ("tlbmisc")) == 0
-+	  || strncmp (argStr, "fstatus", strlen ("fstatus")) == 0
-+	  || strncmp (argStr, "config", strlen ("config")) == 0
-+	  || strncmp (argStr, "mpubase", strlen ("mpubase")) == 0
-+	  || strncmp (argStr, "mpuacc", strlen ("mpuacc")) == 0
-+	  || strncmp (argStr, "badaddr", strlen ("badaddr")) == 0)
-+	{
-+	  as_bad (_("illegal use of control register"));
-+	}
-+
-+      /* And whether coprocessor registers are valid here.  */
-+      if (nios2_coproc_reg (argStr)
-+	  && insn.insn_nios2_opcode->match != OP_MATCH_CUSTOM)
-+	{
-+	  as_bad (_("illegal use of coprocessor register\n"));
-+	}
-+
-+
-+      /* Extract a register number if the register is of the
-+         form r[0-9]+, if it is a normal register, set
-+         regno to its number (0-31), else set regno to -1.  */
-+      if (argStr[0] == 'r' && ISDIGIT (argStr[1]))
-+        {
-+	  char *p = argStr;
-+
-+	  ++p;
-+	  regno = 0;
-+	  do
-+	    {
-+	      regno *= 10;
-+	      regno += *p - '0';
-+	      ++p;
-+	    }
-+	  while (ISDIGIT (*p));
-+	}
-+      else
-+        regno = -1;
-+
-+      /* And whether we are using at.  */
-+      if (!nios2_as_options.noat
-+	  && (regno == 1
-+	      || strncmp (argStr, "at", strlen ("at")) == 0))
-+        as_warn (_("Register at (r1) can sometimes be corrupted by assembler "
-+                   "optimizations.\n"
-+                   "Use .set noat to turn off those optimizations (and this "
-+		   "warning)."));
-+
-+      /* And whether we are using oci registers.  */
-+      if (!nios2_as_options.nobreak
-+	  && (regno == 25
-+	      || strncmp (argStr, "bt", strlen ("bt")) == 0))
-+	as_warn (_("The debugger will corrupt bt (r25). If you don't need to "
-+		   "debug this\n"
-+	           "code then use .set nobreak to turn off this warning."));
-+
-+      if (!nios2_as_options.nobreak
-+	  && (regno == 30
-+	      || strncmp (argStr, "ba", strlen ("ba")) == 0))
-+	as_warn (_("The debugger will corrupt ba (r30). If you don't need to "
-+		   "debug this\n"
-+	           "code then use .set nobreak to turn off this warning."));
-+      break;
-+    case 'i':
-+    case 'u':
-+      if (*argStr == '%')
-+	{
-+	  if (strstr (argStr, "%hi(") || strstr (argStr, "%lo(")
-+	      || strstr (argStr, "%hiadj(") || strstr (argStr, "%gprel(")
-+	      || strstr (argStr, "%got(") || strstr (argStr, "%call(")
-+	      || strstr (argStr, "%gotoff_lo(")
-+	      || strstr (argStr, "%gotoff_hiadj(")
-+	      || strstr (argStr, "%tls_gd(") || strstr (argStr, "%tls_ldm(")
-+	      || strstr (argStr, "%tls_ldo(") || strstr (argStr, "%tls_ie(")
-+	      || strstr (argStr, "%tls_le(") || strstr (argStr, "%gotoff("))
-+	    {
-+	      /* We zap the brackets because we don't want them confused with
-+ 		 separators.  */
-+	      temp = strchr (argStr, '(');
-+	      if (temp != NULL)
-+		*temp = ' ';
-+	      temp = strchr (argStr, ')');
-+	      if (temp != NULL)
-+		*temp = ' ';
-+	    }
-+	  else
-+	    as_bad (_("badly formed expression near %s"), argStr);
-+	}
-+      break;
-+    case 'm':
-+    case 'j':
-+    case 'k':
-+    case 'l':
-+    case 'b':
-+      /* We can't have %hi, %lo or %hiadj here.  */
-+      if (*argStr == '%')
-+	as_bad (_("badly formed expression near %s"), argStr);
-+      break;
-+    default:
-+      break;
-+    }
-+
-+#if 0
-+  /* ??? SPR:173865 This is actually supported by the HW but the documentation
-+     is a bit funny.
-+     The compiler really want the extra register, so let it have it! */
-+  /* checks for jmp 31 */
-+  /* TODO: move test that insn is jmp to somewhere better.*/
-+  if ((strncmp (insn.insn_nios2_opcode->name, "jmp", strlen ("jmp")) == 0)
-+      && (regno == 31
-+	  || strncmp (argStr, "ra", strlen ("ra")) == 0))
-+    as_bad (_("It is illegal to jump to the address contained in register ra "
-+	      "(r31). "
-+	      "To return from subroutines called by call or callr, use ret "
-+	      "instead of jmp."));
-+#endif
-+
-+  return argStr;
-+}
-+
-+/* The principal argument parsing function which takes a string
-+   representing the instruction arguments, and extracts the argument
-+   tokens.  */
-+void
-+nios2_parse_args (char *argStr, const char *parseStr, char **parsedArgs)
-+{
-+  char *p;
-+  char *end = NULL;
-+  int i;
-+  p = argStr;
-+  i = 0;
-+  bfd_boolean terminate = FALSE;
-+
-+  /* This rest of this function is it too fragile and it mostly works,
-+     therefore special case this one.  */
-+  if (*parseStr == 0 && argStr != 0)
-+    {
-+      as_bad (_("too many arguments"));
-+      parsedArgs[0] = NULL;
-+      return;
-+    }
-+
-+
-+  while (p != NULL && !terminate && i < NIOS2_MAX_INSN_TOKENS)
-+    {
-+      parsedArgs[i] = nios2_consume_arg (p, parseStr);
-+      ++parseStr;
-+      if (*parseStr != '\0')
-+	{
-+	  p = nios2_consume_separator (p, parseStr);
-+	  ++parseStr;
-+	}
-+      else
-+	{
-+	  /* Check that the argument string has no trailing arguments.  */
-+	  /* If we've got a %lo etc relocation, we've zapped the brackets with
-+ 	     spaces.  */
-+	  if (strstr (p, "%lo") == p || strstr (p, "%hi") == p
-+	      || strstr (p, "%hiadj") == p || strstr (p, "%gprel") == p
-+              || strstr (p, "%got") == p || strstr (argStr, "%call")
-+              || strstr (p, "%gotoff_lo") == p
-+              || strstr (p, "%gotoff_hiadj") == p
-+              || strstr (p, "%tls_gd") == p || strstr (p, "%tls_ldm") == p
-+              || strstr (p, "%tls_ldo") == p || strstr (p, "%tls_ie") == p
-+              || strstr (p, "%tls_le") == p || strstr (p, "%gotoff") == p)
-+	    end = strpbrk (p, ",");
-+	  else
-+	    end = strpbrk (p, " ,");
-+
-+	  if (end != NULL)
-+	    as_bad (_("too many arguments"));
-+	}
-+
-+      if (*parseStr == '\0' || (p != NULL && *p == '\0'))
-+	terminate = TRUE;
-+      ++i;
-+    }
-+
-+  parsedArgs[i] = NULL;
-+
-+  if (*parseStr != '\0' && insn.insn_nios2_opcode->match != OP_MATCH_BREAK)
-+    as_bad (_("missing argument"));
-+
-+}
-+
-+
-+/* Checks whether the register name is a coprocessor
-+   register - returns TRUE if it is, FALSE otherwise.  */
-+static bfd_boolean
-+nios2_coproc_reg (const char *reg_name)
-+{
-+  gas_assert (reg_name != NULL);
-+
-+  /* Check that we do have a valid register name and that it is a
-+     coprocessor register.
-+     It must begin with c, not be a control register, and be a valid
-+     register name.  */
-+
-+  if (strncmp (reg_name, "c", 1) == 0 &&
-+      strncmp (reg_name, "ctl", strlen ("ctl")) != 0 &&
-+      hash_find (nios2_reg_hash, reg_name) != NULL)
-+    return TRUE;
-+  else
-+    return FALSE;
-+}
-+
-+
-+/*********************************************************************
-+ Argument assemble functions
-+
-+ Description : All take an instruction argument string, and a pointer
-+   	       to an instruction opcode. Upon return the insn_opcode
-+	       has the relevant fields filled in to represent the arg
-+	       string.  The return value is NULL if successful, or
-+	       an error message if an error was detected
-+ *********************************************************************/
-+
-+/* Assembles register arguments "dst, src1, src2".  */
-+void
-+nios2_assemble_args_dst (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *dst, *src1, *src2;
-+
-+  if (insn_info->insn_tokens[1] != NULL &&
-+      insn_info->insn_tokens[2] != NULL && insn_info->insn_tokens[3] != NULL)
-+    {
-+      dst =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[1]);
-+      src1 =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[2]);
-+      src2 =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[3]);
-+
-+      if (dst == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
-+      else
-+	SET_INSN_FIELD (RRD, insn_info->insn_code, dst->index);
-+
-+      if (src1 == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
-+      else
-+	SET_INSN_FIELD (RRS, insn_info->insn_code, src1->index);
-+
-+      if (src2 == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[3]);
-+      else
-+	SET_INSN_FIELD (RRT, insn_info->insn_code, src2->index);
-+
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[4]);
-+    }
-+}
-+
-+
-+/* Assembles arguments successfully parsed by nios2_parse_args_tsi.  */
-+void
-+nios2_assemble_args_tsi (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *dst, *src1;
-+  unsigned int src2;
-+
-+  if (insn_info->insn_tokens[1] != NULL &&
-+      insn_info->insn_tokens[2] != NULL && insn_info->insn_tokens[3] != NULL)
-+    {
-+      dst =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[1]);
-+      src1 =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[2]);
-+      src2 =
-+	nios2_assemble_expression (insn_info->insn_tokens[3], insn_info,
-+				   insn_info->insn_reloc, BFD_RELOC_NIOS2_S16,
-+				   0);
-+
-+      if (dst == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
-+      else
-+	SET_INSN_FIELD (IRT, insn_info->insn_code, dst->index);
-+
-+      if (src1 == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
-+      else
-+	SET_INSN_FIELD (IRS, insn_info->insn_code, src1->index);
-+
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, src2);
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[4]);
-+
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, 0);
-+    }
-+}
-+
-+
-+/* Assembles args successfully parsed by nios2_parse_args_tsu.  */
-+void
-+nios2_assemble_args_tsu (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *dst, *src1;
-+  unsigned int src2;
-+
-+  if (insn_info->insn_tokens[1] != NULL &&
-+      insn_info->insn_tokens[2] != NULL && insn_info->insn_tokens[3] != NULL)
-+    {
-+      dst =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[1]);
-+      src1 =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[2]);
-+      src2 =
-+	nios2_assemble_expression (insn_info->insn_tokens[3], insn_info,
-+				   insn_info->insn_reloc, BFD_RELOC_NIOS2_U16,
-+				   0);
-+
-+      if (dst == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
-+      else
-+	SET_INSN_FIELD (IRT, insn_info->insn_code, dst->index);
-+
-+      if (src1 == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
-+      else
-+	SET_INSN_FIELD (IRS, insn_info->insn_code, src1->index);
-+
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, src2);
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[4]);
-+
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, 0);
-+    }
-+}
-+
-+
-+/* Assembles args successfully parsed by nios2_parse_args_sti.  */
-+void
-+nios2_assemble_args_sto (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *dst, *src1;
-+  unsigned int src2;
-+
-+  if (insn_info->insn_tokens[1] != NULL &&
-+      insn_info->insn_tokens[2] != NULL && insn_info->insn_tokens[3] != NULL)
-+    {
-+      dst =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[1]);
-+      src1 =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[2]);
-+      src2 =
-+	nios2_assemble_expression (insn_info->insn_tokens[3], insn_info,
-+				   insn_info->insn_reloc, BFD_RELOC_16_PCREL,
-+				   1);
-+
-+      if (dst == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
-+      else
-+	SET_INSN_FIELD (IRS, insn_info->insn_code, dst->index);
-+
-+      if (src1 == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
-+      else
-+	SET_INSN_FIELD (IRT, insn_info->insn_code, src1->index);
-+
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, src2);
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[4]);
-+
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, 0);
-+    }
-+}
-+
-+
-+void
-+nios2_assemble_args_o (nios2_insn_infoS * insn_info)
-+{
-+  unsigned long immed;
-+
-+  if (insn_info->insn_tokens[1] != NULL)
-+    {
-+      immed =
-+	nios2_assemble_expression (insn_info->insn_tokens[1], insn_info,
-+				   insn_info->insn_reloc, BFD_RELOC_16_PCREL,
-+				   1);
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, immed);
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[2]);
-+
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, 0);
-+    }
-+}
-+
-+
-+void
-+nios2_assemble_args_is (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *addr_src;
-+  unsigned long immed;
-+
-+  if (insn_info->insn_tokens[1] != NULL && insn_info->insn_tokens[2] != NULL)
-+    {
-+      addr_src =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[2]);
-+
-+      immed =
-+	nios2_assemble_expression (insn_info->insn_tokens[1], insn_info,
-+				   insn_info->insn_reloc, BFD_RELOC_NIOS2_S16,
-+				   0);
-+
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, immed);
-+
-+      if (addr_src == NULL)
-+	as_bad (_("unknown base register %s"), insn_info->insn_tokens[2]);
-+      else
-+	SET_INSN_FIELD (RRS, insn_info->insn_code, addr_src->index);
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[3]);
-+
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, 0);
-+    }
-+}
-+
-+
-+void
-+nios2_assemble_args_m (nios2_insn_infoS * insn_info)
-+{
-+  unsigned long immed;
-+  if (insn_info->insn_tokens[1] != NULL)
-+    {
-+      immed =
-+	nios2_assemble_expression (insn_info->insn_tokens[1], insn_info,
-+				   insn_info->insn_reloc,
-+				   BFD_RELOC_NIOS2_CALL26, 0);
-+
-+      SET_INSN_FIELD (IMM26, insn_info->insn_code, immed);
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[2]);
-+
-+      SET_INSN_FIELD (IMM26, insn_info->insn_code, 0);
-+    }
-+}
-+
-+
-+void
-+nios2_assemble_args_s (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *src;
-+
-+  if (insn_info->insn_tokens[1] != NULL)
-+    {
-+      src =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[1]);
-+
-+      if (src == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
-+      else
-+	SET_INSN_FIELD (RRS, insn_info->insn_code, src->index);
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[2]);
-+    }
-+}
-+
-+
-+void
-+nios2_assemble_args_tis (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *addr_src, *dst;
-+  unsigned long immed;
-+
-+  if (insn_info->insn_tokens[1] != NULL &&
-+      insn_info->insn_tokens[2] != NULL && insn_info->insn_tokens[3] != NULL)
-+    {
-+
-+      dst =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[1]);
-+      addr_src =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[3]);
-+      immed =
-+	nios2_assemble_expression (insn_info->insn_tokens[2], insn_info,
-+				   insn_info->insn_reloc, BFD_RELOC_NIOS2_S16,
-+				   0);
-+
-+
-+      if (addr_src == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[3]);
-+      else
-+	SET_INSN_FIELD (RRS, insn_info->insn_code, addr_src->index);
-+
-+      if (dst == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
-+      else
-+	SET_INSN_FIELD (RRT, insn_info->insn_code, dst->index);
-+
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, immed);
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[4]);
-+
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, 0);
-+    }
-+}
-+
-+
-+/* Assemble rdctl dst, ctl.  */
-+void
-+nios2_assemble_args_dc (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *dst, *ctl;
-+
-+  if (insn_info->insn_tokens[1] != NULL && insn_info->insn_tokens[2] != NULL)
-+    {
-+      ctl =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[2]);
-+      dst =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[1]);
-+
-+      if (ctl == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
-+      else
-+	SET_INSN_FIELD (RCTL, insn_info->insn_code, ctl->index);
-+
-+      if (dst == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
-+      else
-+	SET_INSN_FIELD (RRD, insn_info->insn_code, dst->index);
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[3]);
-+    }
-+}
-+
-+
-+/* Assemble wrctl ctl, src.  */
-+void
-+nios2_assemble_args_cs (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *src, *ctl;
-+
-+  if (insn_info->insn_tokens[1] != NULL && insn_info->insn_tokens[2] != NULL)
-+    {
-+      ctl =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[1]);
-+      src =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[2]);
-+
-+      if (ctl == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
-+      else if (ctl->index == 4)
-+	as_bad (_("ipending control register (ctl4) is read-only\n"));
-+      else
-+	SET_INSN_FIELD (RCTL, insn_info->insn_code, ctl->index);
-+
-+      if (src == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
-+      else
-+	SET_INSN_FIELD (RRS, insn_info->insn_code, src->index);
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[3]);
-+    }
-+}
-+
-+
-+
-+void
-+nios2_assemble_args_ldst (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *dst, *src1, *src2;
-+  unsigned long custom_n;
-+
-+  if (insn_info->insn_tokens[1] != NULL &&
-+      insn_info->insn_tokens[2] != NULL &&
-+      insn_info->insn_tokens[3] != NULL && insn_info->insn_tokens[4] != NULL)
-+    {
-+#if 0				/* ??? Unused/half commented out code */
-+      char *end_p;
-+      /* custom_n = nios2_strtoul(insn_info->insn_tokens[1], &end_p); */
-+#endif
-+      custom_n =
-+	nios2_assemble_expression (insn_info->insn_tokens[1], insn_info,
-+				   insn_info->insn_reloc,
-+				   BFD_RELOC_NIOS2_IMM8, 0);
-+
-+      dst =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[2]);
-+      src1 =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[3]);
-+      src2 =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[4]);
-+
-+      SET_INSN_FIELD (CUSTOM_N, insn_info->insn_code, custom_n);
-+
-+      if (dst == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
-+      else
-+	SET_INSN_FIELD (RRD, insn_info->insn_code, dst->index);
-+
-+      if (src1 == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[3]);
-+      else
-+	SET_INSN_FIELD (RRS, insn_info->insn_code, src1->index);
-+
-+      if (src2 == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[4]);
-+      else
-+	SET_INSN_FIELD (RRT, insn_info->insn_code, src2->index);
-+
-+      /* Set or clear the bits to indicate whether coprocessor registers are
-+ 	 used.  */
-+      if (nios2_coproc_reg (insn_info->insn_tokens[2]))
-+	SET_INSN_FIELD (CUSTOM_C, insn_info->insn_code, 0);
-+      else
-+	SET_INSN_FIELD (CUSTOM_C, insn_info->insn_code, 1);
-+
-+      if (nios2_coproc_reg (insn_info->insn_tokens[3]))
-+	SET_INSN_FIELD (CUSTOM_A, insn_info->insn_code, 0);
-+      else
-+	SET_INSN_FIELD (CUSTOM_A, insn_info->insn_code, 1);
-+
-+      if (nios2_coproc_reg (insn_info->insn_tokens[4]))
-+	SET_INSN_FIELD (CUSTOM_B, insn_info->insn_code, 0);
-+      else
-+	SET_INSN_FIELD (CUSTOM_B, insn_info->insn_code, 1);
-+
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[5]);
-+    }
-+}
-+
-+
-+void
-+nios2_assemble_args_none (nios2_insn_infoS * insn_info ATTRIBUTE_UNUSED)
-+{
-+  /* Nothing to do.  */
-+}
-+
-+
-+void
-+nios2_assemble_args_dsj (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *dst, *src1;
-+  unsigned int src2;
-+
-+  if (insn_info->insn_tokens[1] != NULL &&
-+      insn_info->insn_tokens[2] != NULL && insn_info->insn_tokens[3] != NULL)
-+    {
-+      dst =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[1]);
-+      src1 =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[2]);
-+
-+      /* A 5-bit constant expression.  */
-+      src2 =
-+	nios2_assemble_expression (insn_info->insn_tokens[3], insn_info,
-+				   insn_info->insn_reloc,
-+				   BFD_RELOC_NIOS2_IMM5, 0);
-+
-+      if (dst == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
-+      else
-+	SET_INSN_FIELD (RRD, insn_info->insn_code, dst->index);
-+
-+      if (src1 == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
-+      else
-+	SET_INSN_FIELD (RRS, insn_info->insn_code, src1->index);
-+
-+      SET_INSN_FIELD (IMM5, insn_info->insn_code, src2);
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[4]);
-+
-+      SET_INSN_FIELD (IMM5, insn_info->insn_code, 0);
-+    }
-+}
-+
-+
-+/* Assembles register arguments "dst".  */
-+void
-+nios2_assemble_args_d (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *dst;
-+
-+  if (insn_info->insn_tokens[1] != NULL)
-+    {
-+      dst =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[1]);
-+
-+      if (dst == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
-+      else
-+	SET_INSN_FIELD (RRD, insn_info->insn_code, dst->index);
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[2]);
-+    }
-+}
-+
-+/* Assemble break op.  */
-+void
-+nios2_assemble_args_b (nios2_insn_infoS * insn_info)
-+{
-+  unsigned int imm5 = 0;
-+
-+  if (insn_info->insn_tokens[1] != NULL)
-+    {
-+      /* A 5-bit constant expression.  */
-+      imm5 =
-+	nios2_assemble_expression (insn_info->insn_tokens[1], insn_info,
-+				   insn_info->insn_reloc,
-+				   BFD_RELOC_NIOS2_IMM5, 0);
-+
-+      SET_INSN_FIELD (TRAP_IMM5, insn_info->insn_code, imm5);
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[2]);
-+    }
-+
-+  SET_INSN_FIELD (TRAP_IMM5, insn_info->insn_code, imm5);
-+
-+  NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[2]);
-+}
-+
-+/* Machine-dependent assembler directive handling follows */
-+
-+/* .set sets assembler options eg noat/at and is also used
-+   to set symbol values (.equ, .equiv ).  */
-+void
-+s_nios2_set (int equiv)
-+{
-+  char *directive = input_line_pointer;
-+  char delim = get_symbol_end ();
-+  char *endline;
-+  endline = input_line_pointer;
-+  *endline = delim;
-+
-+  /* We only want to handle ".set XXX" if the
-+     user has tried ".set XXX, YYY" they are not
-+     trying a directive. This prevents
-+     us from polluting the name space.  */
-+
-+  SKIP_WHITESPACE ();
-+
-+  if (is_end_of_line[(unsigned char) *input_line_pointer])
-+    {
-+      bfd_boolean done = FALSE;
-+      *endline = 0;
-+
-+      if (!strcmp (directive, "noat"))
-+	{
-+	  done = TRUE;
-+	  nios2_as_options.noat = TRUE;
-+	}
-+
-+      if (!strcmp (directive, "at"))
-+	{
-+	  done = TRUE;
-+	  nios2_as_options.noat = FALSE;
-+	}
-+
-+      if (!strcmp (directive, "nobreak"))
-+	{
-+	  done = TRUE;
-+	  nios2_as_options.nobreak = TRUE;
-+	}
-+
-+      if (!strcmp (directive, "break"))
-+	{
-+	  done = TRUE;
-+	  nios2_as_options.nobreak = FALSE;
-+	}
-+
-+      if (!strcmp (directive, "norelax"))
-+	{
-+	  done = TRUE;
-+	  nios2_as_options.relax = relax_none;
-+	}
-+      else if (!strcmp (directive, "relaxsection"))
-+	{
-+	  done = TRUE;
-+	  nios2_as_options.relax = relax_section;
-+	}
-+      else if (!strcmp (directive, "relaxall"))
-+	{
-+	  done = TRUE;
-+	  nios2_as_options.relax = relax_all;
-+	}
-+
-+
-+      if (done)
-+	{
-+	  *endline = delim;
-+	  demand_empty_rest_of_line ();
-+	  return;
-+	}
-+    }
-+
-+
-+  /* If we fall through to here, either we have ".set XXX, YYY"
-+     or we have ".set XXX" where XXX is unknown or we have
-+     a syntax error.  */
-+  input_line_pointer = directive;
-+  *endline = delim;
-+  s_set (equiv);
-+}
-+
-+/* nop fill pattern for text section.  */
-+static char const nop[4] = { 0x3a, 0x88, 0x01, 0x00 };
-+
-+/* nios2_frob_label() is called when after a label is recognized.  */
-+
-+void
-+nios2_frob_label (symbolS * lab)
-+{
-+  /* Update the label's address with the current output pointer.  */
-+  symbol_set_frag (lab, frag_now);
-+  S_SET_VALUE (lab, (valueT) frag_now_fix ());
-+
-+  /* Record this label for future adjustment after we find out what
-+     kind of data it references, and the required alignment therewith.  */
-+  nios2_last_label = lab;
-+}
-+
-+
-+
-+/* Hook into cons for auto-alignment.  */
-+
-+void
-+nios2_cons_align (int size)
-+{
-+  int log_size;
-+  const char *pfill = NULL;
-+
-+  log_size = 0;
-+  while ((size >>= 1) != 0)
-+    ++log_size;
-+
-+  if (subseg_text_p (now_seg))
-+    {
-+      pfill = (const char *) &nop;
-+    }
-+  else
-+    pfill = NULL;
-+
-+  if (nios2_auto_align_on)
-+    nios2_align (log_size, pfill, NULL);
-+
-+  nios2_last_label = NULL;
-+}
-+
-+static void
-+s_nios2_sdata (int ignore ATTRIBUTE_UNUSED)
-+{
-+  int temp;
-+
-+  temp = get_absolute_expression ();
-+  subseg_new (".sdata", 0);
-+  demand_empty_rest_of_line ();
-+}
-+
-+/* Map 's' to SHF_NIOS2_GPREL.  */
-+/* This is from the Alpha code tc-alpha.c.  */
-+int
-+nios2_elf_section_letter (int letter, char **ptr_msg)
-+{
-+  if (letter == 's')
-+    return SHF_NIOS2_GPREL;
-+
-+  *ptr_msg = _("Bad .section directive: want a,s,w,x,M,S,G,T in string");
-+  return 0;
-+}
-+
-+/* Map SHF_ALPHA_GPREL to SEC_SMALL_DATA.  */
-+/* This is from the Alpha code tc-alpha.c.  */
-+flagword
-+nios2_elf_section_flags (flagword flags, int attr, int type ATTRIBUTE_UNUSED)
-+{
-+  if (attr & SHF_NIOS2_GPREL)
-+    flags |= SEC_SMALL_DATA;
-+  return flags;
-+}
-+
-+/* Explicitly unaligned cons.  */
-+
-+static void
-+s_nios2_ucons (int nbytes)
-+{
-+  int hold;
-+  hold = nios2_auto_align_on;
-+  nios2_auto_align_on = 0;
-+  cons (nbytes);
-+  nios2_auto_align_on = hold;
-+}
-+
-+static int nios2_tls_ldo_reloc;
-+
-+void
-+nios2_cons (expressionS *exp, int size)
-+{
-+  /* Handle %tls_ldo(...) */
-+
-+  nios2_tls_ldo_reloc = 0;
-+
-+  SKIP_WHITESPACE ();
-+  if (input_line_pointer[0] == '%')
-+    {
-+      if (strncmp (input_line_pointer + 1, "tls_ldo", 7) == 0)
-+	{
-+          if (size != 4)
-+	    as_bad (_("Illegal operands: %%tls_ldo in %d-byte data field"),
-+		    size);
-+	  else
-+	    {
-+	      input_line_pointer += 8;
-+              nios2_tls_ldo_reloc = 1;
-+	    }
-+	}
-+      if (nios2_tls_ldo_reloc)
-+	{
-+	  SKIP_WHITESPACE ();
-+	  if (input_line_pointer[0] != '(')
-+	    as_bad (_("Illegal operands: %%tls_ldo requires arguments in ()"));
-+	  else
-+	    {
-+	      int c;
-+	      char *end = ++input_line_pointer;
-+	      int npar = 0;
-+
-+	      while (! is_end_of_line[(c = *end)])
-+		{
-+		  if (c == '(')
-+		    npar++;
-+		  else if (c == ')')
-+		    {
-+		      if (!npar)
-+			break;
-+		      npar--;
-+		    }
-+		  end++;
-+		}
-+
-+	      if (c != ')')
-+		as_bad (_("Illegal operands: %%tls_ldo requires arguments in ()"));
-+	      else
-+		{
-+		  *end = '\0';
-+		  expression (exp);
-+		  *end = c;
-+		  if (input_line_pointer != end)
-+		    as_bad (_("Illegal operands: %%tls_ldo requires arguments in ()"));
-+		  else
-+		    {
-+		      input_line_pointer++;
-+		      SKIP_WHITESPACE ();
-+		      c = *input_line_pointer;
-+		      if (! is_end_of_line[c] && c != ',')
-+			as_bad (_("Illegal operands: garbage after %%tls_ldo()"));
-+		    }
-+		}
-+	    }
-+	}
-+    }
-+  if (!nios2_tls_ldo_reloc)
-+    expression (exp);
-+}
-+
-+void
-+nios2_cons_fix_new (fragS *frag, int where, unsigned int nbytes,
-+		    expressionS *exp)
-+{
-+  bfd_reloc_code_real_type r;
-+
-+  r = (nbytes == 1 ? BFD_RELOC_8 :
-+       (nbytes == 2 ? BFD_RELOC_16 :
-+	(nbytes == 4 ? BFD_RELOC_32 : BFD_RELOC_64)));
-+
-+  if (nios2_tls_ldo_reloc)
-+    r = BFD_RELOC_NIOS2_TLS_DTPREL;
-+
-+  fix_new_exp (frag, where, (int) nbytes, exp, 0, r);
-+  nios2_tls_ldo_reloc = 0;
-+}
-+
-+/* Handles all machine-dependent alignment needs.  */
-+static void
-+nios2_align (int log_size, const char *pfill, symbolS * label)
-+{
-+  int align;
-+  long max_alignment = 15;
-+
-+  /* The front end is prone to changing segments out from under us
-+     temporarily when -g is in effect.  */
-+  int switched_seg_p = (nios2_current_align_seg != now_seg);
-+
-+  align = log_size;
-+  if (align > max_alignment)
-+    {
-+      align = max_alignment;
-+      as_bad (_("Alignment too large: %d. assumed"), align);
-+    }
-+  else if (align < 0)
-+    {
-+      as_warn (_("Alignment negative: 0 assumed"));
-+      align = 0;
-+    }
-+
-+  if (align != 0)
-+    {
-+      if (subseg_text_p (now_seg) && align >= 2)
-+	{
-+	  /* First, make sure we're on a four-byte boundary, in case
-+	     someone has been putting .byte values the text section.  */
-+	  if (nios2_current_align < 2 || switched_seg_p)
-+	    frag_align (2, 0, 0);
-+
-+	  /* Now fill in the alignment pattern.  */
-+	  if (pfill != NULL)
-+	    frag_align_pattern (align, pfill, sizeof nop, 0);
-+	  else
-+	    frag_align (align, 0, 0);
-+	}
-+      else
-+	{
-+	  frag_align (align, 0, 0);
-+	}
-+
-+      if (!switched_seg_p)
-+	nios2_current_align = align;
-+
-+      /* If the last label was in a different section we can't align it.  */
-+      if (label != NULL && !switched_seg_p)
-+	{
-+	  symbolS *sym;
-+	  int label_seen = FALSE;
-+	  struct frag *old_frag;
-+	  valueT old_value;
-+	  valueT new_value;
-+
-+	  gas_assert (S_GET_SEGMENT (label) == now_seg);
-+
-+	  old_frag = symbol_get_frag (label);
-+	  old_value = S_GET_VALUE (label);
-+	  new_value = (valueT) frag_now_fix ();
-+
-+	  /* It is possible to have more than one label at a particular
-+	     address, especially if debugging is enabled, so we must
-+	     take care to adjust all the labels at this address in this
-+	     fragment.  To save time we search from the end of the symbol
-+	     list, backwards, since the symbols we are interested in are
-+	     almost certainly the ones that were most recently added.
-+	     Also to save time we stop searching once we have seen at least
-+	     one matching label, and we encounter a label that is no longer
-+	     in the target fragment.  Note, this search is guaranteed to
-+	     find at least one match when sym == label, so no special case
-+	     code is necessary.  */
-+	  for (sym = symbol_lastP; sym != NULL; sym = symbol_previous (sym))
-+	    {
-+	      if (symbol_get_frag (sym) == old_frag
-+		  && S_GET_VALUE (sym) == old_value)
-+		{
-+		  label_seen = TRUE;
-+		  symbol_set_frag (sym, frag_now);
-+		  S_SET_VALUE (sym, new_value);
-+		}
-+	      else if (label_seen && symbol_get_frag (sym) != old_frag)
-+		break;
-+	    }
-+	}
-+      record_alignment (now_seg, align);
-+    }
-+}
-+
-+/* This is called from HANDLE_ALIGN in tc-nios2.h.  */
-+
-+void
-+nios2_handle_align (fragS * fragp)
-+{
-+  /* If we are expecting to relax in the linker, then we must output a relocation
-+   * to tell the linker we are aligning code.  */
-+  if (nios2_as_options.relax == relax_all
-+      && (fragp->fr_type == rs_align
-+	  || fragp->fr_type == rs_align_code)
-+      && fragp->fr_address + fragp->fr_fix > 0
-+      && fragp->fr_offset > 1 && now_seg != bss_section)
-+    fix_new (fragp, fragp->fr_fix, 4, &abs_symbol, fragp->fr_offset, 0,
-+	     BFD_RELOC_NIOS2_ALIGN);
-+
-+}
-+
-+/* Handle the .align pseudo-op.  This aligns to a power of two.  It
-+   also adjusts any current instruction label.  We treat this the same
-+   way the MIPS port does: .align 0 turns off auto alignment.  */
-+
-+static void
-+s_nios2_align (int ignore ATTRIBUTE_UNUSED)
-+{
-+  int align;
-+  char fill;
-+  const char *pfill = NULL;
-+  long max_alignment = 15;
-+
-+
-+  align = get_absolute_expression ();
-+  if (align > max_alignment)
-+    {
-+      align = max_alignment;
-+      as_bad (_("Alignment too large: %d. assumed"), align);
-+    }
-+  else if (align < 0)
-+    {
-+      as_warn (_("Alignment negative: 0 assumed"));
-+      align = 0;
-+    }
-+
-+  if (*input_line_pointer == ',')
-+    {
-+      input_line_pointer++;
-+      fill = get_absolute_expression ();
-+      pfill = (const char *) &fill;
-+    }
-+  else if (subseg_text_p (now_seg))
-+    {
-+      pfill = (const char *) &nop;
-+    }
-+  else
-+    {
-+      pfill = NULL;
-+      nios2_last_label = NULL;
-+    }
-+
-+  if (align != 0)
-+    {
-+      nios2_auto_align_on = 1;
-+      nios2_align (align, pfill, nios2_last_label);
-+      nios2_last_label = NULL;
-+    }
-+  else
-+    {
-+      nios2_auto_align_on = 0;
-+    }
-+
-+  demand_empty_rest_of_line ();
-+}
-+
-+
-+/* Handle the .text pseudo-op.  This is like the usual one, but it
-+   clears the saved last label and resets known alignment.  */
-+
-+static void
-+s_nios2_text (int i)
-+{
-+  s_text (i);
-+  nios2_last_label = NULL;
-+  nios2_current_align = 0;
-+  nios2_current_align_seg = now_seg;
-+}
-+
-+/* Handle the .data pseudo-op.  This is like the usual one, but it
-+   clears the saved last label and resets known alignment.  */
-+
-+static void
-+s_nios2_data (int i)
-+{
-+  s_data (i);
-+  nios2_last_label = NULL;
-+  nios2_current_align = 0;
-+  nios2_current_align_seg = now_seg;
-+}
-+
-+/* Handle the .section pseudo-op.  This is like the usual one, but it
-+   clears the saved last label and resets known alignment.  */
-+
-+static void
-+s_nios2_section (int ignore)
-+{
-+  obj_elf_section (ignore);
-+  nios2_last_label = NULL;
-+  nios2_current_align = 0;
-+  nios2_current_align_seg = now_seg;
-+}
-+
-+/* Convert REGNAME to a DWARF-2 register number.  */
-+
-+int
-+tc_nios2_regname_to_dw2regnum (char *regname)
-+{
-+  struct nios2_reg *r = (struct nios2_reg *) hash_find (nios2_reg_hash,
-+							regname);
-+  if (r == NULL)
-+    return -1;
-+  return r->index;
-+}
-+
-+/* Initialize the DWARF-2 unwind information for this procedure.  */
-+
-+void
-+tc_nios2_frame_initial_instructions (void)
-+{
-+  cfi_add_CFA_def_cfa (27, 0);
-+}
-Index: binutils-2.20.1/gas/config/tc-nios2.h
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/config/tc-nios2.h
-@@ -0,0 +1,124 @@
-+/* NOT ASSIGNED TO FSF.  COPYRIGHT ALTERA.  */
-+/* tc-nios2.h -- header file for tc-nios2.c.
-+
-+   Copyright (C) 2003
-+   by Nigel Gray (ngray@altera.com).
-+
-+   This file is part of GAS.
-+
-+   GAS 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, or (at your option)
-+   any later version.
-+
-+   GAS 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 GAS; see the file COPYING.  If not, write to the Free
-+   Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-+   02111-1307, USA.  */
-+
-+#ifndef TC_NIOS2
-+#define TC_NIOS2
-+
-+/*
-+ * If unspecified, default to little endian.  We can explicitly specify
-+ * a big-endian default by configuring with --target=nios2eb-elf.  We
-+ * can override the default with the -EB and -EL options.
-+ */
-+#ifndef TARGET_BYTES_BIG_ENDIAN
-+#define TARGET_BYTES_BIG_ENDIAN 0
-+#endif
-+
-+#ifdef OBJ_ELF
-+extern const char *nios2_target_format (void);
-+#define TARGET_FORMAT  nios2_target_format ()
-+#define TARGET_ARCH    bfd_arch_nios2
-+#endif
-+
-+/* An NIOS2 instruction consists of tokens and separator characters
-+// the tokens are things like the instruction name (add, or jmp etc),
-+// the register indices ($5, $7 etc), and constant expressions. The
-+// separator characters are commas, brackets and space.
-+// The instruction name is always separated from other tokens by a space
-+// The maximum number of tokens in an instruction is 5 (the instruction name,
-+// 3 arguments, and a 4th string representing the expected instructin opcode
-+// after assembly. The latter is only used when the assemble is running in
-+// self test mode, otherwise its presence will generate an error. */
-+#define NIOS2_MAX_INSN_TOKENS	6
-+
-+/* There are no machine-specific operands so we #define this to nothing */
-+#define md_operand(x)
-+
-+/* function prototypes exported to rest of GAS */
-+extern void md_assemble (char *op_str);
-+extern void md_end (void);
-+extern void md_begin (void);
-+
-+#define TC_FORCE_RELOCATION(fixp) nios2_force_relocation (fixp)
-+extern int nios2_force_relocation (struct fix *);
-+
-+#define tc_fix_adjustable(fixp) nios2_fix_adjustable (fixp)
-+extern int nios2_fix_adjustable (struct fix *);
-+
-+#define tc_frob_label(lab)	     nios2_frob_label(lab)
-+extern void nios2_frob_label (symbolS *);
-+
-+#define tc_frob_symbol(symp, punt)  punt = nios2_frob_symbol(symp) ? 1 : punt
-+extern int nios2_frob_symbol (symbolS * symp);
-+
-+#define md_cons_align(nbytes) nios2_cons_align (nbytes)
-+extern void nios2_cons_align (int);
-+
-+extern void md_convert_frag (bfd * headers, segT sec, fragS * fragP);
-+
-+/* When relaxing, we need to generate relocations for alignment
-+   directives.  */
-+#define HANDLE_ALIGN(frag) nios2_handle_align (frag)
-+extern void nios2_handle_align (fragS *);
-+
-+extern int tc_nios2_regname_to_dw2regnum (char *regname);
-+
-+extern void tc_nios2_frame_initial_instructions (void);
-+
-+#define md_relax_frag nios2_relax_frag
-+extern long nios2_relax_frag
-+  (segT segment, fragS * fragP, long stretch);
-+
-+#ifdef OBJ_ELF
-+#define ELF_TC_SPECIAL_SECTIONS \
-+  { ".sdata",   SHT_PROGBITS,   SHF_ALLOC + SHF_WRITE + SHF_NIOS2_GPREL  }, \
-+  { ".sbss",    SHT_NOBITS,     SHF_ALLOC + SHF_WRITE + SHF_NIOS2_GPREL  }, \
-+  { ".lit4",	SHT_PROGBITS,	SHF_ALLOC + SHF_WRITE + SHF_NIOS2_GPREL  }, \
-+  { ".lit8",	SHT_PROGBITS,	SHF_ALLOC + SHF_WRITE + SHF_NIOS2_GPREL  },
-+
-+/* Processor specific section directives */
-+#define md_elf_section_letter		nios2_elf_section_letter
-+extern int nios2_elf_section_letter (int, char **);
-+#define md_elf_section_flags		nios2_elf_section_flags
-+extern flagword nios2_elf_section_flags (flagword, int, int);
-+#endif
-+
-+#define GLOBAL_OFFSET_TABLE_NAME       "_GLOBAL_OFFSET_TABLE_"
-+
-+#define DIFF_EXPR_OK
-+
-+#define TC_PARSE_CONS_EXPRESSION(EXP, NBYTES) nios2_cons (EXP, NBYTES)
-+extern void nios2_cons (expressionS *exp, int size);
-+
-+#define TC_CONS_FIX_NEW nios2_cons_fix_new
-+extern void nios2_cons_fix_new(struct frag *frag, int where,
-+			       unsigned int nbytes, struct expressionS *exp);
-+
-+/* We want .cfi_* pseudo-ops for generating unwind info.  */
-+#define TARGET_USE_CFIPOP 1
-+#define DWARF2_DEFAULT_RETURN_COLUMN 31
-+#define DWARF2_CIE_DATA_ALIGNMENT (-4)
-+#define tc_regname_to_dw2regnum tc_nios2_regname_to_dw2regnum
-+#define tc_cfi_frame_initial_instructions  tc_nios2_frame_initial_instructions
-+#define tc_cfi_no_pcrel_expr 1
-+
-+#endif // TC_NIOS2
-Index: binutils-2.20.1/gas/doc/c-nios2.texi
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/doc/c-nios2.texi
-@@ -0,0 +1,223 @@
-+@c NOT ASSIGNED TO FSF.  COPYRIGHT ALTERA.
-+@c Copyright 2004
-+@c This is part of the GAS manual.
-+@c For copying conditions, see the file as.texinfo.
-+@ifset GENERIC
-+@page
-+@node NiosII-Dependent
-+@chapter Altera Nios II Dependent Features
-+@end ifset
-+@ifclear GENERIC
-+@node Machine Dependencies
-+@chapter ltera Nios II Dependent Features
-+@end ifclear
-+
-+@cindex Altera Nios II support
-+@cindex Nios support
-+@cindex Nios II support
-+@menu
-+* Nios II Options::              Options
-+* Nios II Syntax::               Syntax
-+* Nios II Relocations::          Relocations
-+* Nios II Directives::           Nios II Machine Directives
-+* Nios II Opcodes::              Opcodes
-+@end menu
-+
-+@node Nios II Options
-+@section Options
-+@cindex Nios II options
-+@cindex options for Nios II
-+
-+@table @code
-+
-+@cindex @code{relax-all} command line option, Nios II
-+@item -relax-all
-+Replace all branch and call instructions with @code{jmp} and @code{callr} sequences
-+
-+@cindex @code{relax-section} command line option, Nios II
-+@item -relax-section
-+Replace identified out of range branches with @code{jmp} sequences (default)
-+
-+@cindex @code{no-relax} command line option, Nios II
-+@item -no-relax
-+Do not replace any branches or calls
-+
-+@cindex @code{EB} command line option, Nios II
-+@item -EB
-+Generate big-endian output
-+
-+@cindex @code{EL} command line option, Nios II
-+@item -EL
-+Generate little-endian output
-+
-+@end table
-+
-+
-+@node Nios II Syntax
-+@section Syntax
-+@menu
-+* Nios II Chars::                Special Characters
-+@end menu
-+
-+
-+@node Nios II Chars
-+@subsection Special Characters
-+
-+@cindex line comment character, Nios II
-+@cindex Nios II line comment character
-+@samp{#} is the line comment character.
-+
-+@cindex line separator character, Nios II
-+@cindex Nios II line separator character
-+@samp{;} is the line separator character.
-+
-+
-+@node Nios II Relocations
-+@section Nios II Machine Relocations
-+
-+@cindex machine relocations, Nios II
-+@cindex Nios II machine relocations
-+
-+@table @code
-+@cindex @code{hiadj} directive, Nios II
-+@item %hiadj(@var{expression})
-+Extract the upper 16-bits of @var{expression} and add
-+one if the 15th bit is set.
-+
-+The value of %hiadj is:
-+((@var{expression} >> 16) & 0xffff) + ((@var{expression} >> 15) & 0x01).
-+
-+The intention of the @code{%hiadj} relocation is to be used with
-+an @code{addi}, @code{ld} or @code{st} instructions
-+along with a @code{%lo}.
-+
-+@smallexample
-+movhi r2, %hiadj(symbol)
-+addi r2, r2, %lo(symbol)
-+@end smallexample
-+
-+@cindex @code{hi} directive, Nios II
-+@item %hi(@var{expression})
-+Extract the upper 16-bits of @var{expression}.
-+
-+
-+@cindex @code{lo} directive, Nios II
-+@item %lo(@var{expression})
-+Extract the lower 16-bits of @var{expression}.
-+
-+
-+@cindex @code{gprel} directive, Nios II
-+@item %gprel(@var{expression})
-+Subtract the value of the symbol @code{_gp} from
-+@var{expression}.
-+
-+The intention of the @code{%gprel} relocation is
-+to have a fast small area of memory which only
-+takes a 16-bit immediate to access.
-+
-+@smallexample
-+	.section .sdata
-+fastint:
-+	.int 123
-+	.section .text
-+	ldw r4, %gprel(fastint)(gp)
-+@end smallexample
-+
-+
-+@end table
-+
-+
-+@node Nios II Directives
-+@section Nios II Machine Directives
-+
-+@cindex machine directives, Nios II
-+@cindex Nios II machine directives
-+
-+@table @code
-+
-+@cindex @code{align} directive, Nios II
-+@item .align @var{expression} [, @var{expression}]
-+This is the generic @var{.align} directive, however
-+this aligns to a power of two.
-+
-+@cindex @code{half} directive, Nios II
-+@item .half @var{expression}
-+Create an aligned constant 2-bytes in size
-+
-+@cindex @code{word} directive, Nios II
-+@item .word @var{expression}
-+Create an aligned constant 4-bytes in size
-+
-+@cindex @code{dword} directive, Nios II
-+@item .dword @var{expression}
-+Create an aligned constant 8-bytes in size
-+
-+@cindex @code{2byte} directive, Nios II
-+@item .2byte @var{expression}
-+Create an un-aligned constant 2-bytes in size
-+
-+@cindex @code{4byte} directive, Nios II
-+@item .4byte @var{expression}
-+Create an un-aligned constant 4-bytes in size
-+
-+@cindex @code{8byte} directive, Nios II
-+@item .8byte @var{expression}
-+Create an un-aligned constant 8-bytes in size
-+
-+@cindex @code{16byte} directive, Nios II
-+@item .16byte @var{expression}
-+Create an un-aligned constant 16-bytes in size
-+
-+@cindex @code{set noat} directive, Nios II
-+@item .set noat
-+Allows assembly code to use @code{at} register without
-+warning and macro or relaxation expansions will
-+generate a warning.
-+
-+@cindex @code{set at} directive, Nios II
-+@item .set at
-+Assembly code using @code{at} register will generate
-+warnings, and macro expansion and relaxation will be
-+enabled.
-+
-+@cindex @code{set nobreak} directive, Nios II
-+@item .set nobreak
-+Allows assembly code to use @code{ba}, @code{bt},
-+registers without warning.
-+
-+@cindex @code{set break} directive, Nios II
-+@item .set break
-+Turns warnings back on for using @code{ba}, @code{bt}
-+registers.
-+
-+@cindex @code{set norelax} directive, Nios II
-+@item .set norelax
-+Do not replace any branches or calls.
-+
-+@cindex @code{set relaxsection} directive, Nios II
-+@item .set relaxsection
-+Replace identified out of range branches with
-+@code{jmp} sequences (default).
-+
-+@cindex @code{set relaxall} directive, Nios II
-+@item .set relaxsection
-+Replace all branch and call instructions with
-+@code{jmp} and @code{callr} sequences.
-+
-+@cindex @code{set} directive, Nios II
-+@item .set @dots{}
-+All other @code{.set} are the normal use.
-+
-+@end table
-+
-+@node Nios II Opcodes
-+@section Opcodes
-+
-+@cindex Nios II opcodes
-+@cindex opcodes for Nios II
-+@code{@value{AS}} implements all the standard Nios II opcodes.  No
-+additional pseudo-instructions are needed on this family.
-+
-+For information on the Nios II machine instruction set, see the @cite{Nios II
-+User's Manual}
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/add.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/add.d
-@@ -0,0 +1,16 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 add
-+
-+# Test the add instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> add	r4,r4,r4
-+0+0004 <[^>]*> addi	r4,r4,32767
-+0+0008 <[^>]*> addi	r4,r4,-32768
-+0+000c <[^>]*> addi	r4,r4,0
-+0+0010 <[^>]*> addi	r4,r4,-1
-+0+0014 <[^>]*> addi	r4,r4,-1
-+0+0018 <[^>]*> addi	r4,r4,13398
-+0+001c <[^>]*> nop
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/add.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/add.s
-@@ -0,0 +1,13 @@
-+# Source file used to test the add and addi instructions.
-+
-+foo:
-+	add	r4,r4,r4
-+	addi	r4,r4,0x7fff
-+	addi	r4,r4,-0x8000
-+	addi	r4,r4,0x0
-+	addi	r4,r4,-0x01
-+	subi	r4,r4,0x01
-+	addi	r4,r4,0x3456
-+
-+# should disassemble to add r0,0,r0
-+	nop
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/align_fill.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/align_fill.d
-@@ -0,0 +1,23 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 align_fill
-+
-+# Test the and macro.
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> addi	sp,sp,-8
-+0+0004 <[^>]*> stw	fp,4\(sp\)
-+0+0008 <[^>]*> mov	fp,sp
-+0+000c <[^>]*> mov	r3,zero
-+0+0010 <[^>]*> nop
-+0+0014 <[^>]*> nop
-+0+0018 <[^>]*> nop
-+0+001c <[^>]*> nop
-+0+0020 <[^>]*> addi	r3,r3,1
-+0+0024 <[^>]*> cmplti	r2,r3,100
-+0+0028 <[^>]*> bne	r2,zero,0+0020 <[^>*]*>
-+0+002c <[^>]*> ldw	fp,4\(sp\)
-+0+0030 <[^>]*> addi	sp,sp,8
-+0+0034 <[^>]*> ret
-+	...
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/align_fill.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/align_fill.s
-@@ -0,0 +1,20 @@
-+	.file	"a.c"
-+	.section	.text
-+	.align	3
-+	.global	x
-+	.type	x, @function
-+x:
-+	addi	sp, sp, -8
-+	stw	fp, 4(sp)
-+	mov	fp, sp
-+	mov	r3, zero
-+	.align	5
-+.L6:
-+	addi	r3, r3, 1
-+	cmplti	r2, r3, 100
-+	bne	r2, zero, .L6
-+	ldw	fp, 4(sp)
-+	addi	sp, sp, 8
-+	ret
-+	.size	x, .-x
-+	.ident	"GCC: (GNU) 3.3.3 (Altera Nios II 1.0 b302)"
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/align_text.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/align_text.d
-@@ -0,0 +1,22 @@
-+#objdump: -dr
-+#name: NIOS2 align_test
-+
-+# Test alignment in text sections.
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+00000000 <label-0x20>:
-+   0:	00000000 	call	0 <label-0x20>
-+   4:	0001883a 	nop
-+   8:	0001883a 	nop
-+   c:	0001883a 	nop
-+  10:	0001883a 	nop
-+  14:	0001883a 	nop
-+  18:	0001883a 	nop
-+  1c:	0001883a 	nop
-+
-+00000020 <label>:
-+  20:	0001883a 	nop
-+00000024 <label2>:
-+	...
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/align_text.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/align_text.s
-@@ -0,0 +1,15 @@
-+ .asciz ""         # empty string
-+ .align 2
-+
-+ 	nop
-+ 	nop
-+ label:
-+ .align 5
-+ 	nop
-+ label2:
-+ .section mysection
-+ .align 2
-+
-+
-+
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/and.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/and.d
-@@ -0,0 +1,17 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 and
-+
-+# Test the and macro.
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> and	r4,r4,r4
-+0+0004 <[^>]*> andi	r4,r4,32767
-+0+0008 <[^>]*> andi	r4,r4,32768
-+0+000c <[^>]*> andi	r4,r4,65535
-+0+0010 <[^>]*> andi	r4,r4,0
-+0+0014 <[^>]*> andhi	r4,r4,32767
-+0+0018 <[^>]*> andhi	r4,r4,32768
-+0+001c <[^>]*> andhi	r4,r4,65535
-+0+0020 <[^>]*> andhi	r4,r4,0
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/and.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/and.s
-@@ -0,0 +1,13 @@
-+# Source file used to test the and, andhi and andi instructions
-+
-+foo:
-+	and	r4,r4,r4
-+	andi	r4,r4,0x7fff
-+	andi	r4,r4,0x8000
-+	andi	r4,r4,0xffff
-+	andi	r4,r4,0x0
-+	andhi	r4,r4,0x7fff
-+	andhi	r4,r4,0x8000
-+	andhi	r4,r4,0xffff
-+	andhi	r4,r4,0x0
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/blt.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/blt.d
-@@ -0,0 +1 @@
-+This file is obsolete
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/blt.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/blt.s
-@@ -0,0 +1 @@
-+This file is obsolete
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/branch.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/branch.d
-@@ -0,0 +1,16 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 branch
-+
-+# Test the branch instructions.
-+dump.o:     file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> beq	r4,r5,00000000 <text_label>
-+0+0004 <[^>]*> bge	r4,r5,00000000 <text_label>
-+0+0008 <[^>]*> bgeu	r4,r5,00000000 <text_label>
-+0+000c <[^>]*> blt	r4,r5,00000000 <text_label>
-+0+0010 <[^>]*> bltu	r4,r5,00000000 <text_label>
-+0+0014 <[^>]*> bne	r4,r5,00000000 <text_label>
-+0+0018 <[^>]*> br	0000001c <text_label\+0x1c>
-+[	]*18: R_NIOS2_PCREL16	external_label
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/branch.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/branch.s
-@@ -0,0 +1,15 @@
-+# Source file used to test the beq macro.
-+	.globl	text_label
-+	.text
-+.set norelax
-+text_label:
-+	beq	r4,r5,text_label
-+	bge	r4,r5,text_label
-+	bgeu	r4,r5,text_label
-+	blt	r4,r5,text_label
-+	bltu	r4,r5,text_label
-+	bne	r4,r5,text_label
-+
-+# Branch to an external label.
-+	br	external_label
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/break.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/break.d
-@@ -0,0 +1,12 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 break
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> break	0
-+0+0004 <[^>]*> break	0
-+0+0008 <[^>]*> break	31
-+0+000c <[^>]*> break	14
-+
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/break.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/break.s
-@@ -0,0 +1,8 @@
-+# Source file used to test the 20-bit break instructions
-+foo:
-+	break
-+	break 0
-+	break 31
-+	break 14
-+
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/bret.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/bret.d
-@@ -0,0 +1,8 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 bret
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> bret
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/bret.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/bret.s
-@@ -0,0 +1,5 @@
-+# Source file used to test the bret instructions
-+foo:
-+	bret
-+
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/cache.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/cache.d
-@@ -0,0 +1,17 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 cache
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> flushd	-32768\(r6\)
-+0+0004 <[^>]*> flushd	32767\(r6\)
-+0+0008 <[^>]*> flushd	0\(r6\)
-+0+000c <[^>]*> flushd	-1\(r6\)
-+0+0010 <[^>]*> flushd	0\(r6\)
-+[	]*10: R_NIOS2_S16	.text
-+0+0014 <[^>]*> flushd	0\(r6\)
-+[	]*14: R_NIOS2_S16	external
-+0+0018 <[^>]*> flushi	r2
-+0+001c <[^>]*> flushp
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/cache.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/cache.s
-@@ -0,0 +1,21 @@
-+# Source file used to test the cache instruction
-+foo:
-+	flushd -0x8000(r6)
-+	flushd 0x7fff(r6)
-+	flushd 0x0(r6)
-+	flushd -0x0001(r6)
-+
-+# use symbol for offset
-+	flushd foo(r6)
-+
-+# use external symbol
-+	.global external
-+	flushd external(r6)
-+
-+# flushi
-+	flushi r2
-+
-+#flushp
-+	flushp
-+
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/call.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/call.d
-@@ -0,0 +1,11 @@
-+# objdump: -dr --prefix-addresses
-+#name: NIOS2 call
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> call	00000000 <foo>
-+[	]*0: R_NIOS2_CALL26	.text\+0xc
-+0+0004 <[^>]*> callr	r10
-+0+0008 <[^>]*> call	00000000 <foo>
-+[	]*8: R_NIOS2_CALL26	external
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/call.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/call.s
-@@ -0,0 +1,13 @@
-+# Source file used to test the call and callr instructions
-+.text
-+.set norelax
-+foo:
-+	call	func1
-+	callr	r10
-+# use external symbol
-+	.global external
-+	call	external
-+func1:
-+
-+
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/cmp.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/cmp.d
-@@ -0,0 +1,24 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 cmp
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> cmpeq	r11,r2,r3
-+0+0004 <[^>]*> cmpge	r11,r2,r3
-+0+0008 <[^>]*> cmpgeu	r11,r2,r3
-+0+000c <[^>]*> cmplt	r11,r2,r3
-+0+0010 <[^>]*> cmpltu	r11,r2,r3
-+0+0014 <[^>]*> cmpne	r11,r2,r3
-+0+0018 <[^>]*> cmpgei	r11,r2,0
-+[	]*18: R_NIOS2_S16	value
-+0+001c <[^>]*> cmpgeui	r11,r2,0
-+[	]*1c: R_NIOS2_U16	value\+0x200
-+0+0020 <[^>]*> cmplti	r11,r2,0
-+[	]*20: R_NIOS2_S16	value
-+0+0024 <[^>]*> cmpltui	r11,r2,0
-+[	]*24: R_NIOS2_U16	value\+0x200
-+0+0028 <[^>]*> cmpgei	r11,r2,32767
-+0+002c <[^>]*> cmpgeui	r11,r2,32768
-+0+0030 <[^>]*> cmplti	r11,r2,-32768
-+0+0034 <[^>]*> cmpltui	r11,r2,65535
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/cmp.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/cmp.s
-@@ -0,0 +1,22 @@
-+# Source file used to test the compare instructions
-+foo:
-+	cmpeq r11,r2,r3
-+	cmpge r11,r2,r3
-+	cmpgeu r11,r2,r3
-+	cmplt r11,r2,r3
-+	cmpltu r11,r2,r3
-+	cmpne r11,r2,r3
-+# test that cmp generates relocations correctly
-+	cmpgei r11,r2,value
-+	cmpgeui r11,r2,value+0x200
-+	cmplti	r11,r2,value
-+	cmpltui r11,r2,value+0x200
-+
-+	cmpgei r11,r2,0x7fff
-+	cmpgeui r11,r2,0x8000
-+	cmplti	r11,r2,-0x8000
-+	cmpltui r11,r2,0xFFFF
-+.global value
-+
-+
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/comments.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/comments.d
-@@ -0,0 +1,26 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 comments
-+
-+# Test the add instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> br	0000001c <start>
-+0+0004 <[^>]*> br	00000008 <abort>
-+0+0008 <[^>]*> movui	r3,0
-+0+000c <[^>]*> movui	r2,1
-+0+0010 <[^>]*> movui	r3,0
-+0+0014 <[^>]*> movui	r2,0
-+0+0018 <[^>]*> br	00000044 <exit>
-+0+001c <[^>]*> addi	r2,r2,-4
-+0+0020 <[^>]*> movui	r11,1
-+0+0024 <[^>]*> movui	r5,0
-+0+0028 <[^>]*> movui	r6,0
-+0+002c <[^>]*> br	00000030 <ldst>
-+0+0030 <[^>]*> movui	r2,61452
-+0+0034 <[^>]*> movui	r20,64206
-+0+0038 <[^>]*> stw	r20,0\(r2\)
-+0+003c <[^>]*> ldw	r21,0\(r2\)
-+0+0040 <[^>]*> br	00000010 <end>
-+0+0044 <[^>]*> br	00000044 <exit>
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/comments.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/comments.s
-@@ -0,0 +1,28 @@
-+.set norelax
-+_main:	br start
-+trap:
-+	br abort
-+.globl _main
-+abort: 	movui r3, 0x0
-+	movui  r2, 0x1
-+
-+end: movui r3, 0x0
-+	movui r2, 0x0
-+	br exit
-+
-+start:
-+		addi r2, r2, -4		# test for ve numbers
-+		movui r11, 0x1
-+		ori r5, r0, %lo(0x0)	# r5 = 0x0
-+		ori r6, r0, %lo(0x0)	# r6 = 0x0
-+		br ldst
-+
-+ldst:
-+		movui r2, 0xF00C
-+		movui r20, 0xFACE
-+		stw r20,(r2)
-+		ldw r21, (r2)
-+		br end
-+
-+
-+exit:	br exit
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/complex.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/complex.d
-@@ -0,0 +1,12 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 complex
-+
-+# Test complex expression parsing
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> ldw	r2,-1\(r3\)
-+0+0004 <[^>]*> ldw	r2,1\(r3\)
-+0+0008 <[^>]*> ldw	r2,0\(r3\)
-+			8: R_NIOS2_S16	stack_top\+0xffffffff
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/complex.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/complex.s
-@@ -0,0 +1,5 @@
-+foo:
-+	ldw r2, (2-3)(r3)
-+	ldw r2, 2 + (2-3)(r3)
-+	ldw r2, 2 + (stack_top-3)(r3)
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/ctl.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/ctl.d
-@@ -0,0 +1,20 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 ctl
-+
-+# Test the ctl instructions
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> rdctl	r8,ctl31
-+0+0004 <[^>]*> rdctl	r8,ctl30
-+0+0008 <[^>]*> rdctl	r8,ctl29
-+0+000c <[^>]*> rdctl	r8,status
-+0+0010 <[^>]*> rdctl	r8,bstatus
-+0+0014 <[^>]*> rdctl	r8,estatus
-+0+0018 <[^>]*> wrctl	ctl31,r8
-+0+001c <[^>]*> wrctl	ctl30,r8
-+0+0020 <[^>]*> wrctl	ctl29,r8
-+0+0024 <[^>]*> wrctl	status,r8
-+0+0028 <[^>]*> wrctl	bstatus,r8
-+0+002c <[^>]*> wrctl	estatus,r8
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/ctl.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/ctl.s
-@@ -0,0 +1,18 @@
-+# Source file used to test the nor instruction
-+
-+foo:
-+	rdctl	r8,ctl31
-+	rdctl	r8,ctl30
-+	rdctl	r8,ctl29
-+	rdctl	r8,status
-+	rdctl	r8,bstatus
-+	rdctl	r8,estatus
-+	wrctl	ctl31,r8
-+	wrctl	ctl30,r8
-+	wrctl	ctl29,r8
-+	wrctl	status,r8
-+	wrctl	bstatus,r8
-+	wrctl	estatus,r8
-+
-+
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/custom.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/custom.d
-@@ -0,0 +1,13 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 custom
-+
-+# Test the custom instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> custom	0,r11,r2,r3
-+0+0004 <[^>]*> custom	255,r11,r2,r3
-+0+0008 <[^>]*> custom	150,c1,r2,r3
-+0+000c <[^>]*> custom	24,c1,c2,r3
-+0+0010 <[^>]*> custom	56,c1,c2,c3
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/custom.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/custom.s
-@@ -0,0 +1,8 @@
-+# test progam for assembling user instructions
-+
-+foo:
-+	custom 0, r11, r2, r3
-+	custom 255, r11, r2, r3
-+	custom 150, c1, r2, r3
-+	custom 0x18, c1, c2, r3
-+	custom 070, c1, c2, c3
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/etbt.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/etbt.d
-@@ -0,0 +1,10 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 etbt
-+
-+# Test the et, bt registers
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> add	et,bt,r6
-+0+0004 <[^>]*> add	et,bt,r6
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/etbt.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/etbt.s
-@@ -0,0 +1,4 @@
-+.set nobreak
-+foo:
-+	add r24, r25, r6
-+	add et, bt, r6
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/flushda.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/flushda.d
-@@ -0,0 +1,10 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 flushda
-+
-+# Test the jmp instruction.
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> flushda	12\(r2\)
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/flushda.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/flushda.s
-@@ -0,0 +1,6 @@
-+# Source file used to test the flushda instruction.
-+.text
-+.set nobreak
-+foo:
-+	flushda	12(r2)
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/hilo_symbol.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/hilo_symbol.s
-@@ -0,0 +1,3 @@
-+.global long_symbol
-+.set long_symbol, 0xDEADBEEF
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/illegal.l
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/illegal.l
-@@ -0,0 +1,14 @@
-+.*illegal.s: Assembler messages:
-+.*illegal.s:5: Error: unknown register r56
-+.*illegal.s:8: Error: expecting \( near 0x1000
-+.*illegal.s:8: Error: missing argument
-+.*illegal.s:9: Error: expecting \) near r5
-+.*illegal.s:10: Error: expecting \( near 0x1000r5\)
-+.*illegal.s:10: Error: missing argument
-+.*illegal.s:11: Error: expecting \( near 0x1000,r5
-+.*illegal.s:11: Error: missing argument
-+.*illegal.s:12: Error: unknown register 0x1000
-+.*illegal.s:14: Error: unrecognised instruction fop
-+.*illegal.s:16: Error: too many arguments
-+.*illegal.s:17: Error: too many arguments
-+.*illegal.s:17: Error: unknown register r2,r4
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/illegal.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/illegal.s
-@@ -0,0 +1,17 @@
-+# Source file used to test illegal operands.
-+
-+foo:
-+# Illegal registers
-+	add r3,r4,r56
-+	add r4,r0,r2
-+# Illegal syntax
-+	ldw r4,0x1000
-+	ldw r4,0x1000(r5
-+	ldw r4,0x1000r5)
-+	ldw r4,0x1000,r5
-+	ldw r4,(0x1000)r5
-+# Illegal opcodes
-+	fop r3,r4,r5
-+# Extra operands
-+	nop Crapola
-+	add r2, r2, r2, r4
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/imm5_symbol.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/imm5_symbol.s
-@@ -0,0 +1,4 @@
-+.global imm5
-+.text
-+.byte imm5
-+.set imm5, 31
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/jmp.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/jmp.d
-@@ -0,0 +1,10 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 jmp
-+
-+# Test the jmp instruction.
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> jmp	bt
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/jmp.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/jmp.s
-@@ -0,0 +1,6 @@
-+# Source file used to test the jmp instruction.
-+.text
-+.set nobreak
-+foo:
-+	jmp	r25
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/ldb.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/ldb.d
-@@ -0,0 +1,196 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 ldb
-+
-+# Test the ld instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> ldb	r4,0\(zero\)
-+0+0004 <[^>]*> ldb	r4,4\(zero\)
-+0+0008 <[^>]*> ldb	r4,32764\(zero\)
-+0+000c <[^>]*> ldb	r4,-32768\(zero\)
-+0+0010 <[^>]*> ldb	r4,0\(r5\)
-+0+0014 <[^>]*> ldb	r4,4\(r5\)
-+0+0018 <[^>]*> ldb	r4,32764\(r5\)
-+0+001c <[^>]*> ldb	r4,-32768\(r5\)
-+0+0020 <[^>]*> ldb	r4,0\(zero\)
-+[	]*20: R_NIOS2_S16	.data
-+0+0024 <[^>]*> ldb	r4,0\(zero\)
-+[	]*24: R_NIOS2_S16	big_external_data_label
-+0+0028 <[^>]*> ldb	r4,0\(zero\)
-+[	]*28: R_NIOS2_S16	small_external_data_label
-+0+002c <[^>]*> ldb	r4,0\(zero\)
-+[	]*2c: R_NIOS2_S16	big_external_common
-+0+0030 <[^>]*> ldb	r4,0\(zero\)
-+[	]*30: R_NIOS2_S16	small_external_common
-+0+0034 <[^>]*> ldb	r4,0\(zero\)
-+[	]*34: R_NIOS2_S16	.bss
-+0+0038 <[^>]*> ldb	r4,0\(zero\)
-+[	]*38: R_NIOS2_S16	.bss\+0x4000
-+0+003c <[^>]*> ldb	r4,0\(zero\)
-+[	]*3c: R_NIOS2_S16	.data\+0x4
-+0+0040 <[^>]*> ldb	r4,0\(zero\)
-+[	]*40: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0044 <[^>]*> ldb	r4,0\(zero\)
-+[	]*44: R_NIOS2_S16	small_external_data_label\+0x4
-+0+0048 <[^>]*> ldb	r4,0\(zero\)
-+[	]*48: R_NIOS2_S16	big_external_common\+0x4
-+0+004c <[^>]*> ldb	r4,0\(zero\)
-+[	]*4c: R_NIOS2_S16	small_external_common\+0x4
-+0+0050 <[^>]*> ldb	r4,0\(zero\)
-+[	]*50: R_NIOS2_S16	.bss\+0x4
-+0+0054 <[^>]*> ldb	r4,0\(zero\)
-+[	]*54: R_NIOS2_S16	.bss\+0x4004
-+0+0058 <[^>]*> ldb	r4,0\(zero\)
-+[	]*58: R_NIOS2_S16	.data\+0xffff8000
-+0+005c <[^>]*> ldb	r4,0\(zero\)
-+[	]*5c: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+0060 <[^>]*> ldb	r4,0\(zero\)
-+[	]*60: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0064 <[^>]*> ldb	r4,0\(zero\)
-+[	]*64: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+0068 <[^>]*> ldb	r4,0\(zero\)
-+[	]*68: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+006c <[^>]*> ldb	r4,0\(zero\)
-+[	]*6c: R_NIOS2_S16	.bss\+0xffff8000
-+0+0070 <[^>]*> ldb	r4,0\(zero\)
-+[	]*70: R_NIOS2_S16	.bss\+0xffffc000
-+0+0074 <[^>]*> ldb	r4,0\(zero\)
-+[	]*74: R_NIOS2_S16	.data\+0x10000
-+0+0078 <[^>]*> ldb	r4,0\(r5\)
-+[	]*78: R_NIOS2_S16	.data
-+0+007c <[^>]*> ldb	r4,0\(r5\)
-+[	]*7c: R_NIOS2_S16	big_external_data_label
-+0+0080 <[^>]*> ldb	r4,0\(r5\)
-+[	]*80: R_NIOS2_S16	small_external_data_label
-+0+0084 <[^>]*> ldb	r4,0\(r5\)
-+[	]*84: R_NIOS2_S16	big_external_common
-+0+0088 <[^>]*> ldb	r4,0\(r5\)
-+[	]*88: R_NIOS2_S16	small_external_common
-+0+008c <[^>]*> ldb	r4,0\(r5\)
-+[	]*8c: R_NIOS2_S16	.bss
-+0+0090 <[^>]*> ldb	r4,0\(r5\)
-+[	]*90: R_NIOS2_S16	.bss\+0x4000
-+0+0094 <[^>]*> ldb	r4,0\(r5\)
-+[	]*94: R_NIOS2_S16	.data\+0x4
-+0+0098 <[^>]*> ldb	r4,0\(r5\)
-+[	]*98: R_NIOS2_S16	big_external_data_label\+0x4
-+0+009c <[^>]*> ldb	r4,0\(r5\)
-+[	]*9c: R_NIOS2_S16	small_external_data_label\+0x4
-+0+00a0 <[^>]*> ldb	r4,0\(r5\)
-+[	]*a0: R_NIOS2_S16	big_external_common\+0x4
-+0+00a4 <[^>]*> ldb	r4,0\(r5\)
-+[	]*a4: R_NIOS2_S16	small_external_common\+0x4
-+0+00a8 <[^>]*> ldb	r4,0\(r5\)
-+[	]*a8: R_NIOS2_S16	.bss\+0x4
-+0+00ac <[^>]*> ldb	r4,0\(r5\)
-+[	]*ac: R_NIOS2_S16	.bss\+0x4004
-+0+00b0 <[^>]*> ldb	r4,0\(r5\)
-+[	]*b0: R_NIOS2_S16	.data\+0xffff8000
-+0+00b4 <[^>]*> ldb	r4,0\(r5\)
-+[	]*b4: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+00b8 <[^>]*> ldb	r4,0\(r5\)
-+[	]*b8: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+00bc <[^>]*> ldb	r4,0\(r5\)
-+[	]*bc: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+00c0 <[^>]*> ldb	r4,0\(r5\)
-+[	]*c0: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+00c4 <[^>]*> ldb	r4,0\(r5\)
-+[	]*c4: R_NIOS2_S16	.bss\+0xffff8000
-+0+00c8 <[^>]*> ldb	r4,0\(r5\)
-+[	]*c8: R_NIOS2_S16	.bss\+0xffffc000
-+0+00cc <[^>]*> ldbio	r4,0\(zero\)
-+0+00d0 <[^>]*> ldbio	r4,4\(zero\)
-+0+00d4 <[^>]*> ldbio	r4,32764\(zero\)
-+0+00d8 <[^>]*> ldbio	r4,-32768\(zero\)
-+0+00dc <[^>]*> ldbio	r4,0\(r5\)
-+0+00e0 <[^>]*> ldbio	r4,4\(r5\)
-+0+00e4 <[^>]*> ldbio	r4,32764\(r5\)
-+0+00e8 <[^>]*> ldbio	r4,-32768\(r5\)
-+0+00ec <[^>]*> ldbio	r4,0\(zero\)
-+[	]*ec: R_NIOS2_S16	.data
-+0+00f0 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*f0: R_NIOS2_S16	big_external_data_label
-+0+00f4 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*f4: R_NIOS2_S16	small_external_data_label
-+0+00f8 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*f8: R_NIOS2_S16	big_external_common
-+0+00fc <[^>]*> ldbio	r4,0\(zero\)
-+[	]*fc: R_NIOS2_S16	small_external_common
-+0+0100 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*100: R_NIOS2_S16	.bss
-+0+0104 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*104: R_NIOS2_S16	.bss\+0x4000
-+0+0108 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*108: R_NIOS2_S16	.data\+0x4
-+0+010c <[^>]*> ldbio	r4,0\(zero\)
-+[	]*10c: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0110 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*110: R_NIOS2_S16	small_external_data_label\+0x4
-+0+0114 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*114: R_NIOS2_S16	big_external_common\+0x4
-+0+0118 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*118: R_NIOS2_S16	small_external_common\+0x4
-+0+011c <[^>]*> ldbio	r4,0\(zero\)
-+[	]*11c: R_NIOS2_S16	.bss\+0x4
-+0+0120 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*120: R_NIOS2_S16	.bss\+0x4004
-+0+0124 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*124: R_NIOS2_S16	.data\+0xffff8000
-+0+0128 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*128: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+012c <[^>]*> ldbio	r4,0\(zero\)
-+[	]*12c: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0130 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*130: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+0134 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*134: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+0138 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*138: R_NIOS2_S16	.bss\+0xffff8000
-+0+013c <[^>]*> ldbio	r4,0\(zero\)
-+[	]*13c: R_NIOS2_S16	.bss\+0xffffc000
-+0+0140 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*140: R_NIOS2_S16	.data\+0x10000
-+0+0144 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*144: R_NIOS2_S16	.data
-+0+0148 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*148: R_NIOS2_S16	big_external_data_label
-+0+014c <[^>]*> ldbio	r4,0\(r5\)
-+[	]*14c: R_NIOS2_S16	small_external_data_label
-+0+0150 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*150: R_NIOS2_S16	big_external_common
-+0+0154 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*154: R_NIOS2_S16	small_external_common
-+0+0158 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*158: R_NIOS2_S16	.bss
-+0+015c <[^>]*> ldbio	r4,0\(r5\)
-+[	]*15c: R_NIOS2_S16	.bss\+0x4000
-+0+0160 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*160: R_NIOS2_S16	.data\+0x4
-+0+0164 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*164: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0168 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*168: R_NIOS2_S16	small_external_data_label\+0x4
-+0+016c <[^>]*> ldbio	r4,0\(r5\)
-+[	]*16c: R_NIOS2_S16	big_external_common\+0x4
-+0+0170 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*170: R_NIOS2_S16	small_external_common\+0x4
-+0+0174 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*174: R_NIOS2_S16	.bss\+0x4
-+0+0178 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*178: R_NIOS2_S16	.bss\+0x4004
-+0+017c <[^>]*> ldbio	r4,0\(r5\)
-+[	]*17c: R_NIOS2_S16	.data\+0xffff8000
-+0+0180 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*180: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+0184 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*184: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0188 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*188: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+018c <[^>]*> ldbio	r4,0\(r5\)
-+[	]*18c: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+0190 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*190: R_NIOS2_S16	.bss\+0xffff8000
-+0+0194 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*194: R_NIOS2_S16	.bss\+0xffffc000
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/ldb.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/ldb.s
-@@ -0,0 +1,117 @@
-+	.data
-+data_label:
-+	.extern big_external_data_label,0x4000
-+	.extern small_external_data_label,4
-+	.comm big_external_common,0x4000
-+	.comm small_external_common,4
-+	.lcomm big_local_common,0x4000
-+	.lcomm small_local_common,4
-+
-+# the small symbols should have space allocated in the sbss section
-+# but this is not yet supported in the assembler, so space is allocated
-+# in the .bss section and the relocations are not gp-relative. this will
-+# be updated when gp-relative relocations are added
-+	.text
-+	ldb	r4,0(r0)
-+	ldb	r4,4(r0)
-+	ldb	r4,0x7ffc(r0)
-+	ldb	r4,-0x8000(r0)
-+	ldb	r4,0(r5)
-+	ldb	r4,4(r5)
-+	ldb	r4,0x7ffc(r5)
-+	ldb	r4,-0x8000(r5)
-+	ldb	r4,data_label(r0)
-+	ldb	r4,big_external_data_label(r0)
-+	ldb	r4,small_external_data_label(r0)
-+	ldb	r4,big_external_common(r0)
-+	ldb	r4,small_external_common(r0)
-+	ldb	r4,big_local_common(r0)
-+	ldb	r4,small_local_common(r0)
-+	ldb	r4,data_label+4(r0)
-+	ldb	r4,big_external_data_label+4(r0)
-+	ldb	r4,small_external_data_label+4(r0)
-+	ldb	r4,big_external_common+4(r0)
-+	ldb	r4,small_external_common+4(r0)
-+	ldb	r4,big_local_common+4(r0)
-+	ldb	r4,small_local_common+4(r0)
-+	ldb	r4,data_label-0x8000(r0)
-+	ldb	r4,big_external_data_label-0x8000(r0)
-+	ldb	r4,small_external_data_label-0x8000(r0)
-+	ldb	r4,big_external_common-0x8000(r0)
-+	ldb	r4,small_external_common-0x8000(r0)
-+	ldb	r4,big_local_common-0x8000(r0)
-+	ldb	r4,small_local_common-0x8000(r0)
-+	ldb	r4,data_label+0x10000(r0)
-+	ldb	r4,data_label(r5)
-+	ldb	r4,big_external_data_label(r5)
-+	ldb	r4,small_external_data_label(r5)
-+	ldb	r4,big_external_common(r5)
-+	ldb	r4,small_external_common(r5)
-+	ldb	r4,big_local_common(r5)
-+	ldb	r4,small_local_common(r5)
-+	ldb	r4,data_label+4(r5)
-+	ldb	r4,big_external_data_label+4(r5)
-+	ldb	r4,small_external_data_label+4(r5)
-+	ldb	r4,big_external_common+4(r5)
-+	ldb	r4,small_external_common+4(r5)
-+	ldb	r4,big_local_common+4(r5)
-+	ldb	r4,small_local_common+4(r5)
-+	ldb	r4,data_label-0x8000(r5)
-+	ldb	r4,big_external_data_label-0x8000(r5)
-+	ldb	r4,small_external_data_label-0x8000(r5)
-+	ldb	r4,big_external_common-0x8000(r5)
-+	ldb	r4,small_external_common-0x8000(r5)
-+	ldb	r4,big_local_common-0x8000(r5)
-+	ldb	r4,small_local_common-0x8000(r5)
-+
-+	ldbio	r4,0(r0)
-+	ldbio	r4,4(r0)
-+	ldbio	r4,0x7ffc(r0)
-+	ldbio	r4,-0x8000(r0)
-+	ldbio	r4,0(r5)
-+	ldbio	r4,4(r5)
-+	ldbio	r4,0x7ffc(r5)
-+	ldbio	r4,-0x8000(r5)
-+	ldbio	r4,data_label(r0)
-+	ldbio	r4,big_external_data_label(r0)
-+	ldbio	r4,small_external_data_label(r0)
-+	ldbio	r4,big_external_common(r0)
-+	ldbio	r4,small_external_common(r0)
-+	ldbio	r4,big_local_common(r0)
-+	ldbio	r4,small_local_common(r0)
-+	ldbio	r4,data_label+4(r0)
-+	ldbio	r4,big_external_data_label+4(r0)
-+	ldbio	r4,small_external_data_label+4(r0)
-+	ldbio	r4,big_external_common+4(r0)
-+	ldbio	r4,small_external_common+4(r0)
-+	ldbio	r4,big_local_common+4(r0)
-+	ldbio	r4,small_local_common+4(r0)
-+	ldbio	r4,data_label-0x8000(r0)
-+	ldbio	r4,big_external_data_label-0x8000(r0)
-+	ldbio	r4,small_external_data_label-0x8000(r0)
-+	ldbio	r4,big_external_common-0x8000(r0)
-+	ldbio	r4,small_external_common-0x8000(r0)
-+	ldbio	r4,big_local_common-0x8000(r0)
-+	ldbio	r4,small_local_common-0x8000(r0)
-+	ldbio	r4,data_label+0x10000(r0)
-+	ldbio	r4,data_label(r5)
-+	ldbio	r4,big_external_data_label(r5)
-+	ldbio	r4,small_external_data_label(r5)
-+	ldbio	r4,big_external_common(r5)
-+	ldbio	r4,small_external_common(r5)
-+	ldbio	r4,big_local_common(r5)
-+	ldbio	r4,small_local_common(r5)
-+	ldbio	r4,data_label+4(r5)
-+	ldbio	r4,big_external_data_label+4(r5)
-+	ldbio	r4,small_external_data_label+4(r5)
-+	ldbio	r4,big_external_common+4(r5)
-+	ldbio	r4,small_external_common+4(r5)
-+	ldbio	r4,big_local_common+4(r5)
-+	ldbio	r4,small_local_common+4(r5)
-+	ldbio	r4,data_label-0x8000(r5)
-+	ldbio	r4,big_external_data_label-0x8000(r5)
-+	ldbio	r4,small_external_data_label-0x8000(r5)
-+	ldbio	r4,big_external_common-0x8000(r5)
-+	ldbio	r4,small_external_common-0x8000(r5)
-+	ldbio	r4,big_local_common-0x8000(r5)
-+	ldbio	r4,small_local_common-0x8000(r5)
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/ldh.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/ldh.d
-@@ -0,0 +1,196 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 ldh
-+
-+# Test the ld instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> ldh	r4,0\(zero\)
-+0+0004 <[^>]*> ldh	r4,4\(zero\)
-+0+0008 <[^>]*> ldh	r4,32764\(zero\)
-+0+000c <[^>]*> ldh	r4,-32768\(zero\)
-+0+0010 <[^>]*> ldh	r4,0\(r5\)
-+0+0014 <[^>]*> ldh	r4,4\(r5\)
-+0+0018 <[^>]*> ldh	r4,32764\(r5\)
-+0+001c <[^>]*> ldh	r4,-32768\(r5\)
-+0+0020 <[^>]*> ldh	r4,0\(zero\)
-+[	]*20: R_NIOS2_S16	.data
-+0+0024 <[^>]*> ldh	r4,0\(zero\)
-+[	]*24: R_NIOS2_S16	big_external_data_label
-+0+0028 <[^>]*> ldh	r4,0\(zero\)
-+[	]*28: R_NIOS2_S16	small_external_data_label
-+0+002c <[^>]*> ldh	r4,0\(zero\)
-+[	]*2c: R_NIOS2_S16	big_external_common
-+0+0030 <[^>]*> ldh	r4,0\(zero\)
-+[	]*30: R_NIOS2_S16	small_external_common
-+0+0034 <[^>]*> ldh	r4,0\(zero\)
-+[	]*34: R_NIOS2_S16	.bss
-+0+0038 <[^>]*> ldh	r4,0\(zero\)
-+[	]*38: R_NIOS2_S16	.bss\+0x4000
-+0+003c <[^>]*> ldh	r4,0\(zero\)
-+[	]*3c: R_NIOS2_S16	.data\+0x4
-+0+0040 <[^>]*> ldh	r4,0\(zero\)
-+[	]*40: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0044 <[^>]*> ldh	r4,0\(zero\)
-+[	]*44: R_NIOS2_S16	small_external_data_label\+0x4
-+0+0048 <[^>]*> ldh	r4,0\(zero\)
-+[	]*48: R_NIOS2_S16	big_external_common\+0x4
-+0+004c <[^>]*> ldh	r4,0\(zero\)
-+[	]*4c: R_NIOS2_S16	small_external_common\+0x4
-+0+0050 <[^>]*> ldh	r4,0\(zero\)
-+[	]*50: R_NIOS2_S16	.bss\+0x4
-+0+0054 <[^>]*> ldh	r4,0\(zero\)
-+[	]*54: R_NIOS2_S16	.bss\+0x4004
-+0+0058 <[^>]*> ldh	r4,0\(zero\)
-+[	]*58: R_NIOS2_S16	.data\+0xffff8000
-+0+005c <[^>]*> ldh	r4,0\(zero\)
-+[	]*5c: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+0060 <[^>]*> ldh	r4,0\(zero\)
-+[	]*60: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0064 <[^>]*> ldh	r4,0\(zero\)
-+[	]*64: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+0068 <[^>]*> ldh	r4,0\(zero\)
-+[	]*68: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+006c <[^>]*> ldh	r4,0\(zero\)
-+[	]*6c: R_NIOS2_S16	.bss\+0xffff8000
-+0+0070 <[^>]*> ldh	r4,0\(zero\)
-+[	]*70: R_NIOS2_S16	.bss\+0xffffc000
-+0+0074 <[^>]*> ldh	r4,0\(zero\)
-+[	]*74: R_NIOS2_S16	.data\+0x10000
-+0+0078 <[^>]*> ldh	r4,0\(r5\)
-+[	]*78: R_NIOS2_S16	.data
-+0+007c <[^>]*> ldh	r4,0\(r5\)
-+[	]*7c: R_NIOS2_S16	big_external_data_label
-+0+0080 <[^>]*> ldh	r4,0\(r5\)
-+[	]*80: R_NIOS2_S16	small_external_data_label
-+0+0084 <[^>]*> ldh	r4,0\(r5\)
-+[	]*84: R_NIOS2_S16	big_external_common
-+0+0088 <[^>]*> ldh	r4,0\(r5\)
-+[	]*88: R_NIOS2_S16	small_external_common
-+0+008c <[^>]*> ldh	r4,0\(r5\)
-+[	]*8c: R_NIOS2_S16	.bss
-+0+0090 <[^>]*> ldh	r4,0\(r5\)
-+[	]*90: R_NIOS2_S16	.bss\+0x4000
-+0+0094 <[^>]*> ldh	r4,0\(r5\)
-+[	]*94: R_NIOS2_S16	.data\+0x4
-+0+0098 <[^>]*> ldh	r4,0\(r5\)
-+[	]*98: R_NIOS2_S16	big_external_data_label\+0x4
-+0+009c <[^>]*> ldh	r4,0\(r5\)
-+[	]*9c: R_NIOS2_S16	small_external_data_label\+0x4
-+0+00a0 <[^>]*> ldh	r4,0\(r5\)
-+[	]*a0: R_NIOS2_S16	big_external_common\+0x4
-+0+00a4 <[^>]*> ldh	r4,0\(r5\)
-+[	]*a4: R_NIOS2_S16	small_external_common\+0x4
-+0+00a8 <[^>]*> ldh	r4,0\(r5\)
-+[	]*a8: R_NIOS2_S16	.bss\+0x4
-+0+00ac <[^>]*> ldh	r4,0\(r5\)
-+[	]*ac: R_NIOS2_S16	.bss\+0x4004
-+0+00b0 <[^>]*> ldh	r4,0\(r5\)
-+[	]*b0: R_NIOS2_S16	.data\+0xffff8000
-+0+00b4 <[^>]*> ldh	r4,0\(r5\)
-+[	]*b4: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+00b8 <[^>]*> ldh	r4,0\(r5\)
-+[	]*b8: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+00bc <[^>]*> ldh	r4,0\(r5\)
-+[	]*bc: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+00c0 <[^>]*> ldh	r4,0\(r5\)
-+[	]*c0: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+00c4 <[^>]*> ldh	r4,0\(r5\)
-+[	]*c4: R_NIOS2_S16	.bss\+0xffff8000
-+0+00c8 <[^>]*> ldh	r4,0\(r5\)
-+[	]*c8: R_NIOS2_S16	.bss\+0xffffc000
-+0+00cc <[^>]*> ldhio	r4,0\(zero\)
-+0+00d0 <[^>]*> ldhio	r4,4\(zero\)
-+0+00d4 <[^>]*> ldhio	r4,32764\(zero\)
-+0+00d8 <[^>]*> ldhio	r4,-32768\(zero\)
-+0+00dc <[^>]*> ldhio	r4,0\(r5\)
-+0+00e0 <[^>]*> ldhio	r4,4\(r5\)
-+0+00e4 <[^>]*> ldhio	r4,32764\(r5\)
-+0+00e8 <[^>]*> ldhio	r4,-32768\(r5\)
-+0+00ec <[^>]*> ldhio	r4,0\(zero\)
-+[	]*ec: R_NIOS2_S16	.data
-+0+00f0 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*f0: R_NIOS2_S16	big_external_data_label
-+0+00f4 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*f4: R_NIOS2_S16	small_external_data_label
-+0+00f8 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*f8: R_NIOS2_S16	big_external_common
-+0+00fc <[^>]*> ldhio	r4,0\(zero\)
-+[	]*fc: R_NIOS2_S16	small_external_common
-+0+0100 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*100: R_NIOS2_S16	.bss
-+0+0104 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*104: R_NIOS2_S16	.bss\+0x4000
-+0+0108 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*108: R_NIOS2_S16	.data\+0x4
-+0+010c <[^>]*> ldhio	r4,0\(zero\)
-+[	]*10c: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0110 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*110: R_NIOS2_S16	small_external_data_label\+0x4
-+0+0114 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*114: R_NIOS2_S16	big_external_common\+0x4
-+0+0118 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*118: R_NIOS2_S16	small_external_common\+0x4
-+0+011c <[^>]*> ldhio	r4,0\(zero\)
-+[	]*11c: R_NIOS2_S16	.bss\+0x4
-+0+0120 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*120: R_NIOS2_S16	.bss\+0x4004
-+0+0124 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*124: R_NIOS2_S16	.data\+0xffff8000
-+0+0128 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*128: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+012c <[^>]*> ldhio	r4,0\(zero\)
-+[	]*12c: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0130 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*130: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+0134 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*134: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+0138 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*138: R_NIOS2_S16	.bss\+0xffff8000
-+0+013c <[^>]*> ldhio	r4,0\(zero\)
-+[	]*13c: R_NIOS2_S16	.bss\+0xffffc000
-+0+0140 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*140: R_NIOS2_S16	.data\+0x10000
-+0+0144 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*144: R_NIOS2_S16	.data
-+0+0148 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*148: R_NIOS2_S16	big_external_data_label
-+0+014c <[^>]*> ldhio	r4,0\(r5\)
-+[	]*14c: R_NIOS2_S16	small_external_data_label
-+0+0150 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*150: R_NIOS2_S16	big_external_common
-+0+0154 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*154: R_NIOS2_S16	small_external_common
-+0+0158 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*158: R_NIOS2_S16	.bss
-+0+015c <[^>]*> ldhio	r4,0\(r5\)
-+[	]*15c: R_NIOS2_S16	.bss\+0x4000
-+0+0160 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*160: R_NIOS2_S16	.data\+0x4
-+0+0164 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*164: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0168 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*168: R_NIOS2_S16	small_external_data_label\+0x4
-+0+016c <[^>]*> ldhio	r4,0\(r5\)
-+[	]*16c: R_NIOS2_S16	big_external_common\+0x4
-+0+0170 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*170: R_NIOS2_S16	small_external_common\+0x4
-+0+0174 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*174: R_NIOS2_S16	.bss\+0x4
-+0+0178 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*178: R_NIOS2_S16	.bss\+0x4004
-+0+017c <[^>]*> ldhio	r4,0\(r5\)
-+[	]*17c: R_NIOS2_S16	.data\+0xffff8000
-+0+0180 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*180: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+0184 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*184: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0188 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*188: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+018c <[^>]*> ldhio	r4,0\(r5\)
-+[	]*18c: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+0190 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*190: R_NIOS2_S16	.bss\+0xffff8000
-+0+0194 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*194: R_NIOS2_S16	.bss\+0xffffc000
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/ldh.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/ldh.s
-@@ -0,0 +1,117 @@
-+	.data
-+data_label:
-+	.extern big_external_data_label,0x4000
-+	.extern small_external_data_label,4
-+	.comm big_external_common,0x4000
-+	.comm small_external_common,4
-+	.lcomm big_local_common,0x4000
-+	.lcomm small_local_common,4
-+
-+# the small symbols should have space allocated in the sbss section
-+# but this is not yet supported in the assembler, so space is allocated
-+# in the .bss section and the relocations are not gp-relative. this will
-+# be updated when gp-relative relocations are added
-+	.text
-+	ldh	r4,0(r0)
-+	ldh	r4,4(r0)
-+	ldh	r4,0x7ffc(r0)
-+	ldh	r4,-0x8000(r0)
-+	ldh	r4,0(r5)
-+	ldh	r4,4(r5)
-+	ldh	r4,0x7ffc(r5)
-+	ldh	r4,-0x8000(r5)
-+	ldh	r4,data_label(r0)
-+	ldh	r4,big_external_data_label(r0)
-+	ldh	r4,small_external_data_label(r0)
-+	ldh	r4,big_external_common(r0)
-+	ldh	r4,small_external_common(r0)
-+	ldh	r4,big_local_common(r0)
-+	ldh	r4,small_local_common(r0)
-+	ldh	r4,data_label+4(r0)
-+	ldh	r4,big_external_data_label+4(r0)
-+	ldh	r4,small_external_data_label+4(r0)
-+	ldh	r4,big_external_common+4(r0)
-+	ldh	r4,small_external_common+4(r0)
-+	ldh	r4,big_local_common+4(r0)
-+	ldh	r4,small_local_common+4(r0)
-+	ldh	r4,data_label-0x8000(r0)
-+	ldh	r4,big_external_data_label-0x8000(r0)
-+	ldh	r4,small_external_data_label-0x8000(r0)
-+	ldh	r4,big_external_common-0x8000(r0)
-+	ldh	r4,small_external_common-0x8000(r0)
-+	ldh	r4,big_local_common-0x8000(r0)
-+	ldh	r4,small_local_common-0x8000(r0)
-+	ldh	r4,data_label+0x10000(r0)
-+	ldh	r4,data_label(r5)
-+	ldh	r4,big_external_data_label(r5)
-+	ldh	r4,small_external_data_label(r5)
-+	ldh	r4,big_external_common(r5)
-+	ldh	r4,small_external_common(r5)
-+	ldh	r4,big_local_common(r5)
-+	ldh	r4,small_local_common(r5)
-+	ldh	r4,data_label+4(r5)
-+	ldh	r4,big_external_data_label+4(r5)
-+	ldh	r4,small_external_data_label+4(r5)
-+	ldh	r4,big_external_common+4(r5)
-+	ldh	r4,small_external_common+4(r5)
-+	ldh	r4,big_local_common+4(r5)
-+	ldh	r4,small_local_common+4(r5)
-+	ldh	r4,data_label-0x8000(r5)
-+	ldh	r4,big_external_data_label-0x8000(r5)
-+	ldh	r4,small_external_data_label-0x8000(r5)
-+	ldh	r4,big_external_common-0x8000(r5)
-+	ldh	r4,small_external_common-0x8000(r5)
-+	ldh	r4,big_local_common-0x8000(r5)
-+	ldh	r4,small_local_common-0x8000(r5)
-+
-+	ldhio	r4,0(r0)
-+	ldhio	r4,4(r0)
-+	ldhio	r4,0x7ffc(r0)
-+	ldhio	r4,-0x8000(r0)
-+	ldhio	r4,0(r5)
-+	ldhio	r4,4(r5)
-+	ldhio	r4,0x7ffc(r5)
-+	ldhio	r4,-0x8000(r5)
-+	ldhio	r4,data_label(r0)
-+	ldhio	r4,big_external_data_label(r0)
-+	ldhio	r4,small_external_data_label(r0)
-+	ldhio	r4,big_external_common(r0)
-+	ldhio	r4,small_external_common(r0)
-+	ldhio	r4,big_local_common(r0)
-+	ldhio	r4,small_local_common(r0)
-+	ldhio	r4,data_label+4(r0)
-+	ldhio	r4,big_external_data_label+4(r0)
-+	ldhio	r4,small_external_data_label+4(r0)
-+	ldhio	r4,big_external_common+4(r0)
-+	ldhio	r4,small_external_common+4(r0)
-+	ldhio	r4,big_local_common+4(r0)
-+	ldhio	r4,small_local_common+4(r0)
-+	ldhio	r4,data_label-0x8000(r0)
-+	ldhio	r4,big_external_data_label-0x8000(r0)
-+	ldhio	r4,small_external_data_label-0x8000(r0)
-+	ldhio	r4,big_external_common-0x8000(r0)
-+	ldhio	r4,small_external_common-0x8000(r0)
-+	ldhio	r4,big_local_common-0x8000(r0)
-+	ldhio	r4,small_local_common-0x8000(r0)
-+	ldhio	r4,data_label+0x10000(r0)
-+	ldhio	r4,data_label(r5)
-+	ldhio	r4,big_external_data_label(r5)
-+	ldhio	r4,small_external_data_label(r5)
-+	ldhio	r4,big_external_common(r5)
-+	ldhio	r4,small_external_common(r5)
-+	ldhio	r4,big_local_common(r5)
-+	ldhio	r4,small_local_common(r5)
-+	ldhio	r4,data_label+4(r5)
-+	ldhio	r4,big_external_data_label+4(r5)
-+	ldhio	r4,small_external_data_label+4(r5)
-+	ldhio	r4,big_external_common+4(r5)
-+	ldhio	r4,small_external_common+4(r5)
-+	ldhio	r4,big_local_common+4(r5)
-+	ldhio	r4,small_local_common+4(r5)
-+	ldhio	r4,data_label-0x8000(r5)
-+	ldhio	r4,big_external_data_label-0x8000(r5)
-+	ldhio	r4,small_external_data_label-0x8000(r5)
-+	ldhio	r4,big_external_common-0x8000(r5)
-+	ldhio	r4,small_external_common-0x8000(r5)
-+	ldhio	r4,big_local_common-0x8000(r5)
-+	ldhio	r4,small_local_common-0x8000(r5)
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/ldw.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/ldw.d
-@@ -0,0 +1,196 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 ldw
-+
-+# Test the ld instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> ldw	r4,0\(zero\)
-+0+0004 <[^>]*> ldw	r4,4\(zero\)
-+0+0008 <[^>]*> ldw	r4,32764\(zero\)
-+0+000c <[^>]*> ldw	r4,-32768\(zero\)
-+0+0010 <[^>]*> ldw	r4,0\(r5\)
-+0+0014 <[^>]*> ldw	r4,4\(r5\)
-+0+0018 <[^>]*> ldw	r4,32764\(r5\)
-+0+001c <[^>]*> ldw	r4,-32768\(r5\)
-+0+0020 <[^>]*> ldw	r4,0\(zero\)
-+[	]*20: R_NIOS2_S16	.data
-+0+0024 <[^>]*> ldw	r4,0\(zero\)
-+[	]*24: R_NIOS2_S16	big_external_data_label
-+0+0028 <[^>]*> ldw	r4,0\(zero\)
-+[	]*28: R_NIOS2_S16	small_external_data_label
-+0+002c <[^>]*> ldw	r4,0\(zero\)
-+[	]*2c: R_NIOS2_S16	big_external_common
-+0+0030 <[^>]*> ldw	r4,0\(zero\)
-+[	]*30: R_NIOS2_S16	small_external_common
-+0+0034 <[^>]*> ldw	r4,0\(zero\)
-+[	]*34: R_NIOS2_S16	.bss
-+0+0038 <[^>]*> ldw	r4,0\(zero\)
-+[	]*38: R_NIOS2_S16	.bss\+0x4000
-+0+003c <[^>]*> ldw	r4,0\(zero\)
-+[	]*3c: R_NIOS2_S16	.data\+0x4
-+0+0040 <[^>]*> ldw	r4,0\(zero\)
-+[	]*40: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0044 <[^>]*> ldw	r4,0\(zero\)
-+[	]*44: R_NIOS2_S16	small_external_data_label\+0x4
-+0+0048 <[^>]*> ldw	r4,0\(zero\)
-+[	]*48: R_NIOS2_S16	big_external_common\+0x4
-+0+004c <[^>]*> ldw	r4,0\(zero\)
-+[	]*4c: R_NIOS2_S16	small_external_common\+0x4
-+0+0050 <[^>]*> ldw	r4,0\(zero\)
-+[	]*50: R_NIOS2_S16	.bss\+0x4
-+0+0054 <[^>]*> ldw	r4,0\(zero\)
-+[	]*54: R_NIOS2_S16	.bss\+0x4004
-+0+0058 <[^>]*> ldw	r4,0\(zero\)
-+[	]*58: R_NIOS2_S16	.data\+0xffff8000
-+0+005c <[^>]*> ldw	r4,0\(zero\)
-+[	]*5c: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+0060 <[^>]*> ldw	r4,0\(zero\)
-+[	]*60: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0064 <[^>]*> ldw	r4,0\(zero\)
-+[	]*64: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+0068 <[^>]*> ldw	r4,0\(zero\)
-+[	]*68: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+006c <[^>]*> ldw	r4,0\(zero\)
-+[	]*6c: R_NIOS2_S16	.bss\+0xffff8000
-+0+0070 <[^>]*> ldw	r4,0\(zero\)
-+[	]*70: R_NIOS2_S16	.bss\+0xffffc000
-+0+0074 <[^>]*> ldw	r4,0\(zero\)
-+[	]*74: R_NIOS2_S16	.data\+0x10000
-+0+0078 <[^>]*> ldw	r4,0\(r5\)
-+[	]*78: R_NIOS2_S16	.data
-+0+007c <[^>]*> ldw	r4,0\(r5\)
-+[	]*7c: R_NIOS2_S16	big_external_data_label
-+0+0080 <[^>]*> ldw	r4,0\(r5\)
-+[	]*80: R_NIOS2_S16	small_external_data_label
-+0+0084 <[^>]*> ldw	r4,0\(r5\)
-+[	]*84: R_NIOS2_S16	big_external_common
-+0+0088 <[^>]*> ldw	r4,0\(r5\)
-+[	]*88: R_NIOS2_S16	small_external_common
-+0+008c <[^>]*> ldw	r4,0\(r5\)
-+[	]*8c: R_NIOS2_S16	.bss
-+0+0090 <[^>]*> ldw	r4,0\(r5\)
-+[	]*90: R_NIOS2_S16	.bss\+0x4000
-+0+0094 <[^>]*> ldw	r4,0\(r5\)
-+[	]*94: R_NIOS2_S16	.data\+0x4
-+0+0098 <[^>]*> ldw	r4,0\(r5\)
-+[	]*98: R_NIOS2_S16	big_external_data_label\+0x4
-+0+009c <[^>]*> ldw	r4,0\(r5\)
-+[	]*9c: R_NIOS2_S16	small_external_data_label\+0x4
-+0+00a0 <[^>]*> ldw	r4,0\(r5\)
-+[	]*a0: R_NIOS2_S16	big_external_common\+0x4
-+0+00a4 <[^>]*> ldw	r4,0\(r5\)
-+[	]*a4: R_NIOS2_S16	small_external_common\+0x4
-+0+00a8 <[^>]*> ldw	r4,0\(r5\)
-+[	]*a8: R_NIOS2_S16	.bss\+0x4
-+0+00ac <[^>]*> ldw	r4,0\(r5\)
-+[	]*ac: R_NIOS2_S16	.bss\+0x4004
-+0+00b0 <[^>]*> ldw	r4,0\(r5\)
-+[	]*b0: R_NIOS2_S16	.data\+0xffff8000
-+0+00b4 <[^>]*> ldw	r4,0\(r5\)
-+[	]*b4: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+00b8 <[^>]*> ldw	r4,0\(r5\)
-+[	]*b8: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+00bc <[^>]*> ldw	r4,0\(r5\)
-+[	]*bc: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+00c0 <[^>]*> ldw	r4,0\(r5\)
-+[	]*c0: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+00c4 <[^>]*> ldw	r4,0\(r5\)
-+[	]*c4: R_NIOS2_S16	.bss\+0xffff8000
-+0+00c8 <[^>]*> ldw	r4,0\(r5\)
-+[	]*c8: R_NIOS2_S16	.bss\+0xffffc000
-+0+00cc <[^>]*> ldwio	r4,0\(zero\)
-+0+00d0 <[^>]*> ldwio	r4,4\(zero\)
-+0+00d4 <[^>]*> ldwio	r4,32764\(zero\)
-+0+00d8 <[^>]*> ldwio	r4,-32768\(zero\)
-+0+00dc <[^>]*> ldwio	r4,0\(r5\)
-+0+00e0 <[^>]*> ldwio	r4,4\(r5\)
-+0+00e4 <[^>]*> ldwio	r4,32764\(r5\)
-+0+00e8 <[^>]*> ldwio	r4,-32768\(r5\)
-+0+00ec <[^>]*> ldwio	r4,0\(zero\)
-+[	]*ec: R_NIOS2_S16	.data
-+0+00f0 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*f0: R_NIOS2_S16	big_external_data_label
-+0+00f4 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*f4: R_NIOS2_S16	small_external_data_label
-+0+00f8 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*f8: R_NIOS2_S16	big_external_common
-+0+00fc <[^>]*> ldwio	r4,0\(zero\)
-+[	]*fc: R_NIOS2_S16	small_external_common
-+0+0100 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*100: R_NIOS2_S16	.bss
-+0+0104 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*104: R_NIOS2_S16	.bss\+0x4000
-+0+0108 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*108: R_NIOS2_S16	.data\+0x4
-+0+010c <[^>]*> ldwio	r4,0\(zero\)
-+[	]*10c: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0110 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*110: R_NIOS2_S16	small_external_data_label\+0x4
-+0+0114 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*114: R_NIOS2_S16	big_external_common\+0x4
-+0+0118 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*118: R_NIOS2_S16	small_external_common\+0x4
-+0+011c <[^>]*> ldwio	r4,0\(zero\)
-+[	]*11c: R_NIOS2_S16	.bss\+0x4
-+0+0120 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*120: R_NIOS2_S16	.bss\+0x4004
-+0+0124 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*124: R_NIOS2_S16	.data\+0xffff8000
-+0+0128 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*128: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+012c <[^>]*> ldwio	r4,0\(zero\)
-+[	]*12c: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0130 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*130: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+0134 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*134: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+0138 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*138: R_NIOS2_S16	.bss\+0xffff8000
-+0+013c <[^>]*> ldwio	r4,0\(zero\)
-+[	]*13c: R_NIOS2_S16	.bss\+0xffffc000
-+0+0140 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*140: R_NIOS2_S16	.data\+0x10000
-+0+0144 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*144: R_NIOS2_S16	.data
-+0+0148 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*148: R_NIOS2_S16	big_external_data_label
-+0+014c <[^>]*> ldwio	r4,0\(r5\)
-+[	]*14c: R_NIOS2_S16	small_external_data_label
-+0+0150 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*150: R_NIOS2_S16	big_external_common
-+0+0154 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*154: R_NIOS2_S16	small_external_common
-+0+0158 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*158: R_NIOS2_S16	.bss
-+0+015c <[^>]*> ldwio	r4,0\(r5\)
-+[	]*15c: R_NIOS2_S16	.bss\+0x4000
-+0+0160 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*160: R_NIOS2_S16	.data\+0x4
-+0+0164 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*164: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0168 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*168: R_NIOS2_S16	small_external_data_label\+0x4
-+0+016c <[^>]*> ldwio	r4,0\(r5\)
-+[	]*16c: R_NIOS2_S16	big_external_common\+0x4
-+0+0170 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*170: R_NIOS2_S16	small_external_common\+0x4
-+0+0174 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*174: R_NIOS2_S16	.bss\+0x4
-+0+0178 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*178: R_NIOS2_S16	.bss\+0x4004
-+0+017c <[^>]*> ldwio	r4,0\(r5\)
-+[	]*17c: R_NIOS2_S16	.data\+0xffff8000
-+0+0180 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*180: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+0184 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*184: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0188 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*188: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+018c <[^>]*> ldwio	r4,0\(r5\)
-+[	]*18c: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+0190 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*190: R_NIOS2_S16	.bss\+0xffff8000
-+0+0194 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*194: R_NIOS2_S16	.bss\+0xffffc000
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/ldw.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/ldw.s
-@@ -0,0 +1,117 @@
-+	.data
-+data_label:
-+	.extern big_external_data_label,0x4000
-+	.extern small_external_data_label,4
-+	.comm big_external_common,0x4000
-+	.comm small_external_common,4
-+	.lcomm big_local_common,0x4000
-+	.lcomm small_local_common,4
-+
-+# the small symbols should have space allocated in the sbss section
-+# but this is not yet supported in the assembler, so space is allocated
-+# in the .bss section and the relocations are not gp-relative. this will
-+# be updated when gp-relative relocations are added
-+	.text
-+	ldw	r4,0(r0)
-+	ldw	r4,4(r0)
-+	ldw	r4,0x7ffc(r0)
-+	ldw	r4,-0x8000(r0)
-+	ldw	r4,0(r5)
-+	ldw	r4,4(r5)
-+	ldw	r4,0x7ffc(r5)
-+	ldw	r4,-0x8000(r5)
-+	ldw	r4,data_label(r0)
-+	ldw	r4,big_external_data_label(r0)
-+	ldw	r4,small_external_data_label(r0)
-+	ldw	r4,big_external_common(r0)
-+	ldw	r4,small_external_common(r0)
-+	ldw	r4,big_local_common(r0)
-+	ldw	r4,small_local_common(r0)
-+	ldw	r4,data_label+4(r0)
-+	ldw	r4,big_external_data_label+4(r0)
-+	ldw	r4,small_external_data_label+4(r0)
-+	ldw	r4,big_external_common+4(r0)
-+	ldw	r4,small_external_common+4(r0)
-+	ldw	r4,big_local_common+4(r0)
-+	ldw	r4,small_local_common+4(r0)
-+	ldw	r4,data_label-0x8000(r0)
-+	ldw	r4,big_external_data_label-0x8000(r0)
-+	ldw	r4,small_external_data_label-0x8000(r0)
-+	ldw	r4,big_external_common-0x8000(r0)
-+	ldw	r4,small_external_common-0x8000(r0)
-+	ldw	r4,big_local_common-0x8000(r0)
-+	ldw	r4,small_local_common-0x8000(r0)
-+	ldw	r4,data_label+0x10000(r0)
-+	ldw	r4,data_label(r5)
-+	ldw	r4,big_external_data_label(r5)
-+	ldw	r4,small_external_data_label(r5)
-+	ldw	r4,big_external_common(r5)
-+	ldw	r4,small_external_common(r5)
-+	ldw	r4,big_local_common(r5)
-+	ldw	r4,small_local_common(r5)
-+	ldw	r4,data_label+4(r5)
-+	ldw	r4,big_external_data_label+4(r5)
-+	ldw	r4,small_external_data_label+4(r5)
-+	ldw	r4,big_external_common+4(r5)
-+	ldw	r4,small_external_common+4(r5)
-+	ldw	r4,big_local_common+4(r5)
-+	ldw	r4,small_local_common+4(r5)
-+	ldw	r4,data_label-0x8000(r5)
-+	ldw	r4,big_external_data_label-0x8000(r5)
-+	ldw	r4,small_external_data_label-0x8000(r5)
-+	ldw	r4,big_external_common-0x8000(r5)
-+	ldw	r4,small_external_common-0x8000(r5)
-+	ldw	r4,big_local_common-0x8000(r5)
-+	ldw	r4,small_local_common-0x8000(r5)
-+
-+	ldwio	r4,0(r0)
-+	ldwio	r4,4(r0)
-+	ldwio	r4,0x7ffc(r0)
-+	ldwio	r4,-0x8000(r0)
-+	ldwio	r4,0(r5)
-+	ldwio	r4,4(r5)
-+	ldwio	r4,0x7ffc(r5)
-+	ldwio	r4,-0x8000(r5)
-+	ldwio	r4,data_label(r0)
-+	ldwio	r4,big_external_data_label(r0)
-+	ldwio	r4,small_external_data_label(r0)
-+	ldwio	r4,big_external_common(r0)
-+	ldwio	r4,small_external_common(r0)
-+	ldwio	r4,big_local_common(r0)
-+	ldwio	r4,small_local_common(r0)
-+	ldwio	r4,data_label+4(r0)
-+	ldwio	r4,big_external_data_label+4(r0)
-+	ldwio	r4,small_external_data_label+4(r0)
-+	ldwio	r4,big_external_common+4(r0)
-+	ldwio	r4,small_external_common+4(r0)
-+	ldwio	r4,big_local_common+4(r0)
-+	ldwio	r4,small_local_common+4(r0)
-+	ldwio	r4,data_label-0x8000(r0)
-+	ldwio	r4,big_external_data_label-0x8000(r0)
-+	ldwio	r4,small_external_data_label-0x8000(r0)
-+	ldwio	r4,big_external_common-0x8000(r0)
-+	ldwio	r4,small_external_common-0x8000(r0)
-+	ldwio	r4,big_local_common-0x8000(r0)
-+	ldwio	r4,small_local_common-0x8000(r0)
-+	ldwio	r4,data_label+0x10000(r0)
-+	ldwio	r4,data_label(r5)
-+	ldwio	r4,big_external_data_label(r5)
-+	ldwio	r4,small_external_data_label(r5)
-+	ldwio	r4,big_external_common(r5)
-+	ldwio	r4,small_external_common(r5)
-+	ldwio	r4,big_local_common(r5)
-+	ldwio	r4,small_local_common(r5)
-+	ldwio	r4,data_label+4(r5)
-+	ldwio	r4,big_external_data_label+4(r5)
-+	ldwio	r4,small_external_data_label+4(r5)
-+	ldwio	r4,big_external_common+4(r5)
-+	ldwio	r4,small_external_common+4(r5)
-+	ldwio	r4,big_local_common+4(r5)
-+	ldwio	r4,small_local_common+4(r5)
-+	ldwio	r4,data_label-0x8000(r5)
-+	ldwio	r4,big_external_data_label-0x8000(r5)
-+	ldwio	r4,small_external_data_label-0x8000(r5)
-+	ldwio	r4,big_external_common-0x8000(r5)
-+	ldwio	r4,small_external_common-0x8000(r5)
-+	ldwio	r4,big_local_common-0x8000(r5)
-+	ldwio	r4,small_local_common-0x8000(r5)
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/lineseparator.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/lineseparator.d
-@@ -0,0 +1,10 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 lineseparator
-+
-+# Test the add instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0x0+0000 mov	r5,r4
-+0x0+0004 mov	r4,r5
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/lineseparator.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/lineseparator.s
-@@ -0,0 +1,4 @@
-+mov r5, r4 ; mov r4, r5
-+
-+
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/link1.lds
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/link1.lds
-@@ -0,0 +1,11 @@
-+/* Simple script for testing relaxation */
-+
-+OUTPUT_FORMAT("elf32-littlenios2", "elf32-littlenios2", "elf32-littlenios2")
-+OUTPUT_ARCH(nios2)
-+ENTRY(_start)
-+SECTIONS
-+{
-+	_start = .;
-+	text2 0 : { *(text2) }
-+	text1 0x8000 : { *(text1) }
-+}
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/link2.lds
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/link2.lds
-@@ -0,0 +1,11 @@
-+/* Simple script for testing relaxation */
-+
-+OUTPUT_FORMAT("elf32-littlenios2", "elf32-littlenios2", "elf32-littlenios2")
-+OUTPUT_ARCH(nios2)
-+ENTRY(_start)
-+SECTIONS
-+{
-+	_start = .;
-+	text1 0 : { *(text1) }
-+	text2 0x80000000 : { *(text2) }
-+}
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/link3.lds
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/link3.lds
-@@ -0,0 +1,11 @@
-+/* Simple script for testing relaxation */
-+
-+OUTPUT_FORMAT("elf32-littlenios2", "elf32-littlenios2", "elf32-littlenios2")
-+OUTPUT_ARCH(nios2)
-+ENTRY(_start)
-+SECTIONS
-+{
-+	_start = .;
-+	text1 0 : { *(text1) }
-+	text2 0x08000000 : { *(text2) }
-+}
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/mov.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/mov.d
-@@ -0,0 +1,11 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 mov
-+
-+# Test the mov instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> movz	\$4,\$5,\$6
-+0+0004 <[^>]*> movnz	\$4,\$5,\$6
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/mov.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/mov.s
-@@ -0,0 +1,5 @@
-+# Source file used to test the movz and movnz instructions
-+
-+foo:
-+	movz	$4,$5,$6
-+	movnz	$4,$5,$6
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/movi.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/movi.d
-@@ -0,0 +1,13 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 movi
-+
-+# Test implicit conversion of movi/movhi etc
-+.*:     file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> movi	r2,32
-+0+0004 <[^>]*> movhi	r2,8192
-+0+0008 <[^>]*> movhi	r2,65535
-+0+000c <[^>]*> orhi	r2,r5,65535
-+0+0010 <[^>]*> xorhi	r2,r10,65535
-+0+0014 <[^>]*> andhi	r2,r15,65535
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/movi.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/movi.s
-@@ -0,0 +1,21 @@
-+# Source file used to test silent conversion of
-+# movi to orhi etc
-+
-+foo:
-+# this doesn't get converted
-+movi r2, 0x20
-+
-+# this does
-+movi r2, 0x20000000
-+
-+# addi should convert only if the source register is r0
-+addi r2, r0, 0xffff0000
-+# but we can't test for non-conversion because the value would
-+# be out of range
-+
-+# logical ops should convert for any register
-+ori r2, r5, 0xffff0000
-+xori r2, r10, 0xffff0000
-+andi r2, r15, 0xffff0000
-+
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/movia.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/movia.d
-@@ -0,0 +1,18 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 movia
-+
-+# Test the movia instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> movhi	r2,32897
-+0+0004 <[^>]*> addi	r2,r2,-32640
-+0+0008 <[^>]*> movhi	r3,0
-+			8: R_NIOS2_HIADJ16	sym\+0x80000000
-+0+000c <[^>]*> addi	r3,r3,0
-+			c: R_NIOS2_LO16	sym\+0x80000000
-+0+0010 <[^>]*> movhi	r4,0
-+			10: R_NIOS2_HIADJ16	sym\+0x80000001
-+0+0014 <[^>]*> addi	r4,r4,0
-+			14: R_NIOS2_LO16	sym\+0x80000001
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/movia.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/movia.s
-@@ -0,0 +1,6 @@
-+# Test program for movia reg, immed32 macro
-+
-+foo:
-+	movia r2, 0x80808080
-+	movia r3, sym + 0x80000000
-+	movia r4, sym - 0x7fffffff
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/mul.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/mul.d
-@@ -0,0 +1,19 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 mul
-+
-+# Test the mul macro.
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> mul	r4,r5,r6
-+0+0004 <[^>]*> muli	r4,r5,0
-+0+0008 <[^>]*> muli	r4,r5,1
-+0+000c <[^>]*> muli	r4,r5,-32768
-+0+0010 <[^>]*> muli	r4,r5,32767
-+0+0014 <[^>]*> muli	r4,r5,0
-+[	]*14: R_NIOS2_S16	undefined_symbol
-+0+0018 <[^>]*> muli	r4,r5,16448
-+0+001c <[^>]*> mulxss	r4,r5,r6
-+0+0020 <[^>]*> mulxsu	r4,r5,r6
-+0+0024 <[^>]*> mulxuu	r4,r5,r6
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/mul.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/mul.s
-@@ -0,0 +1,15 @@
-+# Source file used to test the mul macro.
-+
-+foo:
-+	mul	r4,r5,r6
-+	muli	r4,r5,0
-+	muli	r4,r5,1
-+	muli	r4,r5,-0x8000
-+	muli	r4,r5,0x7fff
-+	muli	r4,r5,undefined_symbol
-+	muli	r4,r5,defined_symbol
-+	mulxss	r4,r5,r6
-+	mulxsu	r4,r5,r6
-+	mulxuu  r4,r5,r6
-+.data
-+.set defined_symbol, 0x4040
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-merged_strings.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-merged_strings.d
-@@ -0,0 +1,17 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 reloc against merged strings
-+
-+# Test the merged duplicate strings
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> addi	r2,r2,32
-+0+0004 <[^>]*> addi	r3,r3,63
-+0+0008 <[^>]*> addi	r4,r4,70
-+0+000c <[^>]*> call	00000000 <func1>
-+0+0010 <[^>]*> addi	r2,r2,101
-+0+0014 <[^>]*> addi	r3,r3,63
-+0+0018 <[^>]*> addi	r4,r4,132
-+0+001c <[^>]*> call	00000000 <func1>
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-merged_strings.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-merged_strings.s
-@@ -0,0 +1,21 @@
-+	.section	.rodata.str1.1,"aMS",@progbits,1
-+.LC0:
-+	.string	"DHRYSTONE PROGRAM, 1'ST STRING"
-+.LC1:
-+	.string	"COMMON"
-+.LC2:
-+	.string	"DHRYSTONE PROGRAM, 2'ND STRING"
-+
-+	 .section	.text
-+	 .align	3
-+	 .global	func1
-+	 .type	func1, @function
-+func1:
-+	#movhi	$2, %hiadj(.LC0)
-+	addi	r2, r2, .LC0
-+	#movhi	$3, %hiadj(.LC1)
-+	addi	r3, r3, .LC1
-+	#movhi	$4, %hiadj(.LC2)
-+	addi	r4, r4, .LC2
-+	.size	func1, .-func1
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-bfd-reloc-xx.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-bfd-reloc-xx.d
-@@ -0,0 +1,8 @@
-+#objdump: -s
-+#name: NIOS2 R_NIOS2_BFD_RELOC_XX
-+
-+# Test the branch instructions.
-+.*: +file format elf32-littlenios2
-+
-+Contents of section .text:
-+ 0000 fa00cefa efbeadde facefaef beadde00  ................
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-bfd-reloc-xx.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-bfd-reloc-xx.s
-@@ -0,0 +1,9 @@
-+# Test for New Jersey 32-bit, 16 and 8-bit relocations
-+
-+.global byte_sym
-+.global short_sym
-+.global long_sym
-+
-+.set byte_sym, 0xFA
-+.set short_sym, 0xFACE
-+.set long_sym, 0xDEADBEEF
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-cache-opx.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-cache-opx.d
-@@ -0,0 +1,10 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 R_NIOS2_CACHE_OPX
-+
-+# Test the cache opx relocation
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> cache	0x1f,0x1000\(\$1\)
-+0+0004 <[^>]*> Address 0x4 is out of bounds.
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-cache-opx.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-cache-opx.s
-@@ -0,0 +1,6 @@
-+# Test the imm5 relocation
-+
-+.text
-+	cache imm5, 0x1000($1)
-+
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-call26.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-call26.d
-@@ -0,0 +1,76 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 nios2-reloc-r-nios2-call26
-+
-+# Test the branch instructions.
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+[	]*\.\.\.
-+[	]*0: R_NIOS2_CALL26	.text\+0x100
-+[	]*4: R_NIOS2_CALL26	globalfunc
-+0+0008 <[^>]*> nop
-+0+000c <[^>]*> nop
-+0+0010 <[^>]*> nop
-+0+0014 <[^>]*> nop
-+0+0018 <[^>]*> nop
-+0+001c <[^>]*> nop
-+0+0020 <[^>]*> nop
-+0+0024 <[^>]*> nop
-+0+0028 <[^>]*> nop
-+0+002c <[^>]*> nop
-+0+0030 <[^>]*> nop
-+0+0034 <[^>]*> nop
-+0+0038 <[^>]*> nop
-+0+003c <[^>]*> nop
-+0+0040 <[^>]*> nop
-+0+0044 <[^>]*> nop
-+0+0048 <[^>]*> nop
-+0+004c <[^>]*> nop
-+0+0050 <[^>]*> nop
-+0+0054 <[^>]*> nop
-+0+0058 <[^>]*> nop
-+0+005c <[^>]*> nop
-+0+0060 <[^>]*> nop
-+0+0064 <[^>]*> nop
-+0+0068 <[^>]*> nop
-+0+006c <[^>]*> nop
-+0+0070 <[^>]*> nop
-+0+0074 <[^>]*> nop
-+0+0078 <[^>]*> nop
-+0+007c <[^>]*> nop
-+0+0080 <[^>]*> nop
-+0+0084 <[^>]*> nop
-+0+0088 <[^>]*> nop
-+0+008c <[^>]*> nop
-+0+0090 <[^>]*> nop
-+0+0094 <[^>]*> nop
-+0+0098 <[^>]*> nop
-+0+009c <[^>]*> nop
-+0+00a0 <[^>]*> nop
-+0+00a4 <[^>]*> nop
-+0+00a8 <[^>]*> nop
-+0+00ac <[^>]*> nop
-+0+00b0 <[^>]*> nop
-+0+00b4 <[^>]*> nop
-+0+00b8 <[^>]*> nop
-+0+00bc <[^>]*> nop
-+0+00c0 <[^>]*> nop
-+0+00c4 <[^>]*> nop
-+0+00c8 <[^>]*> nop
-+0+00cc <[^>]*> nop
-+0+00d0 <[^>]*> nop
-+0+00d4 <[^>]*> nop
-+0+00d8 <[^>]*> nop
-+0+00dc <[^>]*> nop
-+0+00e0 <[^>]*> nop
-+0+00e4 <[^>]*> nop
-+0+00e8 <[^>]*> nop
-+0+00ec <[^>]*> nop
-+0+00f0 <[^>]*> nop
-+0+00f4 <[^>]*> nop
-+0+00f8 <[^>]*> nop
-+0+00fc <[^>]*> nop
-+0+0100 <[^>]*> nop
-+	...
-+
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-call26.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-call26.s
-@@ -0,0 +1,12 @@
-+# Test for New Jersey 32-bit relocations
-+
-+.global globalfunc
-+.text
-+.set norelax
-+start:
-+	call localfunc
-+	call globalfunc
-+
-+.align 8
-+localfunc:
-+	nop
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-gprel.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-gprel.d
-@@ -0,0 +1,15 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 gp-relative relocations
-+
-+# Test the %gprel macro.
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> movui	gp,32784
-+0+0004 <[^>]*> ldw	at,-32756\(gp\)
-+0+0008 <[^>]*> ldw	r2,-32752\(gp\)
-+0+000c <[^>]*> ldb	r3,-32748\(gp\)
-+0+0010 <[^>]*> ldw	at,-32744\(gp\)
-+0+0014 <[^>]*> ldw	r2,-32740\(gp\)
-+0+0018 <[^>]*> ldb	r3,-32736\(gp\)
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-gprel.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-gprel.s
-@@ -0,0 +1,24 @@
-+.sdata
-+sym1:
-+.long 0xdead
-+sym2:
-+.long 0xbeef
-+sym3:
-+.byte 0x7f
-+
-+.section sdata1, "s"
-+sym4:
-+.long 0xdead
-+sym5:
-+.long 0xbeef
-+sym6:
-+.byte 0x7f
-+
-+.text
-+	movui gp, _gp
-+	ldw r1, %gprel(sym1)(gp)
-+	ldw r2, %gprel(sym2)(gp)
-+	ldb r3, %gprel(sym3)(gp)
-+	ldw r1, %gprel(sym4)(gp)
-+	ldw r2, %gprel(sym5)(gp)
-+	ldb r3, %gprel(sym6)(gp)
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-hilo16.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-hilo16.d
-@@ -0,0 +1,10 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 R_NIOS2_HI16,LO16,HIADJ16
-+
-+# Test the %hi, %lo and %hiadi relocations
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> addi	at,at,-8531
-+0+0004 <[^>]*> addi	at,at,-16657
-+0+0008 <[^>]*> addi	at,at,-8530
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-hilo16.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-hilo16.s
-@@ -0,0 +1,6 @@
-+# Test the %hi, lo and %hiadj relocations
-+
-+.text
-+	addi r1, r1, %hi(long_symbol)
-+	addi r1, r1, %lo(long_symbol)
-+	addi r1, r1, %hiadj(long_symbol)
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-imm5.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-imm5.d
-@@ -0,0 +1,10 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 R_NIOS2_IMM5
-+
-+# Test the branch instructions.
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> roli	at,at,31
-+0+0004 <.[^>]*> Address 0x4 is out of bounds.
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-imm5.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-imm5.s
-@@ -0,0 +1,6 @@
-+# Test the imm5 relocation
-+
-+.text
-+	roli r1, r1, imm5
-+
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-pcrel16.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-pcrel16.d
-@@ -0,0 +1,12 @@
-+#objdump: -s
-+#name: NIOS2 R_NIOS2_PCREL16
-+
-+# Test the relative branch relocations.
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+
-+0+0000 <[^>]*> br	00000008 <ext_label>
-+0+0004 <[^>]*> br	00000018 <__bss_start\+0x8>
-+0+0008 <[^>]*> nop
-+0+000c <[^>]*> nop
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-pcrel16.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-pcrel16.s
-@@ -0,0 +1,6 @@
-+# Test for pc-relative relocations
-+.set norelax
-+.text
-+	br ext_label
-+	br ext_label + 16
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-s.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-s.d
-@@ -0,0 +1,8 @@
-+
-+a.exe:     file format elf32-littlenios2
-+
-+Contents of section .text:
-+ 0000 04004408 04006008 c4ff5f08 44004808  ..D...`..._.D.H.
-+ 0010 44004008                             D.@.
-+Contents of section .data:
-+Contents of section .sbss:
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-s16.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-s16.d
-@@ -0,0 +1,9 @@
-+#objdump: -s
-+#name: NIOS2 R_NIOS2_S16
-+
-+# Test the signed 16-bit relocations.
-+.*: +file format elf32-littlenios2
-+
-+Contents of section .text:
-+ 0000 04004408 04006008 c4ff5f08 44004808  ..D...`..._.D.H.
-+ 0010 44004008                             D.@.
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-s16.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-s16.s
-@@ -0,0 +1,13 @@
-+# Test for New Jersey 32-bit, 16 and 8-bit relocations
-+
-+.set some_other_sym, 0x1000
-+.text
-+# signed 16-bit relocation
-+	addi r1, r1, some_sym
-+	addi r1, r1, min
-+	addi r1, r1, max
-+	addi r1, r1, some_sym + some_other_sym + 1
-+	addi r1, r1, some_sym - some_other_sym + 1
-+
-+
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-u16.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-u16.d
-@@ -0,0 +1,9 @@
-+#objdump: -s
-+#name: NIOS2 R_NIOS2_U16
-+
-+# Test the unsigned 16-bit relocations.
-+.*: +file format elf32-littlenios2
-+
-+Contents of section .text:
-+ 0000 0c004408 0c004008 ccff7f08 4c004808  ..D...@.....L.H.
-+ 0010 4c004008                             L.@.
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-u16.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-u16.s
-@@ -0,0 +1,13 @@
-+# Test for New Jersey 32-bit, 16 and 8-bit relocations
-+
-+.set some_other_sym, 0x1000
-+.text
-+# signed 16-bit relocation
-+	andi r1, r1, some_sym
-+	andi r1, r1, min
-+	andi r1, r1, max
-+	andi r1, r1, some_sym + some_other_sym + 1
-+	andi r1, r1, some_sym - some_other_sym + 1
-+
-+
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nios2.exp
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nios2.exp
-@@ -0,0 +1,201 @@
-+#
-+# Some generic New Jersey tests
-+#
-+
-+# "LOSE" marks information about tests which fail at a particular point
-+# in time, but which are not XFAILed.  Either they used to pass
-+# and indicate either regressions or the need to tweak the tests to keep
-+# up the with code, or they are new tests and it is unknown whether or not
-+# they should pass as-is for the given object formats.
-+
-+if ![info exists LD] then {
-+    set LD [findfile $base_dir/../../ld/ld-new]
-+}
-+
-+proc run_list_test { name  } {
-+    global srcdir subdir
-+    set testname "NIOS2 $name"
-+    set file $srcdir/$subdir/$name
-+    gas_run ${name}.s "" ">&dump.out"
-+    if { [regexp_diff "dump.out" "${file}.l"] } then {
-+	fail $testname
-+	verbose "output is [file_contents "dump.out"]" 2
-+	return
-+    }
-+    pass $testname
-+}
-+
-+proc ld_run { obj0 obj1 opts } {
-+    global LD
-+    global comp_output
-+    global srcdir
-+    global subdir
-+    global host_triplet
-+
-+    verbose "Executing $srcdir/lib/run $LD $obj0 $obj1 $opts"
-+    catch "exec $srcdir/lib/run $LD $obj0 $obj1 $opts" comp_output
-+    set comp_output [prune_warnings $comp_output]
-+    verbose "output was $comp_output"
-+    return [list $comp_output ""];
-+}
-+
-+proc objdump_run { prog opts redir } {
-+    global OBJDUMP
-+    global comp_output
-+    global srcdir
-+    global subdir
-+    global host_triplet
-+
-+    verbose "Executing $srcdir/lib/run $OBJDUMP -s $prog"
-+    catch "exec $srcdir/lib/run $OBJDUMP $opts $prog $redir" comp_output
-+    set comp_output [prune_warnings $comp_output]
-+    verbose "output was $comp_output"
-+    return [list $comp_output ""];
-+}
-+
-+proc run_reloc_test { name other objdump_opts} {
-+	global LD OBJDUMP AS
-+	global srcdir subdir
-+	set testname "NIOS2 $name"
-+	set file $srcdir/$subdir/$name
-+	set file1 $srcdir/$subdir/$other
-+	gas_run ${name}.s "-o ${name}.o" ""
-+	gas_run ${other}.s "-o ${other}.o" ""
-+	ld_run ${name}.o ${other}.o "-o ${name}.exe"
-+	objdump_run ${name}.exe ${objdump_opts} ">&dump.out"
-+	if { [regexp_diff "dump.out" "${file}.d"] } then {
-+		fail $testname
-+		verbose "output is [file_contents "dump.out"]" 2
-+		return
-+	    }
-+    	pass $testname
-+}
-+
-+proc run_gpreloc_test { name objdump_opts} {
-+	global LD OBJDUMP AS
-+	global srcdir subdir
-+	set testname "NIOS2 $name"
-+	set file $srcdir/$subdir/$name
-+	gas_run ${name}.s "-o ${name}.o" ""
-+	ld_run ${name}.o "" "-o ${name}.exe"
-+	objdump_run ${name}.exe ${objdump_opts} ">&dump.out"
-+	if { [regexp_diff "dump.out" "${file}.d"] } then {
-+		fail $testname
-+		verbose "output is [file_contents "dump.out"]" 2
-+		return
-+	    }
-+    	pass $testname
-+}
-+
-+proc run_relax_test { name asm_opts link_opts objdump_opts} {
-+	global LD OBJDUMP AS
-+	global srcdir subdir
-+	set testname "NIOS2 $name"
-+	set file $srcdir/$subdir/$name
-+	gas_run ${name}.s "-o ${name}.o" ${asm_opts}
-+	ld_run ${name}.o "" "-o ${name}.exe -T${srcdir}/${subdir}/${link_opts} --relax"
-+	objdump_run ${name}.exe ${objdump_opts} ">&dump.out"
-+	if { [regexp_diff "dump.out" "${file}.d"] } then {
-+			fail $testname
-+			verbose "output is [file_contents "dump.out"]" 2
-+			return
-+	   }
-+    	pass $testname
-+}
-+
-+proc run_relax_section_test { name asm_opts objdump_opts} {
-+	global LD OBJDUMP AS
-+	global srcdir subdir
-+	set testname "NIOS2 $name"
-+	set file $srcdir/$subdir/$name
-+	gas_run ${name}.s "-o ${name}.o" ${asm_opts}
-+	ld_run ${name}.o "" "-o ${name}.exe"
-+	objdump_run ${name}.exe ${objdump_opts} ">&dump.out"
-+	if { [regexp_diff "dump.out" "${file}.d"] } then {
-+			fail $testname
-+			verbose "output is [file_contents "dump.out"]" 2
-+			return
-+	   }
-+    	pass $testname
-+}
-+
-+if { [istarget nios2-*-elf] } then {
-+    set elf 1
-+
-+    run_dump_test "add"
-+    run_dump_test "and"
-+    run_dump_test "align_fill"
-+    run_dump_test "align_text"
-+
-+    run_dump_test "branch"
-+
-+
-+    run_dump_test "break"
-+    run_dump_test "bret"
-+    run_dump_test "cache"
-+
-+    run_dump_test "call"
-+
-+
-+    run_dump_test "cmp"
-+
-+
-+    run_dump_test "jmp"
-+    run_dump_test "ldw"
-+    run_dump_test "ldh"
-+    run_dump_test "ldb"
-+
-+    run_dump_test "flushda"
-+
-+    run_dump_test "mul"
-+
-+    run_dump_test "nor"
-+    run_dump_test "or"
-+
-+    run_dump_test "ctl"
-+    run_dump_test "ret"
-+    run_dump_test "rotate"
-+
-+    run_dump_test "stw"
-+    run_dump_test "sth"
-+    run_dump_test "stb"
-+
-+    run_dump_test "sub"
-+    run_dump_test "sync"
-+    run_dump_test "trap"
-+    run_dump_test "tret"
-+
-+    run_dump_test "custom"
-+    run_dump_test "xor"
-+    run_dump_test "movia"
-+
-+    run_dump_test "complex"
-+    run_dump_test "comments"
-+    run_dump_test "etbt"
-+    run_dump_test "lineseparator"
-+    run_dump_test "movi"
-+
-+    run_list_test "illegal"
-+    run_list_test "warn_nobreak"
-+    run_list_test "warn_noat"
-+
-+
-+# now lets make sure that the assembler generates all the relocations
-+# that it should correctly, and that the linker links them correctly
-+
-+    run_reloc_test "nios2-reloc-r-nios2-bfd-reloc-xx" "reloc_symbols" "-s"
-+    run_reloc_test "nios2-reloc-r-nios2-s16" "s16_symbol" "-s"
-+    run_reloc_test "nios2-reloc-r-nios2-u16" "u16_symbol" "-s"
-+    run_reloc_test "nios2-reloc-r-nios2-pcrel16" "pcrel_label" "-dr --prefix-addresses"
-+    run_reloc_test "nios2-reloc-r-nios2-hilo16" "hilo_symbol" "-dr --prefix-addresses"
-+    run_dump_test "nios2-reloc-r-nios2-call26"
-+    run_reloc_test "nios2-reloc-r-nios2-imm5" "imm5_symbol" "-dr --prefix-addresses"
-+    run_reloc_test "nios2-reloc-merged_strings" "str2" "-dr --prefix-addresses"
-+    run_gpreloc_test "nios2-reloc-r-nios2-gprel" "-dr --prefix-addresses"
-+
-+# relaxation tests
-+    run_relax_test "relax_ujmp" "-relax-all" "link1.lds" "-dr --prefix-addresses"
-+    run_relax_test "relax_cjmp" "-relax-all" "link1.lds" "-dr --prefix-addresses"
-+    run_relax_test "relax_callr" "-relax-all" "link3.lds" "-dr --prefix-addresses"
-+    run_relax_section_test "relax_section" "-relax-section" "-dr --prefix-addresses"
-+}
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nor.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nor.d
-@@ -0,0 +1,9 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 nor
-+
-+# Test the nor instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> nor	r6,r8,r10
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/nor.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/nor.s
-@@ -0,0 +1,5 @@
-+# Source file used to test the nor instruction
-+
-+foo:
-+	nor	r6,r8,r10
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/or.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/or.d
-@@ -0,0 +1,11 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 or
-+
-+# Test the nor instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> or	r6,r8,r10
-+0+0004 <[^>]*> orhi	r6,r7,65535
-+0+0008 <[^>]*> ori	r6,r7,65535
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/or.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/or.s
-@@ -0,0 +1,7 @@
-+# Source file used to test the nor instruction
-+
-+foo:
-+	or	r6,r8,r10
-+	orhi	r6,r7,0xffff
-+	ori	r6,r7,0xffff
-+
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/pcrel_label.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/pcrel_label.s
-@@ -0,0 +1,5 @@
-+.text
-+ext_label:
-+	nop
-+	nop
-+.global ext_label
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/relax_callr.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/relax_callr.d
-@@ -0,0 +1,22 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 relax_callr
-+# Test relaxation of callr
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section text1:
-+00000000 <[^>]*> call	08000000 <func>
-+00000004 <[^>]*> nop
-+00000008 <[^>]*> nop
-+0000000c <[^>]*> call	0800001c <func1>
-+00000010 <[^>]*> nop
-+00000014 <[^>]*> nop
-+Disassembly of section text2:
-+08000000 <[^>]*> nop
-+08000004 <[^>]*> br	0800001c <func1>
-+08000008 <[^>]*> nop
-+0800000c <[^>]*> nop
-+08000010 <[^>]*> nop
-+08000014 <[^>]*> nop
-+08000018 <[^>]*> nop
-+0800001c <[^>]*> nop
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/relax_callr.s
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/relax_callr.s
-@@ -0,0 +1,17 @@
-+# relaxation test for callr
-+
-+.globl text1
-+.section text1, "ax", @progbits
-+
-+	call func
-+	call func1
-+
-+.section text2, "ax", @progbits
-+func:
-+	nop
-+	br func1
-+	nop
-+	nop
-+	nop
-+func1:
-+	nop
-Index: binutils-2.20.1/gas/testsuite/gas/nios2/relax_cjmp.d
-===================================================================
---- /dev/null
-+++ binutils-2.20.1/gas/testsuite/gas/nios2/relax_cjmp.d
-@@ -0,0 +1,8227 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 relax_cjmp
-+
-+# Test relaxation of conditional jumps
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section text2:
-+00000000 <[^>]*> bge	r2,r3,00008000 <[^>]*>
-+00000004 <[^>]*> nop
-+00000008 <[^>]*> nop
-+0000000c <[^>]*> nop
-+00000010 <[^>]*> blt	r3,r2,00000020 <[^>]*>
-+00000014 <[^>]*> movhi	at,1
-+00000018 <[^>]*> ori	at,at,36
-+0000001c <[^>]*> jmp	at
-+00000020 <[^>]*> bge	r3,r2,00000038 <[^>]*>
-+00000024 <[^>]*> nop
-+00000028 <[^>]*> nop
-+0000002c <[^>]*> nop
-+00000030 <[^>]*> nop
-+00000034 <[^>]*> nop
-+00000038 <[^>]*> nop
-+Disassembly of section text1:
-+00008000 <[^>]*> beq	r2,r3,00010000 <[^>]*>
-+00008004 <[^>]*> nop
-+00008008 <[^>]*> nop
-+0000800c <[^>]*> nop
-+00008010 <[^>]*> bne	r2,r3,00008020 <[^>]*>
-+00008014 <[^>]*> movhi	at,1
-+00008018 <[^>]*> ori	at,at,36
-+0000801c <[^>]*> jmp	at
-+00008020 <[^>]*> nop
-+00008024 <[^>]*> nop
-+00008028 <[^>]*> nop
-+0000802c <[^>]*> nop
-+00008030 <[^>]*> nop
-+00008034 <[^>]*> nop
-+00008038 <[^>]*> nop
-+0000803c <[^>]*> nop
-+00008040 <[^>]*> nop
-+00008044 <[^>]*> nop
-+00008048 <[^>]*> nop
-+0000804c <[^>]*> nop
-+00008050 <[^>]*> nop
-+00008054 <[^>]*> nop
-+00008058 <[^>]*> nop
-+0000805c <[^>]*> nop
-+00008060 <[^>]*> nop
-+00008064 <[^>]*> nop
-+00008068 <[^>]*> nop
-+0000806c <[^>]*> nop
-+00008070 <[^>]*> nop
-+00008074 <[^>]*> nop
-+00008078 <[^>]*> nop
-+0000807c <[^>]*> nop
-+00008080 <[^>]*> nop
-+00008084 <[^>]*> nop
-+00008088 <[^>]*> nop
-+0000808c <[^>]*> nop
-+00008090 <[^>]*> nop
-+00008094 <[^>]*> nop
-+00008098 <[^>]*> nop
-+0000809c <[^>]*> nop
-+000080a0 <[^>]*> nop
-+000080a4 <[^>]*> nop
-+000080a8 <[^>]*> nop
-+000080ac <[^>]*> nop
-+000080b0 <[^>]*> nop
-+000080b4 <[^>]*> nop
-+000080b8 <[^>]*> nop
-+000080bc <[^>]*> nop
-+000080c0 <[^>]*> nop
-+000080c4 <[^>]*> nop
-+000080c8 <[^>]*> nop
-+000080cc <[^>]*> nop
-+000080d0 <[^>]*> nop
-+000080d4 <[^>]*> nop
-+000080d8 <[^>]*> nop
-+000080dc <[^>]*> nop
-+000080e0 <[^>]*> nop
-+000080e4 <[^>]*> nop
-+000080e8 <[^>]*> nop
-+000080ec <[^>]*> nop
-+000080f0 <[^>]*> nop
-+000080f4 <[^>]*> nop
-+000080f8 <[^>]*> nop
-+000080fc <[^>]*> nop
-+00008100 <[^>]*> nop
-+00008104 <[^>]*> nop
-+00008108 <[^>]*> nop
-+0000810c <[^>]*> nop
-+00008110 <[^>]*> nop
-+00008114 <[^>]*> nop
-+00008118 <[^>]*> nop
-+0000811c <[^>]*> nop
-+00008120 <[^>]*> nop
-+00008124 <[^>]*> nop
-+00008128 <[^>]*> nop
-+0000812c <[^>]*> nop
-+00008130 <[^>]*> nop
-+00008134 <[^>]*> nop
-+00008138 <[^>]*> nop
-+0000813c <[^>]*> nop
-+00008140 <[^>]*> nop
-+00008144 <[^>]*> nop
-+00008148 <[^>]*> nop
-+0000814c <[^>]*> nop
-+00008150 <[^>]*> nop
-+00008154 <[^>]*> nop
-+00008158 <[^>]*> nop
-+0000815c <[^>]*> nop
-+00008160 <[^>]*> nop
-+00008164 <[^>]*> nop
-+00008168 <[^>]*> nop
-+0000816c <[^>]*> nop
-+00008170 <[^>]*> nop
-+00008174 <[^>]*> nop
-+00008178 <[^>]*> nop
-+0000817c <[^>]*> nop
-+00008180 <[^>]*> nop
-+00008184 <[^>]*> nop
-+00008188 <[^>]*> nop
-+0000818c <[^>]*> nop
-+00008190 <[^>]*> nop
-+00008194 <[^>]*> nop
-+00008198 <[^>]*> nop
-+0000819c <[^>]*> nop
-+000081a0 <[^>]*> nop
-+000081a4 <[^>]*> nop
-+000081a8 <[^>]*> nop
-+000081ac <[^>]*> nop
-+000081b0 <[^>]*> nop
-+000081b4 <[^>]*> nop
-+000081b8 <[^>]*> nop
-+000081bc <[^>]*> nop
-+000081c0 <[^>]*> nop
-+000081c4 <[^>]*> nop
-+000081c8 <[^>]*> nop
-+000081cc <[^>]*> nop
-+000081d0 <[^>]*> nop
-+000081d4 <[^>]*> nop
-+000081d8 <[^>]*> nop
-+000081dc <[^>]*> nop
-+000081e0 <[^>]*> nop
-+000081e4 <[^>]*> nop
-+000081e8 <[^>]*> nop
-+000081ec <[^>]*> nop
-+000081f0 <[^>]*> nop
-+000081f4 <[^>]*> nop
-+000081f8 <[^>]*> nop
-+000081fc <[^>]*> nop
-+00008200 <[^>]*> nop
-+00008204 <[^>]*> nop
-+00008208 <[^>]*> nop
-+0000820c <[^>]*> nop
-+00008210 <[^>]*> nop
-+00008214 <[^>]*> nop
-+00008218 <[^>]*> nop
-+0000821c <[^>]*> nop
-+00008220 <[^>]*> nop
-+00008224 <[^>]*> nop
-+00008228 <[^>]*> nop
-+0000822c <[^>]*> nop
-+00008230 <[^>]*> nop
-+00008234 <[^>]*> nop
-+00008238 <[^>]*> nop
-+0000823c <[^>]*> nop
-+00008240 <[^>]*> nop
-+00008244 <[^>]*> nop
-+00008248 <[^>]*> nop
-+0000824c <[^>]*> nop
-+00008250 <[^>]*> nop
-+00008254 <[^>]*> nop
-+00008258 <[^>]*> nop
-+0000825c <[^>]*> nop
-+00008260 <[^>]*> nop
-+00008264 <[^>]*> nop
-+00008268 <[^>]*> nop
-+0000826c <[^>]*> nop
-+00008270 <[^>]*> nop
-+00008274 <[^>]*> nop
-+00008278 <[^>]*> nop
-+0000827c <[^>]*> nop
-+00008280 <[^>]*> nop
-+00008284 <[^>]*> nop
-+00008288 <[^>]*> nop
-+0000828c <[^>]*> nop
-+00008290 <[^>]*> nop
-+00008294 <[^>]*> nop
-+00008298 <[^>]*> nop
-+0000829c <[^>]*> nop
-+000082a0 <[^>]*> nop
-+000082a4 <[^>]*> nop
-+000082a8 <[^>]*> nop
-+000082ac <[^>]*> nop
-+000082b0 <[^>]*> nop
-+000082b4 <[^>]*> nop
-+000082b8 <[^>]*> nop
-+000082bc <[^>]*> nop
-+000082c0 <[^>]*> nop
-+000082c4 <[^>]*> nop
-+000082c8 <[^>]*> nop
-+000082cc <[^>]*> nop
-+000082d0 <[^>]*> nop
-+000082d4 <[^>]*> nop
-+000082d8 <[^>]*> nop
-+000082dc <[^>]*> nop
-+000082e0 <[^>]*> nop
-+000082e4 <[^>]*> nop
-+000082e8 <[^>]*> nop
-+000082ec <[^>]*> nop
-+000082f0 <[^>]*> nop
-+000082f4 <[^>]*> nop
-+000082f8 <[^>]*> nop
-+000082fc <[^>]*> nop
-+00008300 <[^>]*> nop
-+00008304 <[^>]*> nop
-+00008308 <[^>]*> nop
-+0000830c <[^>]*> nop
-+00008310 <[^>]*> nop
-+00008314 <[^>]*> nop
-+00008318 <[^>]*> nop
-+0000831c <[^>]*> nop
-+00008320 <[^>]*> nop
-+00008324 <[^>]*> nop
-+00008328 <[^>]*> nop
-+0000832c <[^>]*> nop
-+00008330 <[^>]*> nop
-+00008334 <[^>]*> nop
-+00008338 <[^>]*> nop
-+0000833c <[^>]*> nop
-+00008340 <[^>]*> nop
-+00008344 <[^>]*> nop
-+00008348 <[^>]*> nop
-+0000834c <[^>]*> nop
-+00008350 <[^>]*> nop
-+00008354 <[^>]*> nop
-+00008358 <[^>]*> nop
-+0000835c <[^>]*> nop
-+00008360 <[^>]*> nop
-+00008364 <[^>]*> nop
-+00008368 <[^>]*> nop
-+0000836c <[^>]*> nop
-+00008370 <[^>]*> nop
-+00008374 <[^>]*> nop
-+00008378 <[^>]*> nop
-+0000837c <[^>]*> nop
-+00008380 <[^>]*> nop
-+00008384 <[^>]*> nop
-+00008388 <[^>]*> nop
-+0000838c <[^>]*> nop
-+00008390 <[^>]*> nop
-+00008394 <[^>]*> nop
-+00008398 <[^>]*> nop
-+0000839c <[^>]*> nop
-+000083a0 <[^>]*> nop
-+000083a4 <[^>]*> nop
-+000083a8 <[^>]*> nop
-+000083ac <[^>]*> nop
-+000083b0 <[^>]*> nop
-+000083b4 <[^>]*> nop
-+000083b8 <[^>]*> nop
-+000083bc <[^>]*> nop
-+000083c0 <[^>]*> nop
-+000083c4 <[^>]*> nop
-+000083c8 <[^>]*> nop
-+000083cc <[^>]*> nop
-+000083d0 <[^>]*> nop
-+000083d4 <[^>]*> nop
-+000083d8 <[^>]*> nop
-+000083dc <[^>]*> nop
-+000083e0 <[^>]*> nop
-+000083e4 <[^>]*> nop
-+000083e8 <[^>]*> nop
-+000083ec <[^>]*> nop
-+000083f0 <[^>]*> nop
-+000083f4 <[^>]*> nop
-+000083f8 <[^>]*> nop
-+000083fc <[^>]*> nop
-+00008400 <[^>]*> nop
-+00008404 <[^>]*> nop
-+00008408 <[^>]*> nop
-+0000840c <[^>]*> nop
-+00008410 <[^>]*> nop
-+00008414 <[^>]*> nop
-+00008418 <[^>]*> nop
-+0000841c <[^>]*> nop
-+00008420 <[^>]*> nop
-+00008424 <[^>]*> nop
-+00008428 <[^>]*> nop
-+0000842c <[^>]*> nop
-+00008430 <[^>]*> nop
-+00008434 <[^>]*> nop
-+00008438 <[^>]*> nop
-+0000843c <[^>]*> nop
-+00008440 <[^>]*> nop
-+00008444 <[^>]*> nop
-+00008448 <[^>]*> nop
-+0000844c <[^>]*> nop
-+00008450 <[^>]*> nop
-+00008454 <[^>]*> nop
-+00008458 <[^>]*> nop
-+0000845c <[^>]*> nop
-+00008460 <[^>]*> nop
-+00008464 <[^>]*> nop
-+00008468 <[^>]*> nop
-+0000846c <[^>]*> nop
-+00008470 <[^>]*> nop
-+00008474 <[^>]*> nop
-+00008478 <[^>]*> nop
-+0000847c <[^>]*> nop
-+00008480 <[^>]*> nop
-+00008484 <[^>]*> nop
-+00008488 <[^>]*> nop
-+0000848c <[^>]*> nop
-+00008490 <[^>]*> nop
-+00008494 <[^>]*> nop
-+00008498 <[^>]*> nop
-+0000849c <[^>]*> nop
-+000084a0 <[^>]*> nop
-+000084a4 <[^>]*> nop
-+000084a8 <[^>]*> nop
-+000084ac <[^>]*> nop
-+000084b0 <[^>]*> nop
-+000084b4 <[^>]*> nop
-+000084b8 <[^>]*> nop
-+000084bc <[^>]*> nop
-+000084c0 <[^>]*> nop
-+000084c4 <[^>]*> nop
-+000084c8 <[^>]*> nop
-+000084cc <[^>]*> nop
-+000084d0 <[^>]*> nop
-+000084d4 <[^>]*> nop
-+000084d8 <[^>]*> nop
-+000084dc <[^>]*> nop
-+000084e0 <[^>]*> nop
-+000084e4 <[^>]*> nop
-+000084e8 <[^>]*> nop
-+000084ec <[^>]*> nop
-+000084f0 <[^>]*> nop
-+000084f4 <[^>]*> nop
-+000084f8 <[^>]*> nop
-+000084fc <[^>]*> nop
-+00008500 <[^>]*> nop
-+00008504 <[^>]*> nop
-+00008508 <[^>]*> nop
-+0000850c <[^>]*> nop
-+00008510 <[^>]*> nop
-+00008514 <[^>]*> nop
-+00008518 <[^>]*> nop
-+0000851c <[^>]*> nop
-+00008520 <[^>]*> nop
-+00008524 <[^>]*> nop
-+00008528 <[^>]*> nop
-+0000852c <[^>]*> nop
-+00008530 <[^>]*> nop
-+00008534 <[^>]*> nop
-+00008538 <[^>]*> nop
-+0000853c <[^>]*> nop
-+00008540 <[^>]*> nop
-+00008544 <[^>]*> nop
-+00008548 <[^>]*> nop
-+0000854c <[^>]*> nop
-+00008550 <[^>]*> nop
-+00008554 <[^>]*> nop
-+00008558 <[^>]*> nop
-+0000855c <[^>]*> nop
-+00008560 <[^>]*> nop
-+00008564 <[^>]*> nop
-+00008568 <[^>]*> nop
-+0000856c <[^>]*> nop
-+00008570 <[^>]*> nop
-+00008574 <[^>]*> nop
-+00008578 <[^>]*> nop
-+0000857c <[^>]*> nop
-+00008580 <[^>]*> nop
-+00008584 <[^>]*> nop
-+00008588 <[^>]*> nop
-+0000858c <[^>]*> nop
-+00008590 <[^>]*> nop
-+00008594 <[^>]*> nop
-+00008598 <[^>]*> nop
-+0000859c <[^>]*> nop
-+000085a0 <[^>]*> nop
-+000085a4 <[^>]*> nop
-+000085a8 <[^>]*> nop
-+000085ac <[^>]*> nop
-+000085b0 <[^>]*> nop
-+000085b4 <[^>]*> nop
-+000085b8 <[^>]*> nop
-+000085bc <[^>]*> nop
-+000085c0 <[^>]*> nop
-+000085c4 <[^>]*> nop
-+000085c8 <[^>]*> nop
-+000085cc <[^>]*> nop
-+000085d0 <[^>]*> nop
-+000085d4 <[^>]*> nop
-+000085d8 <[^>]*> nop
-+000085dc <[^>]*> nop
-+000085e0 <[^>]*> nop
-+000085e4 <[^>]*> nop
-+000085e8 <[^>]*> nop
-+000085ec <[^>]*> nop
-+000085f0 <[^>]*> nop
-+000085f4 <[^>]*> nop
-+000085f8 <[^>]*> nop
-+000085fc <[^>]*> nop
-+00008600 <[^>]*> nop
-+00008604 <[^>]*> nop
-+00008608 <[^>]*> nop
-+0000860c <[^>]*> nop
-+00008610 <[^>]*> nop
-+00008614 <[^>]*> nop
-+00008618 <[^>]*> nop
-+0000861c <[^>]*> nop
-+00008620 <[^>]*> nop
-+00008624 <[^>]*> nop
-+00008628 <[^>]*> nop
-+0000862c <[^>]*> nop
-+00008630 <[^>]*> nop
-+00008634 <[^>]*> nop
-+00008638 <[^>]*> nop
-+0000863c <[^>]*> nop
-+00008640 <[^>]*> nop
-+00008644 <[^>]*> nop
-+00008648 <[^>]*> nop
-+0000864c <[^>]*> nop
-+00008650 <[^>]*> nop
-+00008654 <[^>]*> nop
-+00008658 <[^>]*> nop
-+0000865c <[^>]*> nop
-+00008660 <[^>]*> nop
-+00008664 <[^>]*> nop
-+00008668 <[^>]*> nop
-+0000866c <[^>]*> nop
-+00008670 <[^>]*> nop
-+00008674 <[^>]*> nop
-+00008678 <[^>]*> nop
-+0000867c <[^>]*> nop
-+00008680 <[^>]*> nop
-+00008684 <[^>]*> nop
-+00008688 <[^>]*> nop
-+0000868c <[^>]*> nop
-+00008690 <[^>]*> nop
-+00008694 <[^>]*> nop
-+00008698 <[^>]*> nop
-+0000869c <[^>]*> nop
-+000086a0 <[^>]*> nop
-+000086a4 <[^>]*> nop
-+000086a8 <[^>]*> nop
-+000086ac <[^>]*> nop
-+000086b0 <[^>]*> nop
-+000086b4 <[^>]*> nop
-+000086b8 <[^>]*> nop
-+000086bc <[^>]*> nop
-+000086c0 <[^>]*> nop
-+000086c4 <[^>]*> nop
-+000086c8 <[^>]*> nop
-+000086cc <[^>]*> nop
-+000086d0 <[^>]*> nop
-+000086d4 <[^>]*> nop
-+000086d8 <[^>]*> nop
-+000086dc <[^>]*> nop
-+000086e0 <[^>]*> nop
-+000086e4 <[^>]*> nop
-+000086e8 <[^>]*> nop
-+000086ec <[^>]*> nop
-+000086f0 <[^>]*> nop
-+000086f4 <[^>]*> nop
-+000086f8 <[^>]*> nop
-+000086fc <[^>]*> nop
-+00008700 <[^>]*> nop
-+00008704 <[^>]*> nop
-+00008708 <[^>]*> nop
-+0000870c <[^>]*> nop
-+00008710 <[^>]*> nop
-+00008714 <[^>]*> nop
-+00008718 <[^>]*> nop
-+0000871c <[^>]*> nop
-+00008720 <[^>]*> nop
-+00008724 <[^>]*> nop
-+00008728 <[^>]*> nop
-+0000872c <[^>]*> nop
-+00008730 <[^>]*> nop
-+00008734 <[^>]*> nop
-+00008738 <[^>]*> nop
-+0000873c <[^>]*> nop
-+00008740 <[^>]*> nop
-+00008744 <[^>]*> nop
-+00008748 <[^>]*> nop
-+0000874c <[^>]*> nop
-+00008750 <[^>]*> nop
-+00008754 <[^>]*> nop
-+00008758 <[^>]*> nop
-+0000875c <[^>]*> nop
-+00008760 <[^>]*> nop
-+00008764 <[^>]*> nop
-+00008768 <[^>]*> nop
-+0000876c <[^>]*> nop
-+00008770 <[^>]*> nop
-+00008774 <[^>]*> nop
-+00008778 <[^>]*> nop
-+0000877c <[^>]*> nop
-+00008780 <[^>]*> nop
-+00008784 <[^>]*> nop
-+00008788 <[^>]*> nop
-+0000878c <[^>]*> nop
-+00008790 <[^>]*> nop
-+00008794 <[^>]*> nop
-+00008798 <[^>]*> nop
-+0000879c <[^>]*> nop
-+000087a0 <[^>]*> nop
-+000087a4 <[^>]*> nop
-+000087a8 <[^>]*> nop
-+000087ac <[^>]*> nop
-+000087b0 <[^>]*> nop
-+000087b4 <[^>]*> nop
-+000087b8 <[^>]*> nop
-+000087bc <[^>]*> nop
-+000087c0 <[^>]*> nop
-+000087c4 <[^>]*> nop
-+000087c8 <[^>]*> nop
-+000087cc <[^>]*> nop
-+000087d0 <[^>]*> nop
-+000087d4 <[^>]*> nop
-+000087d8 <[^>]*> nop
-+000087dc <[^>]*> nop
-+000087e0 <[^>]*> nop
-+000087e4 <[^>]*> nop
-+000087e8 <[^>]*> nop
-+000087ec <[^>]*> nop
-+000087f0 <[^>]*> nop
-+000087f4 <[^>]*> nop
-+000087f8 <[^>]*> nop
-+000087fc <[^>]*> nop
-+00008800 <[^>]*> nop
-+00008804 <[^>]*> nop
-+00008808 <[^>]*> nop
-+0000880c <[^>]*> nop
-+00008810 <[^>]*> nop
-+00008814 <[^>]*> nop
-+00008818 <[^>]*> nop
-+0000881c <[^>]*> nop
-+00008820 <[^>]*> nop
-+00008824 <[^>]*> nop
-+00008828 <[^>]*> nop
-+0000882c <[^>]*> nop
-+00008830 <[^>]*> nop
-+00008834 <[^>]*> nop
-+00008838 <[^>]*> nop
-+0000883c <[^>]*> nop
-+00008840 <[^>]*> nop
-+00008844 <[^>]*> nop
-+00008848 <[^>]*> nop
-+0000884c <[^>]*> nop
-+00008850 <[^>]*> nop
-+00008854 <[^>]*> nop
-+00008858 <[^>]*> nop
-+0000885c <[^>]*> nop
-+00008860 <[^>]*> nop
-+00008864 <[^>]*> nop
-+00008868 <[^>]*> nop
-+0000886c <[^>]*> nop
-+00008870 <[^>]*> nop
-+00008874 <[^>]*> nop
-+00008878 <[^>]*> nop
-+0000887c <[^>]*> nop
-+00008880 <[^>]*> nop
-+00008884 <[^>]*> nop
-+00008888 <[^>]*> nop
-+0000888c <[^>]*> nop
-+00008890 <[^>]*> nop
-+00008894 <[^>]*> nop
-+00008898 <[^>]*> nop
-+0000889c <[^>]*> nop
-+000088a0 <[^>]*> nop
-+000088a4 <[^>]*> nop
-+000088a8 <[^>]*> nop
-+000088ac <[^>]*> nop
-+000088b0 <[^>]*> nop
-+000088b4 <[^>]*> nop
-+000088b8 <[^>]*> nop
-+000088bc <[^>]*> nop
-+000088c0 <[^>]*> nop
-+000088c4 <[^>]*> nop
-+000088c8 <[^>]*> nop
-+000088cc <[^>]*> nop
-+000088d0 <[^>]*> nop
-+000088d4 <[^>]*> nop
-+000088d8 <[^>]*> nop
-+000088dc <[^>]*> nop
-+000088e0 <[^>]*> nop
-+000088e4 <[^>]*> nop
-+000088e8 <[^>]*> nop
-+000088ec <[^>]*> nop
-+000088f0 <[^>]*> nop
-+000088f4 <[^>]*> nop
-+000088f8 <[^>]*> nop
-+000088fc <[^>]*> nop
-+00008900 <[^>]*> nop
-+00008904 <[^>]*> nop
-+00008908 <[^>]*> nop
-+0000890c <[^>]*> nop
-+00008910 <[^>]*> nop
-+00008914 <[^>]*> nop
-+00008918 <[^>]*> nop
-+0000891c <[^>]*> nop
-+00008920 <[^>]*> nop
-+00008924 <[^>]*> nop
-+00008928 <[^>]*> nop
-+0000892c <[^>]*> nop
-+00008930 <[^>]*> nop
-+00008934 <[^>]*> nop
-+00008938 <[^>]*> nop
-+0000893c <[^>]*> nop
-+00008940 <[^>]*> nop
-+00008944 <[^>]*> nop
-+00008948 <[^>]*> nop
-+0000894c <[^>]*> nop
-+00008950 <[^>]*> nop
-+00008954 <[^>]*> nop
-+00008958 <[^>]*> nop
-+0000895c <[^>]*> nop
-+00008960 <[^>]*> nop
-+00008964 <[^>]*> nop
-+00008968 <[^>]*> nop
-+0000896c <[^>]*> nop
-+00008970 <[^>]*> nop
-+00008974 <[^>]*> nop
-+00008978 <[^>]*> nop
-+0000897c <[^>]*> nop
-+00008980 <[^>]*> nop
-+00008984 <[^>]*> nop
-+00008988 <[^>]*> nop
-+0000898c <[^>]*> nop
-+00008990 <[^>]*> nop
-+00008994 <[^>]*> nop
-+00008998 <[^>]*> nop
-+0000899c <[^>]*> nop
-+000089a0 <[^>]*> nop
-+000089a4 <[^>]*> nop
-+000089a8 <[^>]*> nop
-+000089ac <[^>]*> nop
-+000089b0 <[^>]*> nop
-+000089b4 <[^>]*> nop
-+000089b8 <[^>]*> nop
-+000089bc <[^>]*> nop
-+000089c0 <[^>]*> nop
-+000089c4 <[^>]*> nop
-+000089c8 <[^>]*> nop
-+000089cc <[^>]*> nop
-+000089d0 <[^>]*> nop
-+000089d4 <[^>]*> nop
-+000089d8 <[^>]*> nop
-+000089dc <[^>]*> nop
-+000089e0 <[^>]*> nop
-+000089e4 <[^>]*> nop
-+000089e8 <[^>]*> nop
-+000089ec <[^>]*> nop
-+000089f0 <[^>]*> nop
-+000089f4 <[^>]*> nop
-+000089f8 <[^>]*> nop
-+000089fc <[^>]*> nop
-+00008a00 <[^>]*> nop
-+00008a04 <[^>]*> nop
-+00008a08 <[^>]*> nop
-+00008a0c <[^>]*> nop
-+00008a10 <[^>]*> nop
-+00008a14 <[^>]*> nop
-+00008a18 <[^>]*> nop
-+00008a1c <[^>]*> nop
-+00008a20 <[^>]*> nop
-+00008a24 <[^>]*> nop
-+00008a28 <[^>]*> nop
-+00008a2c <[^>]*> nop
-+00008a30 <[^>]*> nop
-+00008a34 <[^>]*> nop
-+00008a38 <[^>]*> nop
-+00008a3c <[^>]*> nop
-+00008a40 <[^>]*> nop
-+00008a44 <[^>]*> nop
-+00008a48 <[^>]*> nop
-+00008a4c <[^>]*> nop
-+00008a50 <[^>]*> nop
-+00008a54 <[^>]*> nop
-+00008a58 <[^>]*> nop
-+00008a5c <[^>]*> nop
-+00008a60 <[^>]*> nop
-+00008a64 <[^>]*> nop
-+00008a68 <[^>]*> nop
-+00008a6c <[^>]*> nop
-+00008a70 <[^>]*> nop
-+00008a74 <[^>]*> nop
-+00008a78 <[^>]*> nop
-+00008a7c <[^>]*> nop
-+00008a80 <[^>]*> nop
-+00008a84 <[^>]*> nop
-+00008a88 <[^>]*> nop
-+00008a8c <[^>]*> nop
-+00008a90 <[^>]*> nop
-+00008a94 <[^>]*> nop
-+00008a98 <[^>]*> nop
-+00008a9c <[^>]*> nop
-+00008aa0 <[^>]*> nop
-+00008aa4 <[^>]*> nop
-+00008aa8 <[^>]*> nop
-+00008aac <[^>]*> nop
-+00008ab0 <[^>]*> nop
-+00008ab4 <[^>]*> nop
-+00008ab8 <[^>]*> nop
-+00008abc <[^>]*> nop
-+00008ac0 <[^>]*> nop
-+00008ac4 <[^>]*> nop
-+00008ac8 <[^>]*> nop
-+00008acc <[^>]*> nop
-+00008ad0 <[^>]*> nop
-+00008ad4 <[^>]*> nop
-+00008ad8 <[^>]*> nop
-+00008adc <[^>]*> nop
-+00008ae0 <[^>]*> nop
-+00008ae4 <[^>]*> nop
-+00008ae8 <[^>]*> nop
-+00008aec <[^>]*> nop
-+00008af0 <[^>]*> nop
-+00008af4 <[^>]*> nop
-+00008af8 <[^>]*> nop
-+00008afc <[^>]*> nop
-+00008b00 <[^>]*> nop
-+00008b04 <[^>]*> nop
-+00008b08 <[^>]*> nop
-+00008b0c <[^>]*> nop
-+00008b10 <[^>]*> nop
-+00008b14 <[^>]*> nop
-+00008b18 <[^>]*> nop
-+00008b1c <[^>]*> nop
-+00008b20 <[^>]*> nop
-+00008b24 <[^>]*> nop
-+00008b28 <[^>]*> nop
-+00008b2c <[^>]*> nop
-+00008b30 <[^>]*> nop
-+00008b34 <[^>]*> nop
-+00008b38 <[^>]*> nop
-+00008b3c <[^>]*> nop
-+00008b40 <[^>]*> nop
-+00008b44 <[^>]*> nop
-+00008b48 <[^>]*> nop
-+00008b4c <[^>]*> nop
-+00008b50 <[^>]*> nop
-+00008b54 <[^>]*> nop
-+00008b58 <[^>]*> nop
-+00008b5c <[^>]*> nop
-+00008b60 <[^>]*> nop
-+00008b64 <[^>]*> nop
-+00008b68 <[^>]*> nop
-+00008b6c <[^>]*> nop
-+00008b70 <[^>]*> nop
-+00008b74 <[^>]*> nop
-+00008b78 <[^>]*> nop
-+00008b7c <[^>]*> nop
-+00008b80 <[^>]*> nop
-+00008b84 <[^>]*> nop
-+00008b88 <[^>]*> nop
-+00008b8c <[^>]*> nop
-+00008b90 <[^>]*> nop
-+00008b94 <[^>]*> nop
-+00008b98 <[^>]*> nop
-+00008b9c <[^>]*> nop
-+00008ba0 <[^>]*> nop
-+00008ba4 <[^>]*> nop
-+00008ba8 <[^>]*> nop
-+00008bac <[^>]*> nop
-+00008bb0 <[^>]*> nop
-+00008bb4 <[^>]*> nop
-+00008bb8 <[^>]*> nop
-+00008bbc <[^>]*> nop
-+00008bc0 <[^>]*> nop
-+00008bc4 <[^>]*> nop
-+00008bc8 <[^>]*> nop
-+00008bcc <[^>]*> nop
-+00008bd0 <[^>]*> nop
-+00008bd4 <[^>]*> nop
-+00008bd8 <[^>]*> nop
-+00008bdc <[^>]*> nop
-+00008be0 <[^>]*> nop
-+00008be4 <[^>]*> nop
-+00008be8 <[^>]*> nop
-+00008bec <[^>]*> nop
-+00008bf0 <[^>]*> nop
-+00008bf4 <[^>]*> nop
-+00008bf8 <[^>]*> nop
-+00008bfc <[^>]*> nop
-+00008c00 <[^>]*> nop
-+00008c04 <[^>]*> nop
-+00008c08 <[^>]*> nop
-+00008c0c <[^>]*> nop
-+00008c10 <[^>]*> nop
-+00008c14 <[^>]*> nop
-+00008c18 <[^>]*> nop
-+00008c1c <[^>]*> nop
-+00008c20 <[^>]*> nop
-+00008c24 <[^>]*> nop
-+00008c28 <[^>]*> nop
-+00008c2c <[^>]*> nop
-+00008c30 <[^>]*> nop
-+00008c34 <[^>]*> nop
-+00008c38 <[^>]*> nop
-+00008c3c <[^>]*> nop
-+00008c40 <[^>]*> nop
-+00008c44 <[^>]*> nop
-+00008c48 <[^>]*> nop
-+00008c4c <[^>]*> nop
-+00008c50 <[^>]*> nop
-+00008c54 <[^>]*> nop
-+00008c58 <[^>]*> nop
-+00008c5c <[^>]*> nop
-+00008c60 <[^>]*> nop
-+00008c64 <[^>]*> nop
-+00008c68 <[^>]*> nop
-+00008c6c <[^>]*> nop
-+00008c70 <[^>]*> nop
-+00008c74 <[^>]*> nop
-+00008c78 <[^>]*> nop
-+00008c7c <[^>]*> nop
-+00008c80 <[^>]*> nop
-+00008c84 <[^>]*> nop
-+00008c88 <[^>]*> nop
-+00008c8c <[^>]*> nop
-+00008c90 <[^>]*> nop
-+00008c94 <[^>]*> nop
-+00008c98 <[^>]*> nop
-+00008c9c <[^>]*> nop
-+00008ca0 <[^>]*> nop
-+00008ca4 <[^>]*> nop
-+00008ca8 <[^>]*> nop
-+00008cac <[^>]*> nop
-+00008cb0 <[^>]*> nop
-+00008cb4 <[^>]*> nop
-+00008cb8 <[^>]*> nop
-+00008cbc <[^>]*> nop
-+00008cc0 <[^>]*> nop
-+00008cc4 <[^>]*> nop
-+00008cc8 <[^>]*> nop
-+00008ccc <[^>]*> nop
-+00008cd0 <[^>]*> nop
-+00008cd4 <[^>]*> nop
-+00008cd8 <[^>]*> nop
-+00008cdc <[^>]*> nop
-+00008ce0 <[^>]*> nop
-+00008ce4 <[^>]*> nop
-+00008ce8 <[^>]*> nop
-+00008cec <[^>]*> nop
-+00008cf0 <[^>]*> nop
-+00008cf4 <[^>]*> nop
-+00008cf8 <[^>]*> nop
-+00008cfc <[^>]*> nop
-+00008d00 <[^>]*> nop
-+00008d04 <[^>]*> nop
-+00008d08 <[^>]*> nop
-+00008d0c <[^>]*> nop
-+00008d10 <[^>]*> nop
-+00008d14 <[^>]*> nop
-+00008d18 <[^>]*> nop
-+00008d1c <[^>]*> nop
-+00008d20 <[^>]*> nop
-+00008d24 <[^>]*> nop
-+00008d28 <[^>]*> nop
-+00008d2c <[^>]*> nop
-+00008d30 <[^>]*> nop
-+00008d34 <[^>]*> nop
-+00008d38 <[^>]*> nop
-+00008d3c <[^>]*> nop
-+00008d40 <[^>]*> nop
-+00008d44 <[^>]*> nop
-+00008d48 <[^>]*> nop
-+00008d4c <[^>]*> nop
-+00008d50 <[^>]*> nop
-+00008d54 <[^>]*> nop
-+00008d58 <[^>]*> nop
-+00008d5c <[^>]*> nop
-+00008d60 <[^>]*> nop
-+00008d64 <[^>]*> nop
-+00008d68 <[^>]*> nop
-+00008d6c <[^>]*> nop
-+00008d70 <[^>]*> nop
-+00008d74 <[^>]*> nop
-+00008d78 <[^>]*> nop
-+00008d7c <[^>]*> nop
-+00008d80 <[^>]*> nop
-+00008d84 <[^>]*> nop
-+00008d88 <[^>]*> nop
-+00008d8c <[^>]*> nop
-+00008d90 <[^>]*> nop
-+00008d94 <[^>]*> nop
-+00008d98 <[^>]*> nop
-+00008d9c <[^>]*> nop
-+00008da0 <[^>]*> nop
-+00008da4 <[^>]*> nop
-+00008da8 <[^>]*> nop
-+00008dac <[^>]*> nop
-+00008db0 <[^>]*> nop
-+00008db4 <[^>]*> nop
-+00008db8 <[^>]*> nop
-+00008dbc <[^>]*> nop
-+00008dc0 <[^>]*> nop
-+00008dc4 <[^>]*> nop
-+00008dc8 <[^>]*> nop
-+00008dcc <[^>]*> nop
-+00008dd0 <[^>]*> nop
-+00008dd4 <[^>]*> nop
-+00008dd8 <[^>]*> nop
-+00008ddc <[^>]*> nop
-+00008de0 <[^>]*> nop
-+00008de4 <[^>]*> nop
-+00008de8 <[^>]*> nop
-+00008dec <[^>]*> nop
-+00008df0 <[^>]*> nop
-+00008df4 <[^>]*> nop
-+00008df8 <[^>]*> nop
-+00008dfc <[^>]*> nop
-+00008e00 <[^>]*> nop
-+00008e04 <[^>]*> nop
-+00008e08 <[^>]*> nop
-+00008e0c <[^>]*> nop
-+00008e10 <[^>]*> nop
-+00008e14 <[^>]*> nop
-+00008e18 <[^>]*> nop
-+00008e1c <[^>]*> nop
-+00008e20 <[^>]*> nop
-+00008e24 <[^>]*> nop
-+00008e28 <[^>]*> nop
-+00008e2c <[^>]*> nop
-+00008e30 <[^>]*> nop
-+00008e34 <[^>]*> nop
-+00008e38 <[^>]*> nop
-+00008e3c <[^>]*> nop
-+00008e40 <[^>]*> nop
-+00008e44 <[^>]*> nop
-+00008e48 <[^>]*> nop
-+00008e4c <[^>]*> nop
-+00008e50 <[^>]*> nop
-+00008e54 <[^>]*> nop
-+00008e58 <[^>]*> nop
-+00008e5c <[^>]*> nop
-+00008e60 <[^>]*> nop
-+00008e64 <[^>]*> nop
-+00008e68 <[^>]*> nop
-+00008e6c <[^>]*> nop
-+00008e70 <[^>]*> nop
-+00008e74 <[^>]*> nop
-+00008e78 <[^>]*> nop
-+00008e7c <[^>]*> nop
-+00008e80 <[^>]*> nop
-+00008e84 <[^>]*> nop
-+00008e88 <[^>]*> nop
-+00008e8c <[^>]*> nop
-+00008e90 <[^>]*> nop
-+00008e94 <[^>]*> nop
-+00008e98 <[^>]*> nop
-+00008e9c <[^>]*> nop
-+00008ea0 <[^>]*> nop
-+00008ea4 <[^>]*> nop
-+00008ea8 <[^>]*> nop
-+00008eac <[^>]*> nop
-+00008eb0 <[^>]*> nop
-+00008eb4 <[^>]*> nop
-+00008eb8 <[^>]*> nop
-+00008ebc <[^>]*> nop
-+00008ec0 <[^>]*> nop
-+00008ec4 <[^>]*> nop
-+00008ec8 <[^>]*> nop
-+00008ecc <[^>]*> nop
-+00008ed0 <[^>]*> nop
-+00008ed4 <[^>]*> nop
-+00008ed8 <[^>]*> nop
-+00008edc <[^>]*> nop
-+00008ee0 <[^>]*> nop
-+00008ee4 <[^>]*> nop
-+00008ee8 <[^>]*> nop
-+00008eec <[^>]*> nop
-+00008ef0 <[^>]*> nop
-+00008ef4 <[^>]*> nop
-+00008ef8 <[^>]*> nop
-+00008efc <[^>]*> nop
-+00008f00 <[^>]*> nop
-+00008f04 <[^>]*> nop
-+00008f08 <[^>]*> nop
-+00008f0c <[^>]*> nop
-+00008f10 <[^>]*> nop
-+00008f14 <[^>]*> nop
-+00008f18 <[^>]*> nop
-+00008f1c <[^>]*> nop
-+00008f20 <[^>]*> nop
-+00008f24 <[^>]*> nop
-+00008f28 <[^>]*> nop
-+00008f2c <[^>]*> nop
-+00008f30 <[^>]*> nop
-+00008f34 <[^>]*> nop
-+00008f38 <[^>]*> nop
-+00008f3c <[^>]*> nop
-+00008f40 <[^>]*> nop
-+00008f44 <[^>]*> nop
-+00008f48 <[^>]*> nop
-+00008f4c <[^>]*> nop
-+00008f50 <[^>]*> nop
-+00008f54 <[^>]*> nop
-+00008f58 <[^>]*> nop
-+00008f5c <[^>]*> nop
-+00008f60 <[^>]*> nop
-+00008f64 <[^>]*> nop
-+00008f68 <[^>]*> nop
-+00008f6c <[^>]*> nop
-+00008f70 <[^>]*> nop
-+00008f74 <[^>]*> nop
-+00008f78 <[^>]*> nop
-+00008f7c <[^>]*> nop
-+00008f80 <[^>]*> nop
-+00008f84 <[^>]*> nop
-+00008f88 <[^>]*> nop
-+00008f8c <[^>]*> nop
-+00008f90 <[^>]*> nop
-+00008f94 <[^>]*> nop
-+00008f98 <[^>]*> nop
-+00008f9c <[^>]*> nop
-+00008fa0 <[^>]*> nop
-+00008fa4 <[^>]*> nop
-+00008fa8 <[^>]*> nop
-+00008fac <[^>]*> nop
-+00008fb0 <[^>]*> nop
-+00008fb4 <[^>]*> nop
-+00008fb8 <[^>]*> nop
-+00008fbc <[^>]*> nop
-+00008fc0 <[^>]*> nop
-+00008fc4 <[^>]*> nop
-+00008fc8 <[^>]*> nop
-+00008fcc <[^>]*> nop
-+00008fd0 <[^>]*> nop
-+00008fd4 <[^>]*> nop
-+00008fd8 <[^>]*> nop
-+00008fdc <[^>]*> nop
-+00008fe0 <[^>]*> nop
-+00008fe4 <[^>]*> nop
-+00008fe8 <[^>]*> nop
-+00008fec <[^>]*> nop
-+00008ff0 <[^>]*> nop
-+00008ff4 <[^>]*> nop
-+00008ff8 <[^>]*> nop
-+00008ffc <[^>]*> nop
-+00009000 <[^>]*> nop
-+00009004 <[^>]*> nop
-+00009008 <[^>]*> nop
-+0000900c <[^>]*> nop
-+00009010 <[^>]*> nop
-+00009014 <[^>]*> nop
-+00009018 <[^>]*> nop
-+0000901c <[^>]*> nop
-+00009020 <[^>]*> nop
-+00009024 <[^>]*> nop
-+00009028 <[^>]*> nop
-+0000902c <[^>]*> nop
-+00009030 <[^>]*> nop
-+00009034 <[^>]*> nop
-+00009038 <[^>]*> nop
-+0000903c <[^>]*> nop
-+00009040 <[^>]*> nop
-+00009044 <[^>]*> nop
-+00009048 <[^>]*> nop
-+0000904c <[^>]*> nop
-+00009050 <[^>]*> nop
-+00009054 <[^>]*> nop
-+00009058 <[^>]*> nop
-+0000905c <[^>]*> nop
-+00009060 <[^>]*> nop
-+00009064 <[^>]*> nop
-+00009068 <[^>]*> nop
-+0000906c <[^>]*> nop
-+00009070 <[^>]*> nop
-+00009074 <[^>]*> nop
-+00009078 <[^>]*> nop
-+0000907c <[^>]*> nop
-+00009080 <[^>]*> nop
-+00009084 <[^>]*> nop
-+00009088 <[^>]*> nop
-+0000908c <[^>]*> nop
-+00009090 <[^>]*> nop
-+00009094 <[^>]*> nop
-+00009098 <[^>]*> nop
-+0000909c <[^>]*> nop
-+000090a0 <[^>]*> nop
-+000090a4 <[^>]*> nop
-+000090a8 <[^>]*> nop
-+000090ac <[^>]*> nop
-+000090b0 <[^>]*> nop
-+000090b4 <[^>]*> nop
-+000090b8 <[^>]*> nop
-+000090bc <[^>]*> nop
-+000090c0 <[^>]*> nop
-+000090c4 <[^>]*> nop
-+000090c8 <[^>]*> nop
-+000090cc <[^>]*> nop
-+000090d0 <[^>]*> nop
-+000090d4 <[^>]*> nop
-+000090d8 <[^>]*> nop
-+000090dc <[^>]*> nop
-+000090e0 <[^>]*> nop
-+000090e4 <[^>]*> nop
-+000090e8 <[^>]*> nop
-+000090ec <[^>]*> nop
-+000090f0 <[^>]*> nop
-+000090f4 <[^>]*> nop
-+000090f8 <[^>]*> nop
-+000090fc <[^>]*> nop
-+00009100 <[^>]*> nop
-+00009104 <[^>]*> nop
-+00009108 <[^>]*> nop
-+0000910c <[^>]*> nop
-+00009110 <[^>]*> nop
-+00009114 <[^>]*> nop
-+00009118 <[^>]*> nop
-+0000911c <[^>]*> nop
-+00009120 <[^>]*> nop
-+00009124 <[^>]*> nop
-+00009128 <[^>]*> nop
-+0000912c <[^>]*> nop
-+00009130 <[^>]*> nop
-+00009134 <[^>]*> nop
-+00009138 <[^>]*> nop
-+0000913c <[^>]*> nop
-+00009140 <[^>]*> nop
-+00009144 <[^>]*> nop
-+00009148 <[^>]*> nop
-+0000914c <[^>]*> nop
-+00009150 <[^>]*> nop
-+00009154 <[^>]*> nop
-+00009158 <[^>]*> nop
-+0000915c <[^>]*> nop
-+00009160 <[^>]*> nop
-+00009164 <[^>]*> nop
-+00009168 <[^>]*> nop
-+0000916c <[^>]*> nop
-+00009170 <[^>]*> nop
-+00009174 <[^>]*> nop
-+00009178 <[^>]*> nop
-+0000917c <[^>]*> nop
-+00009180 <[^>]*> nop
-+00009184 <[^>]*> nop
-+00009188 <[^>]*> nop
-+0000918c <[^>]*> nop
-+00009190 <[^>]*> nop
-+00009194 <[^>]*> nop
-+00009198 <[^>]*> nop
-+0000919c <[^>]*> nop
-+000091a0 <[^>]*> nop
-+000091a4 <[^>]*> nop
-+000091a8 <[^>]*> nop
-+000091ac <[^>]*> nop
-+000091b0 <[^>]*> nop
-+000091b4 <[^>]*> nop
-+000091b8 <[^>]*> nop
-+000091bc <[^>]*> nop
-+000091c0 <[^>]*> nop
-+000091c4 <[^>]*> nop
-+000091c8 <[^>]*> nop
-+000091cc <[^>]*> nop
-+000091d0 <[^>]*> nop
-+000091d4 <[^>]*> nop
-+000091d8 <[^>]*> nop
-+000091dc <[^>]*> nop
-+000091e0 <[^>]*> nop
-+000091e4 <[^>]*> nop
-+000091e8 <[^>]*> nop
-+000091ec <[^>]*> nop
-+000091f0 <[^>]*> nop
-+000091f4 <[^>]*> nop
-+000091f8 <[^>]*> nop
-+000091fc <[^>]*> nop
-+00009200 <[^>]*> nop
-+00009204 <[^>]*> nop
-+00009208 <[^>]*> nop
-+0000920c <[^>]*> nop
-+00009210 <[^>]*> nop
-+00009214 <[^>]*> nop
-+00009218 <[^>]*> nop
-+0000921c <[^>]*> nop
-+00009220 <[^>]*> nop
-+00009224 <[^>]*> nop
-+00009228 <[^>]*> nop
-+0000922c <[^>]*> nop
-+00009230 <[^>]*> nop
-+00009234 <[^>]*> nop
-+00009238 <[^>]*> nop
-+0000923c <[^>]*> nop
-+00009240 <[^>]*> nop
-+00009244 <[^>]*> nop
-+00009248 <[^>]*> nop
-+0000924c <[^>]*> nop
-+00009250 <[^>]*> nop
-+00009254 <[^>]*> nop
-+00009258 <[^>]*> nop
-+0000925c <[^>]*> nop
-+00009260 <[^>]*> nop
-+00009264 <[^>]*> nop
-+00009268 <[^>]*> nop
-+0000926c <[^>]*> nop
-+00009270 <[^>]*> nop
-+00009274 <[^>]*> nop
-+00009278 <[^>]*> nop
-+0000927c <[^>]*> nop
-+00009280 <[^>]*> nop
-+00009284 <[^>]*> nop
-+00009288 <[^>]*> nop
-+0000928c <[^>]*> nop
-+00009290 <[^>]*> nop
-+00009294 <[^>]*> nop
-+00009298 <[^>]*> nop
-+0000929c <[^>]*> nop
-+000092a0 <[^>]*> nop
-+000092a4 <[^>]*> nop
-+000092a8 <[^>]*> nop
-+000092ac <[^>]*> nop
-+000092b0 <[^>]*> nop
-+000092b4 <[^>]*> nop
-+000092b8 <[^>]*> nop
-+000092bc <[^>]*> nop
-+000092c0 <[^>]*> nop
-+000092c4 <[^>]*> nop
-+000092c8 <[^>]*> nop
-+000092cc <[^>]*> nop
-+000092d0 <[^>]*> nop
-+000092d4 <[^>]*> nop
-+000092d8 <[^>]*> nop
-+000092dc <[^>]*> nop
-+000092e0 <[^>]*> nop
-+000092e4 <[^>]*> nop
-+000092e8 <[^>]*> nop
-+000092ec <[^>]*> nop
-+000092f0 <[^>]*> nop
-+000092f4 <[^>]*> nop
-+000092f8 <[^>]*> nop
-+000092fc <[^>]*> nop
-+00009300 <[^>]*> nop
-+00009304 <[^>]*> nop
-+00009308 <[^>]*> nop
-+0000930c <[^>]*> nop
-+00009310 <[^>]*> nop
-+00009314 <[^>]*> nop
-+00009318 <[^>]*> nop
-+0000931c <[^>]*> nop
-+00009320 <[^>]*> nop
-+00009324 <[^>]*> nop
-+00009328 <[^>]*> nop
-+0000932c <[^>]*> nop
-+00009330 <[^>]*> nop
-+00009334 <[^>]*> nop
-+00009338 <[^>]*> nop
-+0000933c <[^>]*> nop
-+00009340 <[^>]*> nop
-+00009344 <[^>]*> nop
-+00009348 <[^>]*> nop
-+0000934c <[^>]*> nop
-+00009350 <[^>]*> nop
-+00009354 <[^>]*> nop
-+00009358 <[^>]*> nop
-+0000935c <[^>]*> nop
-+00009360 <[^>]*> nop
-+00009364 <[^>]*> nop
-+00009368 <[^>]*> nop
-+0000936c <[^>]*> nop
-+00009370 <[^>]*> nop
-+00009374 <[^>]*> nop
-+00009378 <[^>]*> nop
-+0000937c <[^>]*> nop
-+00009380 <[^>]*> nop
-+00009384 <[^>]*> nop
-+00009388 <[^>]*> nop
-+0000938c <[^>]*> nop
-+00009390 <[^>]*> nop
-+00009394 <[^>]*> nop
-+00009398 <[^>]*> nop
-+0000939c <[^>]*> nop
-+000093a0 <[^>]*> nop
-+000093a4 <[^>]*> nop
-+000093a8 <[^>]*> nop
-+000093ac <[^>]*> nop
-+000093b0 <[^>]*> nop
-+000093b4 <[^>]*> nop
-+000093b8 <[^>]*> nop
-+000093bc <[^>]*> nop
-+000093c0 <[^>]*> nop
-+000093c4 <[^>]*> nop
-+000093c8 <[^>]*> nop
-+000093cc <[^>]*> nop
-+000093d0 <[^>]*> nop
-+000093d4 <[^>]*> nop
-+000093d8 <[^>]*> nop
-+000093dc <[^>]*> nop
-+000093e0 <[^>]*> nop
-+000093e4 <[^>]*> nop
-+000093e8 <[^>]*> nop
-+000093ec <[^>]*> nop
-+000093f0 <[^>]*> nop
-+000093f4 <[^>]*> nop
-+000093f8 <[^>]*> nop
-+000093fc <[^>]*> nop
-+00009400 <[^>]*> nop
-+00009404 <[^>]*> nop
-+00009408 <[^>]*> nop
-+0000940c <[^>]*> nop
-+00009410 <[^>]*> nop
-+00009414 <[^>]*> nop
-+00009418 <[^>]*> nop
-+0000941c <[^>]*> nop
-+00009420 <[^>]*> nop
-+00009424 <[^>]*> nop
-+00009428 <[^>]*> nop
-+0000942c <[^>]*> nop
-+00009430 <[^>]*> nop
-+00009434 <[^>]*> nop
-+00009438 <[^>]*> nop
-+0000943c <[^>]*> nop
-+00009440 <[^>]*> nop
-+00009444 <[^>]*> nop
-+00009448 <[^>]*> nop
-+0000944c <[^>]*> nop
-+00009450 <[^>]*> nop
-+00009454 <[^>]*> nop
-+00009458 <[^>]*> nop
-+0000945c <[^>]*> nop
-+00009460 <[^>]*> nop
-+00009464 <[^>]*> nop
-+00009468 <[^>]*> nop
-+0000946c <[^>]*> nop
-+00009470 <[^>]*> nop
-+00009474 <[^>]*> nop
-+00009478 <[^>]*> nop
-+0000947c <[^>]*> nop
-+00009480 <[^>]*> nop
-+00009484 <[^>]*> nop
-+00009488 <[^>]*> nop
-+0000948c <[^>]*> nop
-+00009490 <[^>]*> nop
-+00009494 <[^>]*> nop
-+00009498 <[^>]*> nop
-+0000949c <[^>]*> nop
-+000094a0 <[^>]*> nop
-+000094a4 <[^>]*> nop
-+000094a8 <[^>]*> nop
-+000094ac <[^>]*> nop
-+000094b0 <[^>]*> nop
-+000094b4 <[^>]*> nop
-+000094b8 <[^>]*> nop
-+000094bc <[^>]*> nop
-+000094c0 <[^>]*> nop
-+000094c4 <[^>]*> nop
-+000094c8 <[^>]*> nop
-+000094cc <[^>]*> nop
-+000094d0 <[^>]*> nop
-+000094d4 <[^>]*> nop
-+000094d8 <[^>]*> nop
-+000094dc <[^>]*> nop
-+000094e0 <[^>]*> nop
-+000094e4 <[^>]*> nop
-+000094e8 <[^>]*> nop
-+000094ec <[^>]*> nop
-+000094f0 <[^>]*> nop
-+000094f4 <[^>]*> nop
-+000094f8 <[^>]*> nop
-+000094fc <[^>]*> nop
-+00009500 <[^>]*> nop
-+00009504 <[^>]*> nop
-+00009508 <[^>]*> nop
-+0000950c <[^>]*> nop
-+00009510 <[^>]*> nop
-+00009514 <[^>]*> nop
-+00009518 <[^>]*> nop
-+0000951c <[^>]*> nop
-+00009520 <[^>]*> nop
-+00009524 <[^>]*> nop
-+00009528 <[^>]*> nop
-+0000952c <[^>]*> nop
-+00009530 <[^>]*> nop
-+00009534 <[^>]*> nop
-+00009538 <[^>]*> nop
-+0000953c <[^>]*> nop
-+00009540 <[^>]*> nop
-+00009544 <[^>]*> nop
-+00009548 <[^>]*> nop
-+0000954c <[^>]*> nop
-+00009550 <[^>]*> nop
-+00009554 <[^>]*> nop
-+00009558 <[^>]*> nop
-+0000955c <[^>]*> nop
-+00009560 <[^>]*> nop
-+00009564 <[^>]*> nop
-+00009568 <[^>]*> nop
-+0000956c <[^>]*> nop
-+00009570 <[^>]*> nop
-+00009574 <[^>]*> nop
-+00009578 <[^>]*> nop
-+0000957c <[^>]*> nop
-+00009580 <[^>]*> nop
-+00009584 <[^>]*> nop
-+00009588 <[^>]*> nop
-+0000958c <[^>]*> nop
-+00009590 <[^>]*> nop
-+00009594 <[^>]*> nop
-+00009598 <[^>]*> nop
-+0000959c <[^>]*> nop
-+000095a0 <[^>]*> nop
-+000095a4 <[^>]*> nop
-+000095a8 <[^>]*> nop
-+000095ac <[^>]*> nop
-+000095b0 <[^>]*> nop
-+000095b4 <[^>]*> nop
-+000095b8 <[^>]*> nop
-+000095bc <[^>]*> nop
-+000095c0 <[^>]*> nop
-+000095c4 <[^>]*> nop
-+000095c8 <[^>]*> nop
-+000095cc <[^>]*> nop
-+000095d0 <[^>]*> nop
-+000095d4 <[^>]*> nop
-+000095d8 <[^>]*> nop
-+000095dc <[^>]*> nop
-+000095e0 <[^>]*> nop
-+000095e4 <[^>]*> nop
-+000095e8 <[^>]*> nop
-+000095ec <[^>]*> nop
-+000095f0 <[^>]*> nop
-+000095f4 <[^>]*> nop
-+000095f8 <[^>]*> nop
-+000095fc <[^>]*> nop
-+00009600 <[^>]*> nop
-+00009604 <[^>]*> nop
-+00009608 <[^>]*> nop
-+0000960c <[^>]*> nop
-+00009610 <[^>]*> nop
-+00009614 <[^>]*> nop
-+00009618 <[^>]*> nop
-+0000961c <[^>]*> nop
-+00009620 <[^>]*> nop
-+00009624 <[^>]*> nop
-+00009628 <[^>]*> nop
-+0000962c <[^>]*> nop
-+00009630 <[^>]*> nop
-+00009634 <[^>]*> nop
-+00009638 <[^>]*> nop
-+0000963c <[^>]*> nop
-+00009640 <[^>]*> nop
-+00009644 <[^>]*> nop
-+00009648 <[^>]*> nop
-+0000964c <[^>]*> nop
-+00009650 <[^>]*> nop
-+00009654 <[^>]*> nop
-+00009658 <[^>]*> nop
-+0000965c <[^>]*> nop
-+00009660 <[^>]*> nop
-+00009664 <[^>]*> nop
-+00009668 <[^>]*> nop
-+0000966c <[^>]*> nop
-+00009670 <[^>]*> nop
-+00009674 <[^>]*> nop
-+00009678 <[^>]*> nop
-+0000967c <[^>]*> nop
-+00009680 <[^>]*> nop
-+00009684 <[^>]*> nop
-+00009688 <[^>]*> nop
-+0000968c <[^>]*> nop
-+00009690 <[^>]*> nop
-+00009694 <[^>]*> nop
-+00009698 <[^>]*> nop
-+0000969c <[^>]*> nop
-+000096a0 <[^>]*> nop
-+000096a4 <[^>]*> nop
-+000096a8 <[^>]*> nop
-+000096ac <[^>]*> nop
-+000096b0 <[^>]*> nop
-+000096b4 <[^>]*> nop
-+000096b8 <[^>]*> nop
-+000096bc <[^>]*> nop
-+000096c0 <[^>]*> nop
-+000096c4 <[^>]*> nop
-+000096c8 <[^>]*> nop
-+000096cc <[^>]*> nop
-+000096d0 <[^>]*> nop
-+000096d4 <[^>]*> nop
-+000096d8 <[^>]*> nop
-+000096dc <[^>]*> nop
-+000096e0 <[^>]*> nop
-+000096e4 <[^>]*> nop
-+000096e8 <[^>]*> nop
-+000096ec <[^>]*> nop
-+000096f0 <[^>]*> nop
-+000096f4 <[^>]*> nop
-+000096f8 <[^>]*> nop
-+000096fc <[^>]*> nop
-+00009700 <[^>]*> nop
-+00009704 <[^>]*> nop
-+00009708 <[^>]*> nop
-+0000970c <[^>]*> nop
-+00009710 <[^>]*> nop
-+00009714 <[^>]*> nop
-+00009718 <[^>]*> nop
-+0000971c <[^>]*> nop
-+00009720 <[^>]*> nop
-+00009724 <[^>]*> nop
-+00009728 <[^>]*> nop
-+0000972c <[^>]*> nop
-+00009730 <[^>]*> nop
-+00009734 <[^>]*> nop
-+00009738 <[^>]*> nop
-+0000973c <[^>]*> nop
-+00009740 <[^>]*> nop
-+00009744 <[^>]*> nop
-+00009748 <[^>]*> nop
-+0000974c <[^>]*> nop
-+00009750 <[^>]*> nop
-+00009754 <[^>]*> nop
-+00009758 <[^>]*> nop
-+0000975c <[^>]*> nop
-+00009760 <[^>]*> nop
-+00009764 <[^>]*> nop
-+00009768 <[^>]*> nop
-+0000976c <[^>]*> nop
-+00009770 <[^>]*> nop
-+00009774 <[^>]*> nop
-+00009778 <[^>]*> nop
-+0000977c <[^>]*> nop
-+00009780 <[^>]*> nop
-+00009784 <[^>]*> nop
-+00009788 <[^>]*> nop
-+0000978c <[^>]*> nop
-+00009790 <[^>]*> nop
-+00009794 <[^>]*> nop
-+00009798 <[^>]*> nop
-+0000979c <[^>]*> nop
-+000097a0 <[^>]*> nop
-+000097a4 <[^>]*> nop
-+000097a8 <[^>]*> nop
-+000097ac <[^>]*> nop
-+000097b0 <[^>]*> nop
-+000097b4 <[^>]*> nop
-+000097b8 <[^>]*> nop
-+000097bc <[^>]*> nop
-+000097c0 <[^>]*> nop
-+000097c4 <[^>]*> nop
-+000097c8 <[^>]*> nop
-+000097cc <[^>]*> nop
-+000097d0 <[^>]*> nop
-+000097d4 <[^>]*> nop
-+000097d8 <[^>]*> nop
-+000097dc <[^>]*> nop
-+000097e0 <[^>]*> nop
-+000097e4 <[^>]*> nop
-+000097e8 <[^>]*> nop
-+000097ec <[^>]*> nop
-+000097f0 <[^>]*> nop
-+000097f4 <[^>]*> nop
-+000097f8 <[^>]*> nop
-+000097fc <[^>]*> nop
-+00009800 <[^>]*> nop
-+00009804 <[^>]*> nop
-+00009808 <[^>]*> nop
-+0000980c <[^>]*> nop
-+00009810 <[^>]*> nop
-+00009814 <[^>]*> nop
-+00009818 <[^>]*> nop
-+0000981c <[^>]*> nop
-+00009820 <[^>]*> nop
-+00009824 <[^>]*> nop
-+00009828 <[^>]*> nop
-+0000982c <[^>]*> nop
-+00009830 <[^>]*> nop
-+00009834 <[^>]*> nop
-+00009838 <[^>]*> nop
-+0000983c <[^>]*> nop
-+00009840 <[^>]*> nop
-+00009844 <[^>]*> nop
-+00009848 <[^>]*> nop
-+0000984c <[^>]*> nop
-+00009850 <[^>]*> nop
-+00009854 <[^>]*> nop
-+00009858 <[^>]*> nop
-+0000985c <[^>]*> nop
-+00009860 <[^>]*> nop
-+00009864 <[^>]*> nop
-+00009868 <[^>]*> nop
-+0000986c <[^>]*> nop
-+00009870 <[^>]*> nop
-+00009874 <[^>]*> nop
-+00009878 <[^>]*> nop
-+0000987c <[^>]*> nop
-+00009880 <[^>]*> nop
-+00009884 <[^>]*> nop
-+00009888 <[^>]*> nop
-+0000988c <[^>]*> nop
-+00009890 <[^>]*> nop
-+00009894 <[^>]*> nop
-+00009898 <[^>]*> nop
-+0000989c <[^>]*> nop
-+000098a0 <[^>]*> nop
-+000098a4 <[^>]*> nop
-+000098a8 <[^>]*> nop
-+000098ac <[^>]*> nop
-+000098b0 <[^>]*> nop
-+000098b4 <[^>]*> nop
-+000098b8 <[^>]*> nop
-+000098bc <[^>]*> nop
-+000098c0 <[^>]*> nop
-+000098c4 <[^>]*> nop
-+000098c8 <[^>]*> nop
-+000098cc <[^>]*> nop
-+000098d0 <[^>]*> nop
-+000098d4 <[^>]*> nop
-+000098d8 <[^>]*> nop
-+000098dc <[^>]*> nop
-+000098e0 <[^>]*> nop
-+000098e4 <[^>]*> nop
-+000098e8 <[^>]*> nop
-+000098ec <[^>]*> nop
-+000098f0 <[^>]*> nop
-+000098f4 <[^>]*> nop
-+000098f8 <[^>]*> nop
-+000098fc <[^>]*> nop
-+00009900 <[^>]*> nop
-+00009904 <[^>]*> nop
-+00009908 <[^>]*> nop
-+0000990c <[^>]*> nop
-+00009910 <[^>]*> nop
-+00009914 <[^>]*> nop
-+00009918 <[^>]*> nop
-+0000991c <[^>]*> nop
-+00009920 <[^>]*> nop
-+00009924 <[^>]*> nop
-+00009928 <[^>]*> nop
-+0000992c <[^>]*> nop
-+00009930 <[^>]*> nop
-+00009934 <[^>]*> nop
-+00009938 <[^>]*> nop
-+0000993c <[^>]*> nop
-+00009940 <[^>]*> nop
-+00009944 <[^>]*> nop
-+00009948 <[^>]*> nop
-+0000994c <[^>]*> nop
-+00009950 <[^>]*> nop
-+00009954 <[^>]*> nop
-+00009958 <[^>]*> nop
-+0000995c <[^>]*> nop
-+00009960 <[^>]*> nop
-+00009964 <[^>]*> nop
-+00009968 <[^>]*> nop
-+0000996c <[^>]*> nop
-+00009970 <[^>]*> nop
-+00009974 <[^>]*> nop
-+00009978 <[^>]*> nop
-+0000997c <[^>]*> nop
-+00009980 <[^>]*> nop
-+00009984 <[^>]*> nop
-+00009988 <[^>]*> nop
-+0000998c <[^>]*> nop
-+00009990 <[^>]*> nop
-+00009994 <[^>]*> nop
-+00009998 <[^>]*> nop
-+0000999c <[^>]*> nop
-+000099a0 <[^>]*> nop
-+000099a4 <[^>]*> nop
-+000099a8 <[^>]*> nop
-+000099ac <[^>]*> nop
-+000099b0 <[^>]*> nop
-+000099b4 <[^>]*> nop
-+000099b8 <[^>]*> nop
-+000099bc <[^>]*> nop
-+000099c0 <[^>]*> nop
-+000099c4 <[^>]*> nop
-+000099c8 <[^>]*> nop
-+000099cc <[^>]*> nop
-+000099d0 <[^>]*> nop
-+000099d4 <[^>]*> nop
-+000099d8 <[^>]*> nop
-+000099dc <[^>]*> nop
-+000099e0 <[^>]*> nop
-+000099e4 <[^>]*> nop
-+000099e8 <[^>]*> nop
-+000099ec <[^>]*> nop
-+000099f0 <[^>]*> nop
-+000099f4 <[^>]*> nop
-+000099f8 <[^>]*> nop
-+000099fc <[^>]*> nop
-+00009a00 <[^>]*> nop
-+00009a04 <[^>]*> nop
-+00009a08 <[^>]*> nop
-+00009a0c <[^>]*> nop
-+00009a10 <[^>]*> nop
-+00009a14 <[^>]*> nop
-+00009a18 <[^>]*> nop
-+00009a1c <[^>]*> nop
-+00009a20 <[^>]*> nop
-+00009a24 <[^>]*> nop
-+00009a28 <[^>]*> nop
-+00009a2c <[^>]*> nop
-+00009a30 <[^>]*> nop
-+00009a34 <[^>]*> nop
-+00009a38 <[^>]*> nop
-+00009a3c <[^>]*> nop
-+00009a40 <[^>]*> nop
-+00009a44 <[^>]*> nop
-+00009a48 <[^>]*> nop
-+00009a4c <[^>]*> nop
-+00009a50 <[^>]*> nop
-+00009a54 <[^>]*> nop
-+00009a58 <[^>]*> nop
-+00009a5c <[^>]*> nop
-+00009a60 <[^>]*> nop
-+00009a64 <[^>]*> nop
-+00009a68 <[^>]*> nop
-+00009a6c <[^>]*> nop
-+00009a70 <[^>]*> nop
-+00009a74 <[^>]*> nop
-+00009a78 <[^>]*> nop
-+00009a7c <[^>]*> nop
-+00009a80 <[^>]*> nop
-+00009a84 <[^>]*> nop
-+00009a88 <[^>]*> nop
-+00009a8c <[^>]*> nop
-+00009a90 <[^>]*> nop
-+00009a94 <[^>]*> nop
-+00009a98 <[^>]*> nop
-+00009a9c <[^>]*> nop
-+00009aa0 <[^>]*> nop
-+00009aa4 <[^>]*> nop
-+00009aa8 <[^>]*> nop
-+00009aac <[^>]*> nop
-+00009ab0 <[^>]*> nop
-+00009ab4 <[^>]*> nop
-+00009ab8 <[^>]*> nop
-+00009abc <[^>]*> nop
-+00009ac0 <[^>]*> nop
-+00009ac4 <[^>]*> nop
-+00009ac8 <[^>]*> nop
-+00009acc <[^>]*> nop
-+00009ad0 <[^>]*> nop
-+00009ad4 <[^>]*> nop
-+00009ad8 <[^>]*> nop
-+00009adc <[^>]*> nop
-+00009ae0 <[^>]*> nop
-+00009ae4 <[^>]*> nop
-+00009ae8 <[^>]*> nop
-+00009aec <[^>]*> nop
-+00009af0 <[^>]*> nop
-+00009af4 <[^>]*> nop
-+00009af8 <[^>]*> nop
-+00009afc <[^>]*> nop
-+00009b00 <[^>]*> nop
-+00009b04 <[^>]*> nop
-+00009b08 <[^>]*> nop
-+00009b0c <[^>]*> nop
-+00009b10 <[^>]*> nop
-+00009b14 <[^>]*> nop
-+00009b18 <[^>]*> nop
-+00009b1c <[^>]*> nop
-+00009b20 <[^>]*> nop
-+00009b24 <[^>]*> nop
-+00009b28 <[^>]*> nop
-+00009b2c <[^>]*> nop
-+00009b30 <[^>]*> nop
-+00009b34 <[^>]*> nop
-+00009b38 <[^>]*> nop
-+00009b3c <[^>]*> nop
-+00009b40 <[^>]*> nop
-+00009b44 <[^>]*> nop
-+00009b48 <[^>]*> nop
-+00009b4c <[^>]*> nop
-+00009b50 <[^>]*> nop
-+00009b54 <[^>]*> nop
-+00009b58 <[^>]*> nop
-+00009b5c <[^>]*> nop
-+00009b60 <[^>]*> nop
-+00009b64 <[^>]*> nop
-+00009b68 <[^>]*> nop
-+00009b6c <[^>]*> nop
-+00009b70 <[^>]*> nop
-+00009b74 <[^>]*> nop
-+00009b78 <[^>]*> nop
-+00009b7c <[^>]*> nop
-+00009b80 <[^>]*> nop
-+00009b84 <[^>]*> nop
-+00009b88 <[^>]*> nop
-+00009b8c <[^>]*> nop
-+00009b90 <[^>]*> nop
-+00009b94 <[^>]*> nop
-+00009b98 <[^>]*> nop
-+00009b9c <[^>]*> nop
-+00009ba0 <[^>]*> nop
-+00009ba4 <[^>]*> nop
-+00009ba8 <[^>]*> nop
-+00009bac <[^>]*> nop
-+00009bb0 <[^>]*> nop
-+00009bb4 <[^>]*> nop
-+00009bb8 <[^>]*> nop
-+00009bbc <[^>]*> nop
-+00009bc0 <[^>]*> nop
-+00009bc4 <[^>]*> nop
-+00009bc8 <[^>]*> nop
-+00009bcc <[^>]*> nop
-+00009bd0 <[^>]*> nop
-+00009bd4 <[^>]*> nop
-+00009bd8 <[^>]*> nop
-+00009bdc <[^>]*> nop
-+00009be0 <[^>]*> nop
-+00009be4 <[^>]*> nop
-+00009be8 <[^>]*> nop
-+00009bec <[^>]*> nop
-+00009bf0 <[^>]*> nop
-+00009bf4 <[^>]*> nop
-+00009bf8 <[^>]*> nop
-+00009bfc <[^>]*> nop
-+00009c00 <[^>]*> nop
-+00009c04 <[^>]*> nop
-+00009c08 <[^>]*> nop
-+00009c0c <[^>]*> nop
-+00009c10 <[^>]*> nop
-+00009c14 <[^>]*> nop
-+00009c18 <[^>]*> nop
-+00009c1c <[^>]*> nop
-+00009c20 <[^>]*> nop
-+00009c24 <[^>]*> nop
-+00009c28 <[^>]*> nop
-+00009c2c <[^>]*> nop
-+00009c30 <[^>]*> nop
-+00009c34 <[^>]*> nop
-+00009c38 <[^>]*> nop
-+00009c3c <[^>]*> nop
-+00009c40 <[^>]*> nop
-+00009c44 <[^>]*> nop
-+00009c48 <[^>]*> nop
-+00009c4c <[^>]*> nop
-+00009c50 <[^>]*> nop
-+00009c54 <[^>]*> nop
-+00009c58 <[^>]*> nop
-+00009c5c <[^>]*> nop
-+00009c60 <[^>]*> nop
-+00009c64 <[^>]*> nop
-+00009c68 <[^>]*> nop
-+00009c6c <[^>]*> nop
-+00009c70 <[^>]*> nop
-+00009c74 <[^>]*> nop
-+00009c78 <[^>]*> nop
-+00009c7c <[^>]*> nop
-+00009c80 <[^>]*> nop
-+00009c84 <[^>]*> nop
-+00009c88 <[^>]*> nop
-+00009c8c <[^>]*> nop
-+00009c90 <[^>]*> nop
-+00009c94 <[^>]*> nop
-+00009c98 <[^>]*> nop
-+00009c9c <[^>]*> nop
-+00009ca0 <[^>]*> nop
-+00009ca4 <[^>]*> nop
-+00009ca8 <[^>]*> nop
-+00009cac <[^>]*> nop
-+00009cb0 <[^>]*> nop
-+00009cb4 <[^>]*> nop
-+00009cb8 <[^>]*> nop
-+00009cbc <[^>]*> nop
-+00009cc0 <[^>]*> nop
-+00009cc4 <[^>]*> nop
-+00009cc8 <[^>]*> nop
-+00009ccc <[^>]*> nop
-+00009cd0 <[^>]*> nop
-+00009cd4 <[^>]*> nop
-+00009cd8 <[^>]*> nop
-+00009cdc <[^>]*> nop
-+00009ce0 <[^>]*> nop
-+00009ce4 <[^>]*> nop
-+00009ce8 <[^>]*> nop
-+00009cec <[^>]*> nop
-+00009cf0 <[^>]*> nop
-+00009cf4 <[^>]*> nop
-+00009cf8 <[^>]*> nop
-+00009cfc <[^>]*> nop
-+00009d00 <[^>]*> nop
-+00009d04 <[^>]*> nop
-+00009d08 <[^>]*> nop
-+00009d0c <[^>]*> nop
-+00009d10 <[^>]*> nop
-+00009d14 <[^>]*> nop
-+00009d18 <[^>]*> nop
-+00009d1c <[^>]*> nop
-+00009d20 <[^>]*> nop
-+00009d24 <[^>]*> nop
-+00009d28 <[^>]*> nop
-+00009d2c <[^>]*> nop
-+00009d30 <[^>]*> nop
-+00009d34 <[^>]*> nop
-+00009d38 <[^>]*> nop
-+00009d3c <[^>]*> nop
-+00009d40 <[^>]*> nop
-+00009d44 <[^>]*> nop
-+00009d48 <[^>]*> nop
-+00009d4c <[^>]*> nop
-+00009d50 <[^>]*> nop
-+00009d54 <[^>]*> nop
-+00009d58 <[^>]*> nop
-+00009d5c <[^>]*> nop
-+00009d60 <[^>]*> nop
-+00009d64 <[^>]*> nop
-+00009d68 <[^>]*> nop
-+00009d6c <[^>]*> nop
-+00009d70 <[^>]*> nop
-+00009d74 <[^>]*> nop
-+00009d78 <[^>]*> nop
-+00009d7c <[^>]*> nop
-+00009d80 <[^>]*> nop
-+00009d84 <[^>]*> nop
-+00009d88 <[^>]*> nop
-+00009d8c <[^>]*> nop
-+00009d90 <[^>]*> nop
-+00009d94 <[^>]*> nop
-+00009d98 <[^>]*> nop
-+00009d9c <[^>]*> nop
-+00009da0 <[^>]*> nop
-+00009da4 <[^>]*> nop
-+00009da8 <[^>]*> nop
-+00009dac <[^>]*> nop
-+00009db0 <[^>]*> nop
-+00009db4 <[^>]*> nop
-+00009db8 <[^>]*> nop
-+00009dbc <[^>]*> nop
-+00009dc0 <[^>]*> nop
-+00009dc4 <[^>]*> nop
-+00009dc8 <[^>]*> nop
-+00009dcc <[^>]*> nop
-+00009dd0 <[^>]*> nop
-+00009dd4 <[^>]*> nop
-+00009dd8 <[^>]*> nop
-+00009ddc <[^>]*> nop
-+00009de0 <[^>]*> nop
-+00009de4 <[^>]*> nop
-+00009de8 <[^>]*> nop
-+00009dec <[^>]*> nop
-+00009df0 <[^>]*> nop
-+00009df4 <[^>]*> nop
-+00009df8 <[^>]*> nop
-+00009dfc <[^>]*> nop
-+00009e00 <[^>]*> nop
-+00009e04 <[^>]*> nop
-+00009e08 <[^>]*> nop
-+00009e0c <[^>]*> nop
-+00009e10 <[^>]*> nop
-+00009e14 <[^>]*> nop
-+00009e18 <[^>]*> nop
-+00009e1c <[^>]*> nop
-+00009e20 <[^>]*> nop
-+00009e24 <[^>]*> nop
-+00009e28 <[^>]*> nop
-+00009e2c <[^>]*> nop
-+00009e30 <[^>]*> nop
-+00009e34 <[^>]*> nop
-+00009e38 <[^>]*> nop
-+00009e3c <[^>]*> nop
-+00009e40 <[^>]*> nop
-+00009e44 <[^>]*> nop
-+00009e48 <[^>]*> nop
-+00009e4c <[^>]*> nop
-+00009e50 <[^>]*> nop
-+00009e54 <[^>]*> nop
-+00009e58 <[^>]*> nop
-+00009e5c <[^>]*> nop
-+00009e60 <[^>]*> nop
-+00009e64 <[^>]*> nop
-+00009e68 <[^>]*> nop
-+00009e6c <[^>]*> nop
-+00009e70 <[^>]*> nop
-+00009e74 <[^>]*> nop
-+00009e78 <[^>]*> nop
-+00009e7c <[^>]*> nop
-+00009e80 <[^>]*> nop
-+00009e84 <[^>]*> nop
-+00009e88 <[^>]*> nop
-+00009e8c <[^>]*> nop
-+00009e90 <[^>]*> nop
-+00009e94 <[^>]*> nop
-+00009e98 <[^>]*> nop
-+00009e9c <[^>]*> nop
-+00009ea0 <[^>]*> nop
-+00009ea4 <[^>]*> nop
-+00009ea8 <[^>]*> nop
-+00009eac <[^>]*> nop
-+00009eb0 <[^>]*> nop
-+00009eb4 <[^>]*> nop
-+00009eb8 <[^>]*> nop
-+00009ebc <[^>]*> nop
-+00009ec0 <[^>]*> nop
-+00009ec4 <[^>]*> nop
-+00009ec8 <[^>]*> nop
-+00009ecc <[^>]*> nop
-+00009ed0 <[^>]*> nop
-+00009ed4 <[^>]*> nop
-+00009ed8 <[^>]*> nop
-+00009edc <[^>]*> nop
-+00009ee0 <[^>]*> nop
-+00009ee4 <[^>]*> nop
-+00009ee8 <[^>]*> nop
-+00009eec <[^>]*> nop
-+00009ef0 <[^>]*> nop
-+00009ef4 <[^>]*> nop
-+00009ef8 <[^>]*> nop
-+00009efc <[^>]*> nop
-+00009f00 <[^>]*> nop
-+00009f04 <[^>]*> nop
-+00009f08 <[^>]*> nop
-+00009f0c <[^>]*> nop
-+00009f10 <[^>]*> nop
-+00009f14 <[^>]*> nop
-+00009f18 <[^>]*> nop
-+00009f1c <[^>]*> nop
-+00009f20 <[^>]*> nop
-+00009f24 <[^>]*> nop
-+00009f28 <[^>]*> nop
-+00009f2c <[^>]*> nop
-+00009f30 <[^>]*> nop
-+00009f34 <[^>]*> nop
-+00009f38 <[^>]*> nop
-+00009f3c <[^>]*> nop
-+00009f40 <[^>]*> nop
-+00009f44 <[^>]*> nop
-+00009f48 <[^>]*> nop
-+00009f4c <[^>]*> nop
-+00009f50 <[^>]*> nop
-+00009f54 <[^>]*> nop
-+00009f58 <[^>]*> nop
-+00009f5c <[^>]*> nop
-+00009f60 <[^>]*> nop
-+00009f64 <[^>]*> nop
-+00009f68 <[^>]*> nop
-+00009f6c <[^>]*> nop
-+00009f70 <[^>]*> nop
-+00009f74 <[^>]*> nop
-+00009f78 <[^>]*> nop
-+00009f7c <[^>]*> nop
-+00009f80 <[^>]*> nop
-+00009f84 <[^>]*> nop
-+00009f88 <[^>]*> nop
-+00009f8c <[^>]*> nop
-+00009f90 <[^>]*> nop
-+00009f94 <[^>]*> nop
-+00009f98 <[^>]*> nop
-+00009f9c <[^>]*> nop
-+00009fa0 <[^>]*> nop
-+00009fa4 <[^>]*> nop
-+00009fa8 <[^>]*> nop
-+00009fac <[^>]*> nop
-+00009fb0 <[^>]*> nop
-+00009fb4 <[^>]*> nop
-+00009fb8 <[^>]*> nop
-+00009fbc <[^>]*> nop
-+00009fc0 <[^>]*> nop
-+00009fc4 <[^>]*> nop
-+00009fc8 <[^>]*> nop
-+00009fcc <[^>]*> nop
-+00009fd0 <[^>]*> nop
-+00009fd4 <[^>]*> nop
-+00009fd8 <[^>]*> nop
-+00009fdc <[^>]*> nop
-+00009fe0 <[^>]*> nop
-+00009fe4 <[^>]*> nop
-+00009fe8 <[^>]*> nop
-+00009fec <[^>]*> nop
-+00009ff0 <[^>]*> nop
-+00009ff4 <[^>]*> nop
-+00009ff8 <[^>]*> nop
-+00009ffc <[^>]*> nop
-+0000a000 <[^>]*> nop
-+0000a004 <[^>]*> nop
-+0000a008 <[^>]*> nop
-+0000a00c <[^>]*> nop
-+0000a010 <[^>]*> nop
-+0000a014 <[^>]*> nop
-+0000a018 <[^>]*> nop
-+0000a01c <[^>]*> nop
-+0000a020 <[^>]*> nop
-+0000a024 <[^>]*> nop
-+0000a028 <[^>]*> nop
-+0000a02c <[^>]*> nop
-+0000a030 <[^>]*> nop
-+0000a034 <[^>]*> nop
-+0000a038 <[^>]*> nop
-+0000a03c <[^>]*> nop
-+0000a040 <[^>]*> nop
-+0000a044 <[^>]*> nop
-+0000a048 <[^>]*> nop
-+0000a04c <[^>]*> nop
-+0000a050 <[^>]*> nop
-+0000a054 <[^>]*> nop
-+0000a058 <[^>]*> nop
-+0000a05c <[^>]*> nop
-+0000a060 <[^>]*> nop
-+0000a064 <[^>]*> nop
-+0000a068 <[^>]*> nop
-+0000a06c <[^>]*> nop
-+0000a070 <[^>]*> nop
-+0000a074 <[^>]*> nop
-+0000a078 <[^>]*> nop
-+0000a07c <[^>]*> nop
-+0000a080 <[^>]*> nop
-+0000a084 <[^>]*> nop
-+0000a088 <[^>]*> nop
-+0000a08c <[^>]*> nop
-+0000a090 <[^>]*> nop
-+0000a094 <[^>]*> nop
-+0000a098 <[^>]*> nop
-+0000a09c <[^>]*> nop
-+0000a0a0 <[^>]*> nop
-+0000a0a4 <[^>]*> nop
-+0000a0a8 <[^>]*> nop
-+0000a0ac <[^>]*> nop
-+0000a0b0 <[^>]*> nop
-+0000a0b4 <[^>]*> nop
-+0000a0b8 <[^>]*> nop
-+0000a0bc <[^>]*> nop
-+0000a0c0 <[^>]*> nop
-+0000a0c4 <[^>]*> nop
-+0000a0c8 <[^>]*> nop
-+0000a0cc <[^>]*> nop
-+0000a0d0 <[^>]*> nop
-+0000a0d4 <[^>]*> nop
-+0000a0d8 <[^>]*> nop
-+0000a0dc <[^>]*> nop
-+0000a0e0 <[^>]*> nop
-+0000a0e4 <[^>]*> nop
-+0000a0e8 <[^>]*> nop
-+0000a0ec <[^>]*> nop
-+0000a0f0 <[^>]*> nop
-+0000a0f4 <[^>]*> nop
-+0000a0f8 <[^>]*> nop
-+0000a0fc <[^>]*> nop
-+0000a100 <[^>]*> nop
-+0000a104 <[^>]*> nop
-+0000a108 <[^>]*> nop
-+0000a10c <[^>]*> nop
-+0000a110 <[^>]*> nop
-+0000a114 <[^>]*> nop
-+0000a118 <[^>]*> nop
-+0000a11c <[^>]*> nop
-+0000a120 <[^>]*> nop
-+0000a124 <[^>]*> nop
-+0000a128 <[^>]*> nop
-+0000a12c <[^>]*> nop
-+0000a130 <[^>]*> nop
-+0000a134 <[^>]*> nop
-+0000a138 <[^>]*> nop
-+0000a13c <[^>]*> nop
-+0000a140 <[^>]*> nop
-+0000a144 <[^>]*> nop
-+0000a148 <[^>]*> nop
-+0000a14c <[^>]*> nop
-+0000a150 <[^>]*> nop
-+0000a154 <[^>]*> nop
-+0000a158 <[^>]*> nop
-+0000a15c <[^>]*> nop
-+0000a160 <[^>]*> nop
-+0000a164 <[^>]*> nop
-+0000a168 <[^>]*> nop
-+0000a16c <[^>]*> nop
-+0000a170 <[^>]*> nop
-+0000a174 <[^>]*> nop
-+0000a178 <[^>]*> nop
-+0000a17c <[^>]*> nop
-+0000a180 <[^>]*> nop
-+0000a184 <[^>]*> nop
-+0000a188 <[^>]*> nop
-+0000a18c <[^>]*> nop
-+0000a190 <[^>]*> nop
-+0000a194 <[^>]*> nop
-+0000a198 <[^>]*> nop
-+0000a19c <[^>]*> nop
-+0000a1a0 <[^>]*> nop
-+0000a1a4 <[^>]*> nop
-+0000a1a8 <[^>]*> nop
-+0000a1ac <[^>]*> nop
-+0000a1b0 <[^>]*> nop
-+0000a1b4 <[^>]*> nop
-+0000a1b8 <[^>]*> nop
-+0000a1bc <[^>]*> nop
-+0000a1c0 <[^>]*> nop
-+0000a1c4 <[^>]*> nop
-+0000a1c8 <[^>]*> nop
-+0000a1cc <[^>]*> nop
-+0000a1d0 <[^>]*> nop
-+0000a1d4 <[^>]*> nop
-+0000a1d8 <[^>]*> nop
-+0000a1dc <[^>]*> nop
-+0000a1e0 <[^>]*> nop
-+0000a1e4 <[^>]*> nop
-+0000a1e8 <[^>]*> nop
-+0000a1ec <[^>]*> nop
-+0000a1f0 <[^>]*> nop
-+0000a1f4 <[^>]*> nop
-+0000a1f8 <[^>]*> nop
-+0000a1fc <[^>]*> nop
-+0000a200 <[^>]*> nop
-+0000a204 <[^>]*> nop
-+0000a208 <[^>]*> nop
-+0000a20c <[^>]*> nop
-+0000a210 <[^>]*> nop
-+0000a214 <[^>]*> nop
-+0000a218 <[^>]*> nop
-+0000a21c <[^>]*> nop
-+0000a220 <[^>]*> nop
-+0000a224 <[^>]*> nop
-+0000a228 <[^>]*> nop
-+0000a22c <[^>]*> nop
-+0000a230 <[^>]*> nop
-+0000a234 <[^>]*> nop
-+0000a238 <[^>]*> nop
-+0000a23c <[^>]*> nop
-+0000a240 <[^>]*> nop
-+0000a244 <[^>]*> nop
-+0000a248 <[^>]*> nop
-+0000a24c <[^>]*> nop
-+0000a250 <[^>]*> nop
-+0000a254 <[^>]*> nop
-+0000a258 <[^>]*> nop
-+0000a25c <[^>]*> nop
-+0000a260 <[^>]*> nop
-+0000a264 <[^>]*> nop
-+0000a268 <[^>]*> nop
-+0000a26c <[^>]*> nop
-+0000a270 <[^>]*> nop
-+0000a274 <[^>]*> nop
-+0000a278 <[^>]*> nop
-+0000a27c <[^>]*> nop
-+0000a280 <[^>]*> nop
-+0000a284 <[^>]*> nop
-+0000a288 <[^>]*> nop
-+0000a28c <[^>]*> nop
-+0000a290 <[^>]*> nop
-+0000a294 <[^>]*> nop
-+0000a298 <[^>]*> nop
-+0000a29c <[^>]*> nop
-+0000a2a0 <[^>]*> nop
-+0000a2a4 <[^>]*> nop
-+0000a2a8 <[^>]*> nop
-+0000a2ac <[^>]*> nop
-+0000a2b0 <[^>]*> nop
-+0000a2b4 <[^>]*> nop
-+0000a2b8 <[^>]*> nop
-+0000a2bc <[^>]*> nop
-+0000a2c0 <[^>]*> nop
-+0000a2c4 <[^>]*> nop
-+0000a2c8 <[^>]*> nop
-+0000a2cc <[^>]*> nop
-+0000a2d0 <[^>]*> nop
-+0000a2d4 <[^>]*> nop
-+0000a2d8 <[^>]*> nop
-+0000a2dc <[^>]*> nop
-+0000a2e0 <[^>]*> nop
-+0000a2e4 <[^>]*> nop
-+0000a2e8 <[^>]*> nop
-+0000a2ec <[^>]*> nop
-+0000a2f0 <[^>]*> nop
-+0000a2f4 <[^>]*> nop
-+0000a2f8 <[^>]*> nop
-+0000a2fc <[^>]*> nop
-+0000a300 <[^>]*> nop
-+0000a304 <[^>]*> nop
-+0000a308 <[^>]*> nop
-+0000a30c <[^>]*> nop
-+0000a310 <[^>]*> nop
-+0000a314 <[^>]*> nop
-+0000a318 <[^>]*> nop
-+0000a31c <[^>]*> nop
-+0000a320 <[^>]*> nop
-+0000a324 <[^>]*> nop
-+0000a328 <[^>]*> nop
-+0000a32c <[^>]*> nop
-+0000a330 <[^>]*> nop
-+0000a334 <[^>]*> nop
-+0000a338 <[^>]*> nop
-+0000a33c <[^>]*> nop
-+0000a340 <[^>]*> nop
-+0000a344 <[^>]*> nop
-+0000a348 <[^>]*> nop
-+0000a34c <[^>]*> nop
-+0000a350 <[^>]*> nop
-+0000a354 <[^>]*> nop
-+0000a358 <[^>]*> nop
-+0000a35c <[^>]*> nop
-+0000a360 <[^>]*> nop
-+0000a364 <[^>]*> nop
-+0000a368 <[^>]*> nop
-+0000a36c <[^>]*> nop
-+0000a370 <[^>]*> nop
-+0000a374 <[^>]*> nop
-+0000a378 <[^>]*> nop
-+0000a37c <[^>]*> nop
-+0000a380 <[^>]*> nop
-+0000a384 <[^>]*> nop
-+0000a388 <[^>]*> nop
-+0000a38c <[^>]*> nop
-+0000a390 <[^>]*> nop
-+0000a394 <[^>]*> nop
-+0000a398 <[^>]*> nop
-+0000a39c <[^>]*> nop
-+0000a3a0 <[^>]*> nop
-+0000a3a4 <[^>]*> nop
-+0000a3a8 <[^>]*> nop
-+0000a3ac <[^>]*> nop
-+0000a3b0 <[^>]*> nop
-+0000a3b4 <[^>]*> nop
-+0000a3b8 <[^>]*> nop
-+0000a3bc <[^>]*> nop
-+0000a3c0 <[^>]*> nop
-+0000a3c4 <[^>]*> nop
-+0000a3c8 <[^>]*> nop
-+0000a3cc <[^>]*> nop
-+0000a3d0 <[^>]*> nop
-+0000a3d4 <[^>]*> nop
-+0000a3d8 <[^>]*> nop
-+0000a3dc <[^>]*> nop
-+0000a3e0 <[^>]*> nop
-+0000a3e4 <[^>]*> nop
-+0000a3e8 <[^>]*> nop
-+0000a3ec <[^>]*> nop
-+0000a3f0 <[^>]*> nop
-+0000a3f4 <[^>]*> nop
-+0000a3f8 <[^>]*> nop
-+0000a3fc <[^>]*> nop
-+0000a400 <[^>]*> nop
-+0000a404 <[^>]*> nop
-+0000a408 <[^>]*> nop
-+0000a40c <[^>]*> nop
-+0000a410 <[^>]*> nop
-+0000a414 <[^>]*> nop
-+0000a418 <[^>]*> nop
-+0000a41c <[^>]*> nop
-+0000a420 <[^>]*> nop
-+0000a424 <[^>]*> nop
-+0000a428 <[^>]*> nop
-+0000a42c <[^>]*> nop
-+0000a430 <[^>]*> nop
-+0000a434 <[^>]*> nop
-+0000a438 <[^>]*> nop
-+0000a43c <[^>]*> nop
-+0000a440 <[^>]*> nop
-+0000a444 <[^>]*> nop
-+0000a448 <[^>]*> nop
-+0000a44c <[^>]*> nop
-+0000a450 <[^>]*> nop
-+0000a454 <[^>]*> nop
-+0000a458 <[^>]*> nop
-+0000a45c <[^>]*> nop
-+0000a460 <[^>]*> nop
-+0000a464 <[^>]*> nop
-+0000a468 <[^>]*> nop
-+0000a46c <[^>]*> nop
-+0000a470 <[^>]*> nop
-+0000a474 <[^>]*> nop
-+0000a478 <[^>]*> nop
-+0000a47c <[^>]*> nop
-+0000a480 <[^>]*> nop
-+0000a484 <[^>]*> nop
-+0000a488 <[^>]*> nop
-+0000a48c <[^>]*> nop
-+0000a490 <[^>]*> nop
-+0000a494 <[^>]*> nop
-+0000a498 <[^>]*> nop
-+0000a49c <[^>]*> nop
-+0000a4a0 <[^>]*> nop
-+0000a4a4 <[^>]*> nop
-+0000a4a8 <[^>]*> nop
-+0000a4ac <[^>]*> nop
-+0000a4b0 <[^>]*> nop
-+0000a4b4 <[^>]*> nop
-+0000a4b8 <[^>]*> nop
-+0000a4bc <[^>]*> nop
-+0000a4c0 <[^>]*> nop
-+0000a4c4 <[^>]*> nop
-+0000a4c8 <[^>]*> nop
-+0000a4cc <[^>]*> nop
-+0000a4d0 <[^>]*> nop
-+0000a4d4 <[^>]*> nop
-+0000a4d8 <[^>]*> nop
-+0000a4dc <[^>]*> nop
-+0000a4e0 <[^>]*> nop
-+0000a4e4 <[^>]*> nop
-+0000a4e8 <[^>]*> nop
-+0000a4ec <[^>]*> nop
-+0000a4f0 <[^>]*> nop
-+0000a4f4 <[^>]*> nop
-+0000a4f8 <[^>]*> nop
-+0000a4fc <[^>]*> nop
-+0000a500 <[^>]*> nop
-+0000a504 <[^>]*> nop
-+0000a508 <[^>]*> nop
-+0000a50c <[^>]*> nop
-+0000a510 <[^>]*> nop
-+0000a514 <[^>]*> nop
-+0000a518 <[^>]*> nop
-+0000a51c <[^>]*> nop
-+0000a520 <[^>]*> nop
-+0000a524 <[^>]*> nop
-+0000a528 <[^>]*> nop
-+0000a52c <[^>]*> nop
-+0000a530 <[^>]*> nop
-+0000a534 <[^>]*> nop
-+0000a538 <[^>]*> nop
-+0000a53c <[^>]*> nop
-+0000a540 <[^>]*> nop
-+0000a544 <[^>]*> nop
-+0000a548 <[^>]*> nop
-+0000a54c <[^>]*> nop
-+0000a550 <[^>]*> nop
-+0000a554 <[^>]*> nop
-+0000a558 <[^>]*> nop
-+0000a55c <[^>]*> nop
-+0000a560 <[^>]*> nop
-+0000a564 <[^>]*> nop
-+0000a568 <[^>]*> nop
-+0000a56c <[^>]*> nop
-+0000a570 <[^>]*> nop
-+0000a574 <[^>]*> nop
-+0000a578 <[^>]*> nop
-+0000a57c <[^>]*> nop
-+0000a580 <[^>]*> nop
-+0000a584 <[^>]*> nop
-+0000a588 <[^>]*> nop
-+0000a58c <[^>]*> nop
-+0000a590 <[^>]*> nop
-+0000a594 <[^>]*> nop
-+0000a598 <[^>]*> nop
-+0000a59c <[^>]*> nop
-+0000a5a0 <[^>]*> nop
-+0000a5a4 <[^>]*> nop
-+0000a5a8 <[^>]*> nop
-+0000a5ac <[^>]*> nop
-+0000a5b0 <[^>]*> nop
-+0000a5b4 <[^>]*> nop
-+0000a5b8 <[^>]*> nop
-+0000a5bc <[^>]*> nop
-+0000a5c0 <[^>]*> nop
-+0000a5c4 <[^>]*> nop
-+0000a5c8 <[^>]*> nop
-+0000a5cc <[^>]*> nop
-+0000a5d0 <[^>]*> nop
-+0000a5d4 <[^>]*> nop
-+0000a5d8 <[^>]*> nop
-+0000a5dc <[^>]*> nop
-+0000a5e0 <[^>]*> nop
-+0000a5e4 <[^>]*> nop
-+0000a5e8 <[^>]*> nop
-+0000a5ec <[^>]*> nop
-+0000a5f0 <[^>]*> nop
-+0000a5f4 <[^>]*> nop
-+0000a5f8 <[^>]*> nop
-+0000a5fc <[^>]*> nop
-+0000a600 <[^>]*> nop
-+0000a604 <[^>]*> nop
-+0000a608 <[^>]*> nop
-+0000a60c <[^>]*> nop
-+0000a610 <[^>]*> nop
-+0000a614 <[^>]*> nop
-+0000a618 <[^>]*> nop
-+0000a61c <[^>]*> nop
-+0000a620 <[^>]*> nop
-+0000a624 <[^>]*> nop
-+0000a628 <[^>]*> nop
-+0000a62c <[^>]*> nop
-+0000a630 <[^>]*> nop
-+0000a634 <[^>]*> nop
-+0000a638 <[^>]*> nop
-+0000a63c <[^>]*> nop
-+0000a640 <[^>]*> nop
-+0000a644 <[^>]*> nop
-+0000a648 <[^>]*> nop
-+0000a64c <[^>]*> nop
-+0000a650 <[^>]*> nop
-+0000a654 <[^>]*> nop
-+0000a658 <[^>]*> nop
-+0000a65c <[^>]*> nop
-+0000a660 <[^>]*> nop
-+0000a664 <[^>]*> nop
-+0000a668 <[^>]*> nop
-+0000a66c <[^>]*> nop
-+0000a670 <[^>]*> nop
-+0000a674 <[^>]*> nop
-+0000a678 <[^>]*> nop
-+0000a67c <[^>]*> nop
-+0000a680 <[^>]*> nop
-+0000a684 <[^>]*> nop
-+0000a688 <[^>]*> nop
-+0000a68c <[^>]*> nop
-+0000a690 <[^>]*> nop
-+0000a694 <[^>]*> nop
-+0000a698 <[^>]*> nop
-+0000a69c <[^>]*> nop
-+0000a6a0 <[^>]*> nop
-+0000a6a4 <[^>]*> nop
-+0000a6a8 <[^>]*> nop
-+0000a6ac <[^>]*> nop
-+0000a6b0 <[^>]*> nop
-+0000a6b4 <[^>]*> nop
-+0000a6b8 <[^>]*> nop
-+0000a6bc <[^>]*> nop
-+0000a6c0 <[^>]*> nop
-+0000a6c4 <[^>]*> nop
-+0000a6c8 <[^>]*> nop
-+0000a6cc <[^>]*> nop
-+0000a6d0 <[^>]*> nop
-+0000a6d4 <[^>]*> nop
-+0000a6d8 <[^>]*> nop
-+0000a6dc <[^>]*> nop
-+0000a6e0 <[^>]*> nop
-+0000a6e4 <[^>]*> nop
-+0000a6e8 <[^>]*> nop
-+0000a6ec <[^>]*> nop
-+0000a6f0 <[^>]*> nop
-+0000a6f4 <[^>]*> nop
-+0000a6f8 <[^>]*> nop
-+0000a6fc <[^>]*> nop
-+0000a700 <[^>]*> nop
-+0000a704 <[^>]*> nop
-+0000a708 <[^>]*> nop
-+0000a70c <[^>]*> nop
-+0000a710 <[^>]*> nop
-+0000a714 <[^>]*> nop
-+0000a718 <[^>]*> nop
-+0000a71c <[^>]*> nop
-+0000a720 <[^>]*> nop
-+0000a724 <[^>]*> nop
-+0000a728 <[^>]*> nop
-+0000a72c <[^>]*> nop
-+0000a730 <[^>]*> nop
-+0000a734 <[^>]*> nop
-+0000a738 <[^>]*> nop
-+0000a73c <[^>]*> nop
-+0000a740 <[^>]*> nop
-+0000a744 <[^>]*> nop
-+0000a748 <[^>]*> nop
-+0000a74c <[^>]*> nop
-+0000a750 <[^>]*> nop
-+0000a754 <[^>]*> nop
-+0000a758 <[^>]*> nop
-+0000a75c <[^>]*> nop
-+0000a760 <[^>]*> nop
-+0000a764 <[^>]*> nop
-+0000a768 <[^>]*> nop
-+0000a76c <[^>]*> nop
-+0000a770 <[^>]*> nop
-+0000a774 <[^>]*> nop
-+0000a778 <[^>]*> nop
-+0000a77c <[^>]*> nop
-+0000a780 <[^>]*> nop
-+0000a784 <[^>]*> nop
-+0000a788 <[^>]*> nop
-+0000a78c <[^>]*> nop
-+0000a790 <[^>]*> nop
-+0000a794 <[^>]*> nop
-+0000a798 <[^>]*> nop
-+0000a79c <[^>]*> nop
-+0000a7a0 <[^>]*> nop
-+0000a7a4 <[^>]*> nop
-+0000a7a8 <[^>]*> nop
-+0000a7ac <[^>]*> nop
-+0000a7b0 <[^>]*> nop
-+0000a7b4 <[^>]*> nop
-+0000a7b8 <[^>]*> nop
-+0000a7bc <[^>]*> nop
-+0000a7c0 <[^>]*> nop
-+0000a7c4 <[^>]*> nop
-+0000a7c8 <[^>]*> nop
-+0000a7cc <[^>]*> nop
-+0000a7d0 <[^>]*> nop
-+0000a7d4 <[^>]*> nop
-+0000a7d8 <[^>]*> nop
-+0000a7dc <[^>]*> nop
-+0000a7e0 <[^>]*> nop
-+0000a7e4 <[^>]*> nop
-+0000a7e8 <[^>]*> nop
-+0000a7ec <[^>]*> nop
-+0000a7f0 <[^>]*> nop
-+0000a7f4 <[^>]*> nop
-+0000a7f8 <[^>]*> nop
-+0000a7fc <[^>]*> nop
-+0000a800 <[^>]*> nop
-+0000a804 <[^>]*> nop
-+0000a808 <[^>]*> nop
-+0000a80c <[^>]*> nop
-+0000a810 <[^>]*> nop
-+0000a814 <[^>]*> nop
-+0000a818 <[^>]*> nop
-+0000a81c <[^>]*> nop
-+0000a820 <[^>]*> nop
-+0000a824 <[^>]*> nop
-+0000a828 <[^>]*> nop
-+0000a82c <[^>]*> nop
-+0000a830 <[^>]*> nop
-+0000a834 <[^>]*> nop
-+0000a838 <[^>]*> nop
-+0000a83c <[^>]*> nop
-+0000a840 <[^>]*> nop
-+0000a844 <[^>]*> nop
-+0000a848 <[^>]*> nop
-+0000a84c <[^>]*> nop
-+0000a850 <[^>]*> nop
-+0000a854 <[^>]*> nop
-+0000a858 <[^>]*> nop
-+0000a85c <[^>]*> nop
-+0000a860 <[^>]*> nop
-+0000a864 <[^>]*> nop
-+0000a868 <[^>]*> nop
-+0000a86c <[^>]*> nop
-+0000a870 <[^>]*> nop
-+0000a874 <[^>]*> nop
-+0000a878 <[^>]*> nop
-+0000a87c <[^>]*> nop
-+0000a880 <[^>]*> nop
-+0000a884 <[^>]*> nop
-+0000a888 <[^>]*> nop
-+0000a88c <[^>]*> nop
-+0000a890 <[^>]*> nop
-+0000a894 <[^>]*> nop
-+0000a898 <[^>]*> nop
-+0000a89c <[^>]*> nop
-+0000a8a0 <[^>]*> nop
-+0000a8a4 <[^>]*> nop
-+0000a8a8 <[^>]*> nop
-+0000a8ac <[^>]*> nop
-+0000a8b0 <[^>]*> nop
-+0000a8b4 <[^>]*> nop
-+0000a8b8 <[^>]*> nop
-+0000a8bc <[^>]*> nop
-+0000a8c0 <[^>]*> nop
-+0000a8c4 <[^>]*> nop
-+0000a8c8 <[^>]*> nop
-+0000a8cc <[^>]*> nop
-+0000a8d0 <[^>]*> nop
-+0000a8d4 <[^>]*> nop
-+0000a8d8 <[^>]*> nop
-+0000a8dc <[^>]*> nop
-+0000a8e0 <[^>]*> nop
-+0000a8e4 <[^>]*> nop
-+0000a8e8 <[^>]*> nop
-+0000a8ec <[^>]*> nop
-+0000a8f0 <[^>]*> nop
-+0000a8f4 <[^>]*> nop
-+0000a8f8 <[^>]*> nop
-+0000a8fc <[^>]*> nop
-+0000a900 <[^>]*> nop
-+0000a904 <[^>]*> nop
-+0000a908 <[^>]*> nop
-+0000a90c <[^>]*> nop
-+0000a910 <[^>]*> nop
-+0000a914 <[^>]*> nop
-+0000a918 <[^>]*> nop
-+0000a91c <[^>]*> nop
-+0000a920 <[^>]*> nop
-+0000a924 <[^>]*> nop
-+0000a928 <[^>]*> nop
-+0000a92c <[^>]*> nop
-+0000a930 <[^>]*> nop
-+0000a934 <[^>]*> nop
-+0000a938 <[^>]*> nop
-+0000a93c <[^>]*> nop
-+0000a940 <[^>]*> nop
-+0000a944 <[^>]*> nop
-+0000a948 <[^>]*> nop
-+0000a94c <[^>]*> nop
-+0000a950 <[^>]*> nop
-+0000a954 <[^>]*> nop
-+0000a958 <[^>]*> nop
-+0000a95c <[^>]*> nop
-+0000a960 <[^>]*> nop
-+0000a964 <[^>]*> nop
-+0000a968 <[^>]*> nop
-+0000a96c <[^>]*> nop
-+0000a970 <[^>]*> nop
-+0000a974 <[^>]*> nop
-+0000a978 <[^>]*> nop
-+0000a97c <[^>]*> nop
-+0000a980 <[^>]*> nop
-+0000a984 <[^>]*> nop
-+0000a988 <[^>]*> nop
-+0000a98c <[^>]*> nop
-+0000a990 <[^>]*> nop
-+0000a994 <[^>]*> nop
-+0000a998 <[^>]*> nop
-+0000a99c <[^>]*> nop
-+0000a9a0 <[^>]*> nop
-+0000a9a4 <[^>]*> nop
-+0000a9a8 <[^>]*> nop
-+0000a9ac <[^>]*> nop
-+0000a9b0 <[^>]*> nop
-+0000a9b4 <[^>]*> nop
-+0000a9b8 <[^>]*> nop
-+0000a9bc <[^>]*> nop
-+0000a9c0 <[^>]*> nop
-+0000a9c4 <[^>]*> nop
-+0000a9c8 <[^>]*> nop
-+0000a9cc <[^>]*> nop
-+0000a9d0 <[^>]*> nop
-+0000a9d4 <[^>]*> nop
-+0000a9d8 <[^>]*> nop
-+0000a9dc <[^>]*> nop
-+0000a9e0 <[^>]*> nop
-+0000a9e4 <[^>]*> nop
-+0000a9e8 <[^>]*> nop
-+0000a9ec <[^>]*> nop
-+0000a9f0 <[^>]*> nop
-+0000a9f4 <[^>]*> nop
-+0000a9f8 <[^>]*> nop
-+0000a9fc <[^>]*> nop
-+0000aa00 <[^>]*> nop
-+0000aa04 <[^>]*> nop
-+0000aa08 <[^>]*> nop
-+0000aa0c <[^>]*> nop
-+0000aa10 <[^>]*> nop
-+0000aa14 <[^>]*> nop
-+0000aa18 <[^>]*> nop
-+0000aa1c <[^>]*> nop
-+0000aa20 <[^>]*> nop
-+0000aa24 <[^>]*> nop
-+0000aa28 <[^>]*> nop
-+0000aa2c <[^>]*> nop
-+0000aa30 <[^>]*> nop
-+0000aa34 <[^>]*> nop
-+0000aa38 <[^>]*> nop
-+0000aa3c <[^>]*> nop
-+0000aa40 <[^>]*> nop
-+0000aa44 <[^>]*> nop
-+0000aa48 <[^>]*> nop
-+0000aa4c <[^>]*> nop
-+0000aa50 <[^>]*> nop
-+0000aa54 <[^>]*> nop
-+0000aa58 <[^>]*> nop
-+0000aa5c <[^>]*> nop
-+0000aa60 <[^>]*> nop
-+0000aa64 <[^>]*> nop
-+0000aa68 <[^>]*> nop
-+0000aa6c <[^>]*> nop
-+0000aa70 <[^>]*> nop
-+0000aa74 <[^>]*> nop
-+0000aa78 <[^>]*> nop
-+0000aa7c <[^>]*> nop
-+0000aa80 <[^>]*> nop
-+0000aa84 <[^>]*> nop
-+0000aa88 <[^>]*> nop
-+0000aa8c <[^>]*> nop
-+0000aa90 <[^>]*> nop
-+0000aa94 <[^>]*> nop
-+0000aa98 <[^>]*> nop
-+0000aa9c <[^>]*> nop
-+0000aaa0 <[^>]*> nop
-+0000aaa4 <[^>]*> nop
-+0000aaa8 <[^>]*> nop
-+0000aaac <[^>]*> nop
-+0000aab0 <[^>]*> nop
-+0000aab4 <[^>]*> nop
-+0000aab8 <[^>]*> nop
-+0000aabc <[^>]*> nop
-+0000aac0 <[^>]*> nop
-+0000aac4 <[^>]*> nop
-+0000aac8 <[^>]*> nop
-+0000aacc <[^>]*> nop
-+0000aad0 <[^>]*> nop
-+0000aad4 <[^>]*> nop
-+0000aad8 <[^>]*> nop
-+0000aadc <[^>]*> nop
-+0000aae0 <[^>]*> nop
-+0000aae4 <[^>]*> nop
-+0000aae8 <[^>]*> nop
-+0000aaec <[^>]*> nop
-+0000aaf0 <[^>]*> nop
-+0000aaf4 <[^>]*> nop
-+0000aaf8 <[^>]*> nop
-+0000aafc <[^>]*> nop
-+0000ab00 <[^>]*> nop
-+0000ab04 <[^>]*> nop
-+0000ab08 <[^>]*> nop
-+0000ab0c <[^>]*> nop
-+0000ab10 <[^>]*> nop
-+0000ab14 <[^>]*> nop
-+0000ab18 <[^>]*> nop
-+0000ab1c <[^>]*> nop
-+0000ab20 <[^>]*> nop
-+0000ab24 <[^>]*> nop
-+0000ab28 <[^>]*> nop
-+0000ab2c <[^>]*> nop
-+0000ab30 <[^>]*> nop
-+0000ab34 <[^>]*> nop
-+0000ab38 <[^>]*> nop
-+0000ab3c <[^>]*> nop
-+0000ab40 <[^>]*> nop
-+0000ab44 <[^>]*> nop
-+0000ab48 <[^>]*> nop
-+0000ab4c <[^>]*> nop
-+0000ab50 <[^>]*> nop
-+0000ab54 <[^>]*> nop
-+0000ab58 <[^>]*> nop
-+0000ab5c <[^>]*> nop
-+0000ab60 <[^>]*> nop
-+0000ab64 <[^>]*> nop
-+0000ab68 <[^>]*> nop
-+0000ab6c <[^>]*> nop
-+0000ab70 <[^>]*> nop
-+0000ab74 <[^>]*> nop
-+0000ab78 <[^>]*> nop
-+0000ab7c <[^>]*> nop
-+0000ab80 <[^>]*> nop
-+0000ab84 <[^>]*> nop
-+0000ab88 <[^>]*> nop
-+0000ab8c <[^>]*> nop
-+0000ab90 <[^>]*> nop
-+0000ab94 <[^>]*> nop
-+0000ab98 <[^>]*> nop
-+0000ab9c <[^>]*> nop
-+0000aba0 <[^>]*> nop
-+0000aba4 <[^>]*> nop
-+0000aba8 <[^>]*> nop
-+0000abac <[^>]*> nop
-+0000abb0 <[^>]*> nop
-+0000abb4 <[^>]*> nop
-+0000abb8 <[^>]*> nop
-+0000abbc <[^>]*> nop
-+0000abc0 <[^>]*> nop
-+0000abc4 <[^>]*> nop
-+0000abc8 <[^>]*> nop
-+0000abcc <[^>]*> nop
-+0000abd0 <[^>]*> nop
-+0000abd4 <[^>]*> nop
-+0000abd8 <[^>]*> nop
-+0000abdc <[^>]*> nop
-+0000abe0 <[^>]*> nop
-+0000abe4 <[^>]*> nop
-+0000abe8 <[^>]*> nop
-+0000abec <[^>]*> nop
-+0000abf0 <[^>]*> nop
-+0000abf4 <[^>]*> nop
-+0000abf8 <[^>]*> nop
-+0000abfc <[^>]*> nop
-+0000ac00 <[^>]*> nop
-+0000ac04 <[^>]*> nop
-+0000ac08 <[^>]*> nop
-+0000ac0c <[^>]*> nop
-+0000ac10 <[^>]*> nop
-+0000ac14 <[^>]*> nop
-+0000ac18 <[^>]*> nop
-+0000ac1c <[^>]*> nop
-+0000ac20 <[^>]*> nop
-+0000ac24 <[^>]*> nop
-+0000ac28 <[^>]*> nop
-+0000ac2c <[^>]*> nop
-+0000ac30 <[^>]*> nop
-+0000ac34 <[^>]*> nop
-+0000ac38 <[^>]*> nop
-+0000ac3c <[^>]*> nop
-+0000ac40 <[^>]*> nop
-+0000ac44 <[^>]*> nop
-+0000ac48 <[^>]*> nop
-+0000ac4c <[^>]*> nop
-+0000ac50 <[^>]*> nop
-+0000ac54 <[^>]*> nop
-+0000ac58 <[^>]*> nop
-+0000ac5c <[^>]*> nop
-+0000ac60 <[^>]*> nop
-+0000ac64 <[^>]*> nop
-+0000ac68 <[^>]*> nop
-+0000ac6c <[^>]*> nop
-+0000ac70 <[^>]*> nop
-+0000ac74 <[^>]*> nop
-+0000ac78 <[^>]*> nop
-+0000ac7c <[^>]*> nop
-+0000ac80 <[^>]*> nop
-+0000ac84 <[^>]*> nop
-+0000ac88 <[^>]*> nop
-+0000ac8c <[^>]*> nop
-+0000ac90 <[^>]*> nop
-+0000ac94 <[^>]*> nop
-+0000ac98 <[^>]*> nop
-+0000ac9c <[^>]*> nop
-+0000aca0 <[^>]*> nop
-+0000aca4 <[^>]*> nop
-+0000aca8 <[^>]*> nop
-+0000acac <[^>]*> nop
-+0000acb0 <[^>]*> nop
-+0000acb4 <[^>]*> nop
-+0000acb8 <[^>]*> nop
-+0000acbc <[^>]*> nop
-+0000acc0 <[^>]*> nop
-+0000acc4 <[^>]*> nop
-+0000acc8 <[^>]*> nop
-+0000accc <[^>]*> nop
-+0000acd0 <[^>]*> nop
-+0000acd4 <[^>]*> nop
-+0000acd8 <[^>]*> nop
-+0000acdc <[^>]*> nop
-+0000ace0 <[^>]*> nop
-+0000ace4 <[^>]*> nop
-+0000ace8 <[^>]*> nop
-+0000acec <[^>]*> nop
-+0000acf0 <[^>]*> nop
-+0000acf4 <[^>]*> nop
-+0000acf8 <[^>]*> nop
-+0000acfc <[^>]*> nop
-+0000ad00 <[^>]*> nop
-+0000ad04 <[^>]*> nop
-+0000ad08 <[^>]*> nop
-+0000ad0c <[^>]*> nop
-+0000ad10 <[^>]*> nop
-+0000ad14 <[^>]*> nop
-+0000ad18 <[^>]*> nop
-+0000ad1c <[^>]*> nop
-+0000ad20 <[^>]*> nop
-+0000ad24 <[^>]*> nop
-+0000ad28 <[^>]*> nop
-+0000ad2c <[^>]*> nop
-+0000ad30 <[^>]*> nop
-+0000ad34 <[^>]*> nop
-+0000ad38 <[^>]*> nop
-+0000ad3c <[^>]*> nop
-+0000ad40 <[^>]*> nop
-+0000ad44 <[^>]*> nop
-+0000ad48 <[^>]*> nop
-+0000ad4c <[^>]*> nop
-+0000ad50 <[^>]*> nop
-+0000ad54 <[^>]*> nop
-+0000ad58 <[^>]*> nop
-+0000ad5c <[^>]*> nop
-+0000ad60 <[^>]*> nop
-+0000ad64 <[^>]*> nop
-+0000ad68 <[^>]*> nop
-+0000ad6c <[^>]*> nop
-+0000ad70 <[^>]*> nop
-+0000ad74 <[^>]*> nop
-+0000ad78 <[^>]*> nop
-+0000ad7c <[^>]*> nop
-+0000ad80 <[^>]*> nop
-+0000ad84 <[^>]*> nop
-+0000ad88 <[^>]*> nop
-+0000ad8c <[^>]*> nop
-+0000ad90 <[^>]*> nop
-+0000ad94 <[^>]*> nop
-+0000ad98 <[^>]*> nop
-+0000ad9c <[^>]*> nop
-+0000ada0 <[^>]*> nop
-+0000ada4 <[^>]*> nop
-+0000ada8 <[^>]*> nop
-+0000adac <[^>]*> nop
-+0000adb0 <[^>]*> nop
-+0000adb4 <[^>]*> nop
-+0000adb8 <[^>]*> nop
-+0000adbc <[^>]*> nop
-+0000adc0 <[^>]*> nop
-+0000adc4 <[^>]*> nop
-+0000adc8 <[^>]*> nop
-+0000adcc <[^>]*> nop
-+0000add0 <[^>]*> nop
-+0000add4 <[^>]*> nop
-+0000add8 <[^>]*> nop
-+0000addc <[^>]*> nop
-+0000ade0 <[^>]*> nop
-+0000ade4 <[^>]*> nop
-+0000ade8 <[^>]*> nop
-+0000adec <[^>]*> nop
-+0000adf0 <[^>]*> nop
-+0000adf4 <[^>]*> nop
-+0000adf8 <[^>]*> nop
-+0000adfc <[^>]*> nop
-+0000ae00 <[^>]*> nop
-+0000ae04 <[^>]*> nop
-+0000ae08 <[^>]*> nop
-+0000ae0c <[^>]*> nop
-+0000ae10 <[^>]*> nop
-+0000ae14 <[^>]*> nop
-+0000ae18 <[^>]*> nop
-+0000ae1c <[^>]*> nop
-+0000ae20 <[^>]*> nop
-+0000ae24 <[^>]*> nop
-+0000ae28 <[^>]*> nop
-+0000ae2c <[^>]*> nop
-+0000ae30 <[^>]*> nop
-+0000ae34 <[^>]*> nop
-+0000ae38 <[^>]*> nop
-+0000ae3c <[^>]*> nop
-+0000ae40 <[^>]*> nop
-+0000ae44 <[^>]*> nop
-+0000ae48 <[^>]*> nop
-+0000ae4c <[^>]*> nop
-+0000ae50 <[^>]*> nop
-+0000ae54 <[^>]*> nop
-+0000ae58 <[^>]*> nop
-+0000ae5c <[^>]*> nop
-+0000ae60 <[^>]*> nop
-+0000ae64 <[^>]*> nop
-+0000ae68 <[^>]*> nop
-+0000ae6c <[^>]*> nop
-+0000ae70 <[^>]*> nop
-+0000ae74 <[^>]*> nop
-+0000ae78 <[^>]*> nop
-+0000ae7c <[^>]*> nop
-+0000ae80 <[^>]*> nop
-+0000ae84 <[^>]*> nop
-+0000ae88 <[^>]*> nop
-+0000ae8c <[^>]*> nop
-+0000ae90 <[^>]*> nop
-+0000ae94 <[^>]*> nop
-+0000ae98 <[^>]*> nop
-+0000ae9c <[^>]*> nop
-+0000aea0 <[^>]*> nop
-+0000aea4 <[^>]*> nop
-+0000aea8 <[^>]*> nop
-+0000aeac <[^>]*> nop
-+0000aeb0 <[^>]*> nop
-+0000aeb4 <[^>]*> nop
-+0000aeb8 <[^>]*> nop
-+0000aebc <[^>]*> nop
-+0000aec0 <[^>]*> nop
-+0000aec4 <[^>]*> nop
-+0000aec8 <[^>]*> nop
-+0000aecc <[^>]*> nop
-+0000aed0 <[^>]*> nop
-+0000aed4 <[^>]*> nop
-+0000aed8 <[^>]*> nop
-+0000aedc <[^>]*> nop
-+0000aee0 <[^>]*> nop
-+0000aee4 <[^>]*> nop
-+0000aee8 <[^>]*> nop
-+0000aeec <[^>]*> nop
-+0000aef0 <[^>]*> nop
-+0000aef4 <[^>]*> nop
-+0000aef8 <[^>]*> nop
-+0000aefc <[^>]*> nop
-+0000af00 <[^>]*> nop
-+0000af04 <[^>]*> nop
-+0000af08 <[^>]*> nop
-+0000af0c <[^>]*> nop
-+0000af10 <[^>]*> nop
-+0000af14 <[^>]*> nop
-+0000af18 <[^>]*> nop
-+0000af1c <[^>]*> nop
-+0000af20 <[^>]*> nop
-+0000af24 <[^>]*> nop
-+0000af28 <[^>]*> nop
-+0000af2c <[^>]*> nop
-+0000af30 <[^>]*> nop
-+0000af34 <[^>]*> nop
-+0000af38 <[^>]*> nop
-+0000af3c <[^>]*> nop
-+0000af40 <[^>]*> nop
-+0000af44 <[^>]*> nop
-+0000af48 <[^>]*> nop
-+0000af4c <[^>]*> nop
-+0000af50 <[^>]*> nop
-+0000af54 <[^>]*> nop
-+0000af58 <[^>]*> nop
-+0000af5c <[^>]*> nop
-+0000af60 <[^>]*> nop
-+0000af64 <[^>]*> nop
-+0000af68 <[^>]*> nop
-+0000af6c <[^>]*> nop
-+0000af70 <[^>]*> nop
-+0000af74 <[^>]*> nop
-+0000af78 <[^>]*> nop
-+0000af7c <[^>]*> nop
-+0000af80 <[^>]*> nop
-+0000af84 <[^>]*> nop
-+0000af88 <[^>]*> nop
-+0000af8c <[^>]*> nop
-+0000af90 <[^>]*> nop
-+0000af94 <[^>]*> nop
-+0000af98 <[^>]*> nop
-+0000af9c <[^>]*> nop
-+0000afa0 <[^>]*> nop
-+0000afa4 <[^>]*> nop
-+0000afa8 <[^>]*> nop
-+0000afac <[^>]*> nop
-+0000afb0 <[^>]*> nop
-+0000afb4 <[^>]*> nop
-+0000afb8 <[^>]*> nop
-+0000afbc <[^>]*> nop
-+0000afc0 <[^>]*> nop
-+0000afc4 <[^>]*> nop
-+0000afc8 <[^>]*> nop
-+0000afcc <[^>]*> nop
-+0000afd0 <[^>]*> nop
-+0000afd4 <[^>]*> nop
-+0000afd8 <[^>]*> nop
-+0000afdc <[^>]*> nop
-+0000afe0 <[^>]*> nop
-+0000afe4 <[^>]*> nop
-+0000afe8 <[^>]*> nop
-+0000afec <[^>]*> nop
-+0000aff0 <[^>]*> nop
-+0000aff4 <[^>]*> nop
-+0000aff8 <[^>]*> nop
-+0000affc <[^>]*> nop
-+0000b000 <[^>]*> nop
-+0000b004 <[^>]*> nop
-+0000b008 <[^>]*> nop
-+0000b00c <[^>]*> nop
-+0000b010 <[^>]*> nop
-+0000b014 <[^>]*> nop
-+0000b018 <[^>]*> nop
-+0000b01c <[^>]*> nop
-+0000b020 <[^>]*> nop
-+0000b024 <[^>]*> nop
-+0000b028 <[^>]*> nop
-+0000b02c <[^>]*> nop
-+0000b030 <[^>]*> nop
-+0000b034 <[^>]*> nop
-+0000b038 <[^>]*> nop
-+0000b03c <[^>]*> nop
-+0000b040 <[^>]*> nop
-+0000b044 <[^>]*> nop
-+0000b048 <[^>]*> nop
-+0000b04c <[^>]*> nop
-+0000b050 <[^>]*> nop
-+0000b054 <[^>]*> nop
-+0000b058 <[^>]*> nop
-+0000b05c <[^>]*> nop
-+0000b060 <[^>]*> nop
-+0000b064 <[^>]*> nop
-+0000b068 <[^>]*> nop
-+0000b06c <[^>]*> nop
-+0000b070 <[^>]*> nop
-+0000b074 <[^>]*> nop
-+0000b078 <[^>]*> nop
-+0000b07c <[^>]*> nop
-+0000b080 <[^>]*> nop
-+0000b084 <[^>]*> nop
-+0000b088 <[^>]*> nop
-+0000b08c <[^>]*> nop
-+0000b090 <[^>]*> nop
-+0000b094 <[^>]*> nop
-+0000b098 <[^>]*> nop
-+0000b09c <[^>]*> nop
-+0000b0a0 <[^>]*> nop
-+0000b0a4 <[^>]*> nop
-+0000b0a8 <[^>]*> nop
-+0000b0ac <[^>]*> nop
-+0000b0b0 <[^>]*> nop
-+0000b0b4 <[^>]*> nop
-+0000b0b8 <[^>]*> nop
-+0000b0bc <[^>]*> nop
-+0000b0c0 <[^>]*> nop
-+0000b0c4 <[^>]*> nop
-+0000b0c8 <[^>]*> nop
-+0000b0cc <[^>]*> nop
-+0000b0d0 <[^>]*> nop
-+0000b0d4 <[^>]*> nop
-+0000b0d8 <[^>]*> nop
-+0000b0dc <[^>]*> nop
-+0000b0e0 <[^>]*> nop
-+0000b0e4 <[^>]*> nop
-+0000b0e8 <[^>]*> nop
-+0000b0ec <[^>]*> nop
-+0000b0f0 <[^>]*> nop
-+0000b0f4 <[^>]*> nop
-+0000b0f8 <[^>]*> nop
-+0000b0fc <[^>]*> nop
-+0000b100 <[^>]*> nop
-+0000b104 <[^>]*> nop
-+0000b108 <[^>]*> nop
-+0000b10c <[^>]*> nop
-+0000b110 <[^>]*> nop
-+0000b114 <[^>]*> nop
-+0000b118 <[^>]*> nop
-+0000b11c <[^>]*> nop
-+0000b120 <[^>]*> nop
-+0000b124 <[^>]*> nop
-+0000b128 <[^>]*> nop
-+0000b12c <[^>]*> nop
-+0000b130 <[^>]*> nop
-+0000b134 <[^>]*> nop
-+0000b138 <[^>]*> nop
-+0000b13c <[^>]*> nop
-+0000b140 <[^>]*> nop
-+0000b144 <[^>]*> nop
-+0000b148 <[^>]*> nop
-+0000b14c <[^>]*> nop
-+0000b150 <[^>]*> nop
-+0000b154 <[^>]*> nop
-+0000b158 <[^>]*> nop
-+0000b15c <[^>]*> nop
-+0000b160 <[^>]*> nop
-+0000b164 <[^>]*> nop
-+0000b168 <[^>]*> nop
-+0000b16c <[^>]*> nop
-+0000b170 <[^>]*> nop
-+0000b174 <[^>]*> nop
-+0000b178 <[^>]*> nop
-+0000b17c <[^>]*> nop
-+0000b180 <[^>]*> nop
-+0000b184 <[^>]*> nop
-+0000b188 <[^>]*> nop
-+0000b18c <[^>]*> nop
-+0000b190 <[^>]*> nop
-+0000b194 <[^>]*> nop
-+0000b198 <[^>]*> nop
-+0000b19c <[^>]*> nop
-+0000b1a0 <[^>]*> nop
-+0000b1a4 <[^>]*> nop
-+0000b1a8 <[^>]*> nop
-+0000b1ac <[^>]*> nop
-+0000b1b0 <[^>]*> nop
-+0000b1b4 <[^>]*> nop
-+0000b1b8 <[^>]*> nop
-+0000b1bc <[^>]*> nop
-+0000b1c0 <[^>]*> nop
-+0000b1c4 <[^>]*> nop
-+0000b1c8 <[^>]*> nop
-+0000b1cc <[^>]*> nop
-+0000b1d0 <[^>]*> nop
-+0000b1d4 <[^>]*> nop
-+0000b1d8 <[^>]*> nop
-+0000b1dc <[^>]*> nop
-+0000b1e0 <[^>]*> nop
-+0000b1e4 <[^>]*> nop
-+0000b1e8 <[^>]*> nop
-+0000b1ec <[^>]*> nop
-+0000b1f0 <[^>]*> nop
-+0000b1f4 <[^>]*> nop
-+0000b1f8 <[^>]*> nop
-+0000b1fc <[^>]*> nop
-+0000b200 <[^>]*> nop
-+0000b204 <[^>]*> nop
-+0000b208 <[^>]*> nop
-+0000b20c <[^>]*> nop
-+0000b210 <[^>]*> nop
-+0000b214 <[^>]*> nop
-+0000b218 <[^>]*> nop
-+0000b21c <[^>]*> nop
-+0000b220 <[^>]*> nop
-+0000b224 <[^>]*> nop
-+0000b228 <[^>]*> nop
-+0000b22c <[^>]*> nop
-+0000b230 <[^>]*> nop
-+0000b234 <[^>]*> nop
-+0000b238 <[^>]*> nop
-+0000b23c <[^>]*> nop
-+0000b240 <[^>]*> nop
-+0000b244 <[^>]*> nop
-+0000b248 <[^>]*> nop
-+0000b24c <[^>]*> nop
-+0000b250 <[^>]*> nop
-+0000b254 <[^>]*> nop
-+0000b258 <[^>]*> nop
-+0000b25c <[^>]*> nop
-+0000b260 <[^>]*> nop
-+0000b264 <[^>]*> nop
-+0000b268 <[^>]*> nop
-+0000b26c <[^>]*> nop
-+0000b270 <[^>]*> nop
-+0000b274 <[^>]*> nop
-+0000b278 <[^>]*> nop
-+0000b27c <[^>]*> nop
-+0000b280 <[^>]*> nop
-+0000b284 <[^>]*> nop
-+0000b288 <[^>]*> nop
-+0000b28c <[^>]*> nop
-+0000b290 <[^>]*> nop
-+0000b294 <[^>]*> nop
-+0000b298 <[^>]*> nop
-+0000b29c <[^>]*> nop
-+0000b2a0 <[^>]*> nop
-+0000b2a4 <[^>]*> nop
-+0000b2a8 <[^>]*> nop
-+0000b2ac <[^>]*> nop
-+0000b2b0 <[^>]*> nop
-+0000b2b4 <[^>]*> nop
-+0000b2b8 <[^>]*> nop
-+0000b2bc <[^>]*> nop
-+0000b2c0 <[^>]*> nop
-+0000b2c4 <[^>]*> nop
-+0000b2c8 <[^>]*> nop
-+0000b2cc <[^>]*> nop
-+0000b2d0 <[^>]*> nop
-+0000b2d4 <[^>]*> nop
-+0000b2d8 <[^>]*> nop
-+0000b2dc <[^>]*> nop
-+0000b2e0 <[^>]*> nop
-+0000b2e4 <[^>]*> nop
-+0000b2e8 <[^>]*> nop
-+0000b2ec <[^>]*> nop
-+0000b2f0 <[^>]*> nop
-+0000b2f4 <[^>]*> nop
-+0000b2f8 <[^>]*> nop
-+0000b2fc <[^>]*> nop
-+0000b300 <[^>]*> nop
-+0000b304 <[^>]*> nop
-+0000b308 <[^>]*> nop
-+0000b30c <[^>]*> nop
-+0000b310 <[^>]*> nop
-+0000b314 <[^>]*> nop
-+0000b318 <[^>]*> nop
-+0000b31c <[^>]*> nop
-+0000b320 <[^>]*> nop
-+0000b324 <[^>]*> nop
-+0000b328 <[^>]*> nop
-+0000b32c <[^>]*> nop
-+0000b330 <[^>]*> nop
-+0000b334 <[^>]*> nop
-+0000b338 <[^>]*> nop
-+0000b33c <[^>]*> nop
-+0000b340 <[^>]*> nop
-+0000b344 <[^>]*> nop
-+0000b348 <[^>]*> nop
-+0000b34c <[^>]*> nop
-+0000b350 <[^>]*> nop
-+0000b354 <[^>]*> nop
-+0000b358 <[^>]*> nop
-+0000b35c <[^>]*> nop
-+0000b360 <[^>]*> nop
-+0000b364 <[^>]*> nop
-+0000b368 <[^>]*> nop
-+0000b36c <[^>]*> nop
-+0000b370 <[^>]*> nop
-+0000b374 <[^>]*> nop
-+0000b378 <[^>]*> nop
-+0000b37c <[^>]*> nop
-+0000b380 <[^>]*> nop
-+0000b384 <[^>]*> nop
-+0000b388 <[^>]*> nop
-+0000b38c <[^>]*> nop
-+0000b390 <[^>]*> nop
-+0000b394 <[^>]*> nop
-+0000b398 <[^>]*> nop
-+0000b39c <[^>]*> nop
-+0000b3a0 <[^>]*> nop
-+0000b3a4 <[^>]*> nop
-+0000b3a8 <[^>]*> nop
-+0000b3ac <[^>]*> nop
-+0000b3b0 <[^>]*> nop
-+0000b3b4 <[^>]*> nop
-+0000b3b8 <[^>]*> nop
-+0000b3bc <[^>]*> nop
-+0000b3c0 <[^>]*> nop
-+0000b3c4 <[^>]*> nop
-+0000b3c8 <[^>]*> nop
-+0000b3cc <[^>]*> nop
-+0000b3d0 <[^>]*> nop
-+0000b3d4 <[^>]*> nop
-+0000b3d8 <[^>]*> nop
-+0000b3dc <[^>]*> nop
-+0000b3e0 <[^>]*> nop
-+0000b3e4 <[^>]*> nop
-+0000b3e8 <[^>]*> nop
-+0000b3ec <[^>]*> nop
-+0000b3f0 <[^>]*> nop
-+0000b3f4 <[^>]*> nop
-+0000b3f8 <[^>]*> nop
-+0000b3fc <[^>]*> nop
-+0000b400 <[^>]*> nop
-+0000b404 <[^>]*> nop
-+0000b408 <[^>]*> nop
-+0000b40c <[^>]*> nop
-+0000b410 <[^>]*> nop
-+0000b414 <[^>]*> nop
-+0000b418 <[^>]*> nop
-+0000b41c <[^>]*> nop
-+0000b420 <[^>]*> nop
-+0000b424 <[^>]*> nop
-+0000b428 <[^>]*> nop
-+0000b42c <[^>]*> nop
-+0000b430 <[^>]*> nop
-+0000b434 <[^>]*> nop
-+0000b438 <[^>]*> nop
-+0000b43c <[^>]*> nop
-+0000b440 <[^>]*> nop
-+0000b444 <[^>]*> nop
-+0000b448 <[^>]*> nop
-+0000b44c <[^>]*> nop
-+0000b450 <[^>]*> nop
-+0000b454 <[^>]*> nop
-+0000b458 <[^>]*> nop
-+0000b45c <[^>]*> nop
-+0000b460 <[^>]*> nop
-+0000b464 <[^>]*> nop
-+0000b468 <[^>]*> nop
-+0000b46c <[^>]*> nop
-+0000b470 <[^>]*> nop
-+0000b474 <[^>]*> nop
-+0000b478 <[^>]*> nop
-+0000b47c <[^>]*> nop
-+0000b480 <[^>]*> nop
-+0000b484 <[^>]*> nop
-+0000b488 <[^>]*> nop
-+0000b48c <[^>]*> nop
-+0000b490 <[^>]*> nop
-+0000b494 <[^>]*> nop
-+0000b498 <[^>]*> nop
-+0000b49c <[^>]*> nop
-+0000b4a0 <[^>]*> nop
-+0000b4a4 <[^>]*> nop
-+0000b4a8 <[^>]*> nop
-+0000b4ac <[^>]*> nop
-+0000b4b0 <[^>]*> nop
-+0000b4b4 <[^>]*> nop
-+0000b4b8 <[^>]*> nop
-+0000b4bc <[^>]*> nop
-+0000b4c0 <[^>]*> nop
-+0000b4c4 <[^>]*> nop
-+0000b4c8 <[^>]*> nop
-+0000b4cc <[^>]*> nop
-+0000b4d0 <[^>]*> nop
-+0000b4d4 <[^>]*> nop
-+0000b4d8 <[^>]*> nop
-+0000b4dc <[^>]*> nop
-+0000b4e0 <[^>]*> nop
-+0000b4e4 <[^>]*> nop
-+0000b4e8 <[^>]*> nop
-+0000b4ec <[^>]*> nop
-+0000b4f0 <[^>]*> nop
-+0000b4f4 <[^>]*> nop
-+0000b4f8 <[^>]*> nop
-+0000b4fc <[^>]*> nop
-+0000b500 <[^>]*> nop
-+0000b504 <[^>]*> nop
-+0000b508 <[^>]*> nop
-+0000b50c <[^>]*> nop
-+0000b510 <[^>]*> nop
-+0000b514 <[^>]*> nop
-+0000b518 <[^>]*> nop
-+0000b51c <[^>]*> nop
-+0000b520 <[^>]*> nop
-+0000b524 <[^>]*> nop
-+0000b528 <[^>]*> nop
-+0000b52c <[^>]*> nop
-+0000b530 <[^>]*> nop
-+0000b534 <[^>]*> nop
-+0000b538 <[^>]*> nop
-+0000b53c <[^>]*> nop
-+0000b540 <[^>]*> nop
-+0000b544 <[^>]*> nop
-+0000b548 <[^>]*> nop
-+0000b54c <[^>]*> nop
-+0000b550 <[^>]*> nop
-+0000b554 <[^>]*> nop
-+0000b558 <[^>]*> nop
-+0000b55c <[^>]*> nop
-+0000b560 <[^>]*> nop
-+0000b564 <[^>]*> nop
-+0000b568 <[^>]*> nop
-+0000b56c <[^>]*> nop
-+0000b570 <[^>]*> nop
-+0000b574 <[^>]*> nop
-+0000b578 <[^>]*> nop
-+0000b57c <[^>]*> nop
-+0000b580 <[^>]*> nop
-+0000b584 <[^>]*> nop
-+0000b588 <[^>]*> nop
-+0000b58c <[^>]*> nop
-+0000b590 <[^>]*> nop
-+0000b594 <[^>]*> nop
-+0000b598 <[^>]*> nop
-+0000b59c <[^>]*> nop
-+0000b5a0 <[^>]*> nop
-+0000b5a4 <[^>]*> nop
-+0000b5a8 <[^>]*> nop
-+0000b5ac <[^>]*> nop
-+0000b5b0 <[^>]*> nop
-+0000b5b4 <[^>]*> nop
-+0000b5b8 <[^>]*> nop
-+0000b5bc <[^>]*> nop
-+0000b5c0 <[^>]*> nop
-+0000b5c4 <[^>]*> nop
-+0000b5c8 <[^>]*> nop
-+0000b5cc <[^>]*> nop
-+0000b5d0 <[^>]*> nop
-+0000b5d4 <[^>]*> nop
-+0000b5d8 <[^>]*> nop
-+0000b5dc <[^>]*> nop
-+0000b5e0 <[^>]*> nop
-+0000b5e4 <[^>]*> nop
-+0000b5e8 <[^>]*> nop
-+0000b5ec <[^>]*> nop
-+0000b5f0 <[^>]*> nop
-+0000b5f4 <[^>]*> nop
-+0000b5f8 <[^>]*> nop
-+0000b5fc <[^>]*> nop
-+0000b600 <[^>]*> nop
-+0000b604 <[^>]*> nop
-+0000b608 <[^>]*> nop
-+0000b60c <[^>]*> nop
-+0000b610 <[^>]*> nop
-+0000b614 <[^>]*> nop
-+0000b618 <[^>]*> nop
-+0000b61c <[^>]*> nop
-+0000b620 <[^>]*> nop
-+0000b624 <[^>]*> nop
-+0000b628 <[^>]*> nop
-+0000b62c <[^>]*> nop
-+0000b630 <[^>]*> nop
-+0000b634 <[^>]*> nop
-+0000b638 <[^>]*> nop
-+0000b63c <[^>]*> nop
-+0000b640 <[^>]*> nop
-+0000b644 <[^>]*> nop
-+0000b648 <[^>]*> nop
-+0000b64c <[^>]*> nop
-+0000b650 <[^>]*> nop
-+0000b654 <[^>]*> nop
-+0000b658 <[^>]*> nop
-+0000b65c <[^>]*> nop
-+0000b660 <[^>]*> nop
-+0000b664 <[^>]*> nop
-+0000b668 <[^>]*> nop
-+0000b66c <[^>]*> nop
-+0000b670 <[^>]*> nop
-+0000b674 <[^>]*> nop
-+0000b678 <[^>]*> nop
-+0000b67c <[^>]*> nop
-+0000b680 <[^>]*> nop
-+0000b684 <[^>]*> nop
-+0000b688 <[^>]*> nop
-+0000b68c <[^>]*> nop
-+0000b690 <[^>]*> nop
-+0000b694 <[^>]*> nop
-+0000b698 <[^>]*> nop
-+0000b69c <[^>]*> nop
-+0000b6a0 <[^>]*> nop
-+0000b6a4 <[^>]*> nop
-+0000b6a8 <[^>]*> nop
-+0000b6ac <[^>]*> nop
-+0000b6b0 <[^>]*> nop
-+0000b6b4 <[^>]*> nop
-+0000b6b8 <[^>]*> nop
-+0000b6bc <[^>]*> nop
-+0000b6c0 <[^>]*> nop
-+0000b6c4 <[^>]*> nop
-+0000b6c8 <[^>]*> nop
-+0000b6cc <[^>]*> nop
-+0000b6d0 <[^>]*> nop
-+0000b6d4 <[^>]*> nop
-+0000b6d8 <[^>]*> nop
-+0000b6dc <[^>]*> nop
-+0000b6e0 <[^>]*> nop
-+0000b6e4 <[^>]*> nop
-+0000b6e8 <[^>]*> nop
-+0000b6ec <[^>]*> nop
-+0000b6f0 <[^>]*> nop
-+0000b6f4 <[^>]*> nop
-+0000b6f8 <[^>]*> nop
-+0000b6fc <[^>]*> nop
-+0000b700 <[^>]*> nop
-+0000b704 <[^>]*> nop
-+0000b708 <[^>]*> nop
-+0000b70c <[^>]*> nop
-+0000b710 <[^>]*> nop
-+0000b714 <[^>]*> nop
-+0000b718 <[^>]*> nop
-+0000b71c <[^>]*> nop
-+0000b720 <[^>]*> nop
-+0000b724 <[^>]*> nop
-+0000b728 <[^>]*> nop
-+0000b72c <[^>]*> nop
-+0000b730 <[^>]*> nop
-+0000b734 <[^>]*> nop
-+0000b738 <[^>]*> nop
-+0000b73c <[^>]*> nop
-+0000b740 <[^>]*> nop
-+0000b744 <[^>]*> nop
-+0000b748 <[^>]*> nop
-+0000b74c <[^>]*> nop
-+0000b750 <[^>]*> nop
-+0000b754 <[^>]*> nop
-+0000b758 <[^>]*> nop
-+0000b75c <[^>]*> nop
-+0000b760 <[^>]*> nop
-+0000b764 <[^>]*> nop
-+0000b768 <[^>]*> nop
-+0000b76c <[^>]*> nop
-+0000b770 <[^>]*> nop
-+0000b774 <[^>]*> nop
-+0000b778 <[^>]*> nop
-+0000b77c <[^>]*> nop
-+0000b780 <[^>]*> nop
-+0000b784 <[^>]*> nop
-+0000b788 <[^>]*> nop
-+0000b78c <[^>]*> nop
-+0000b790 <[^>]*> nop
-+0000b794 <[^>]*> nop
-+0000b798 <[^>]*> nop
-+0000b79c <[^>]*> nop
-+0000b7a0 <[^>]*> nop
-+0000b7a4 <[^>]*> nop
-+0000b7a8 <[^>]*> nop
-+0000b7ac <[^>]*> nop
-+0000b7b0 <[^>]*> nop
-+0000b7b4 <[^>]*> nop
-+0000b7b8 <[^>]*> nop
-+0000b7bc <[^>]*> nop
-+0000b7c0 <[^>]*> nop
-+0000b7c4 <[^>]*> nop
-+0000b7c8 <[^>]*> nop
-+0000b7cc <[^>]*> nop
-+0000b7d0 <[^>]*> nop
-+0000b7d4 <[^>]*> nop
-+0000b7d8 <[^>]*> nop
-+0000b7dc <[^>]*> nop
-+0000b7e0 <[^>]*> nop
-+0000b7e4 <[^>]*> nop
-+0000b7e8 <[^>]*> nop
-+0000b7ec <[^>]*> nop
-+0000b7f0 <[^>]*> nop
-+0000b7f4 <[^>]*> nop
-+0000b7f8 <[^>]*> nop
-+0000b7fc <[^>]*> nop
-+0000b800 <[^>]*> nop
-+0000b804 <[^>]*> nop
-+0000b808 <[^>]*> nop
-+0000b80c <[^>]*> nop
-+0000b810 <[^>]*> nop
-+0000b814 <[^>]*> nop
-+0000b818 <[^>]*> nop
-+0000b81c <[^>]*> nop
-+0000b820 <[^>]*> nop
-+0000b824 <[^>]*> nop
-+0000b828 <[^>]*> nop
-+0000b82c <[^>]*> nop
-+0000b830 <[^>]*> nop
-+0000b834 <[^>]*> nop
-+0000b838 <[^>]*> nop
-+0000b83c <[^>]*> nop
-+0000b840 <[^>]*> nop
-+0000b844 <[^>]*> nop
-+0000b848 <[^>]*> nop
-+0000b84c <[^>]*> nop
-+0000b850 <[^>]*> nop
-+0000b854 <[^>]*> nop
-+0000b858 <[^>]*> nop
-+0000b85c <[^>]*> nop
-+0000b860 <[^>]*> nop
-+0000b864 <[^>]*> nop
-+0000b868 <[^>]*> nop
-+0000b86c <[^>]*> nop
-+0000b870 <[^>]*> nop
-+0000b874 <[^>]*> nop
-+0000b878 <[^>]*> nop
-+0000b87c <[^>]*> nop
-+0000b880 <[^>]*> nop
-+0000b884 <[^>]*> nop
-+0000b888 <[^>]*> nop
-+0000b88c <[^>]*> nop
-+0000b890 <[^>]*> nop
-+0000b894 <[^>]*> nop
-+0000b898 <[^>]*> nop
-+0000b89c <[^>]*> nop
-+0000b8a0 <[^>]*> nop
-+0000b8a4 <[^>]*> nop
-+0000b8a8 <[^>]*> nop
-+0000b8ac <[^>]*> nop
-+0000b8b0 <[^>]*> nop
-+0000b8b4 <[^>]*> nop
-+0000b8b8 <[^>]*> nop
-+0000b8bc <[^>]*> nop
-+0000b8c0 <[^>]*> nop
-+0000b8c4 <[^>]*> nop
-+0000b8c8 <[^>]*> nop
-+0000b8cc <[^>]*> nop
-+0000b8d0 <[^>]*> nop
-+0000b8d4 <[^>]*> nop
-+0000b8d8 <[^>]*> nop
-+0000b8dc <[^>]*> nop
-+0000b8e0 <[^>]*> nop
-+0000b8e4 <[^>]*> nop
-+0000b8e8 <[^>]*> nop
-+0000b8ec <[^>]*> nop
-+0000b8f0 <[^>]*> nop
-+0000b8f4 <[^>]*> nop
-+0000b8f8 <[^>]*> nop
-+0000b8fc <[^>]*> nop
-+0000b900 <[^>]*> nop
-+0000b904 <[^>]*> nop
-+0000b908 <[^>]*> nop
-+0000b90c <[^>]*> nop
-+0000b910 <[^>]*> nop
-+0000b914 <[^>]*> nop
-+0000b918 <[^>]*> nop
-+0000b91c <[^>]*> nop
-+0000b920 <[^>]*> nop
-+0000b924 <[^>]*> nop
-+0000b928 <[^>]*> nop
-+0000b92c <[^>]*> nop
-+0000b930 <[^>]*> nop
-+0000b934 <[^>]*> nop
-+0000b938 <[^>]*> nop
-+0000b93c <[^>]*> nop
-+0000b940 <[^>]*> nop
-+0000b944 <[^>]*> nop
-+0000b948 <[^>]*> nop
-+0000b94c <[^>]*> nop
-+0000b950 <[^>]*> nop
-+0000b954 <[^>]*> nop
-+0000b958 <[^>]*> nop
-+0000b95c <[^>]*> nop
-+0000b960 <[^>]*> nop
-+0000b964 <[^>]*> nop
-+0000b968 <[^>]*> nop
-+0000b96c <[^>]*> nop
-+0000b970 <[^>]*> nop
-+0000b974 <[^>]*> nop
-+0000b978 <[^>]*> nop
-+0000b97c <[^>]*> nop
-+0000b980 <[^>]*> nop
-+0000b984 <[^>]*> nop
-+0000b988 <[^>]*> nop
-+0000b98c <[^>]*> nop
-+0000b990 <[^>]*> nop
-+0000b994 <[^>]*> nop
-+0000b998 <[^>]*> nop
-+0000b99c <[^>]*> nop
-+0000b9a0 <[^>]*> nop
-+0000b9a4 <[^>]*> nop
-+0000b9a8 <[^>]*> nop
-+0000b9ac <[^>]*> nop
-+0000b9b0 <[^>]*> nop
-+0000b9b4 <[^>]*> nop
-+0000b9b8 <[^>]*> nop
-+0000b9bc <[^>]*> nop
-+0000b9c0 <[^>]*> nop
-+0000b9c4 <[^>]*> nop
-+0000b9c8 <[^>]*> nop
-+0000b9cc <[^>]*> nop
-+0000b9d0 <[^>]*> nop
-+0000b9d4 <[^>]*> nop
-+0000b9d8 <[^>]*> nop
-+0000b9dc <[^>]*> nop
-+0000b9e0 <[^>]*> nop
-+0000b9e4 <[^>]*> nop
-+0000b9e8 <[^>]*> nop
-+0000b9ec <[^>]*> nop
-+0000b9f0 <[^>]*> nop
-+0000b9f4 <[^>]*> nop
-+0000b9f8 <[^>]*> nop
-+0000b9fc <[^>]*> nop
-+0000ba00 <[^>]*> nop
-+0000ba04 <[^>]*> nop
-+0000ba08 <[^>]*> nop
-+0000ba0c <[^>]*> nop
-+0000ba10 <[^>]*> nop
-+0000ba14 <[^>]*> nop
-+0000ba18 <[^>]*> nop
-+0000ba1c <[^>]*> nop
-+0000ba20 <[^>]*> nop
-+0000ba24 <[^>]*> nop
-+0000ba28 <[^>]*> nop
-+0000ba2c <[^>]*> nop
-+0000ba30 <[^>]*> nop
-+0000ba34 <[^>]*> nop
-+0000ba38 <[^>]*> nop
-+0000ba3c <[^>]*> nop
-+0000ba40 <[^>]*> nop
-+0000ba44 <[^>]*> nop
-+0000ba48 <[^>]*> nop
-+0000ba4c <[^>]*> nop
-+0000ba50 <[^>]*> nop
-+0000ba54 <[^>]*> nop
-+0000ba58 <[^>]*> nop
-+0000ba5c <[^>]*> nop
-+0000ba60 <[^>]*> nop
-+0000ba64 <[^>]*> nop
-+0000ba68 <[^>]*> nop
-+0000ba6c <[^>]*> nop
-+0000ba70 <[^>]*> nop
-+0000ba74 <[^>]*> nop
-+0000ba78 <[^>]*> nop
-+0000ba7c <[^>]*> nop
-+0000ba80 <[^>]*> nop
-+0000ba84 <[^>]*> nop
-+0000ba88 <[^>]*> nop
-+0000ba8c <[^>]*> nop
-+0000ba90 <[^>]*> nop
-+0000ba94 <[^>]*> nop
-+0000ba98 <[^>]*> nop
-+0000ba9c <[^>]*> nop
-+0000baa0 <[^>]*> nop
-+0000baa4 <[^>]*> nop
-+0000baa8 <[^>]*> nop
-+0000baac <[^>]*> nop
-+0000bab0 <[^>]*> nop
-+0000bab4 <[^>]*> nop
-+0000bab8 <[^>]*> nop
-+0000babc <[^>]*> nop
-+0000bac0 <[^>]*> nop
-+0000bac4 <[^>]*> nop
-+0000bac8 <[^>]*> nop
-+0000bacc <[^>]*> nop
-+0000bad0 <[^>]*> nop
-+0000bad4 <[^>]*> nop
-+0000bad8 <[^>]*> nop
-+0000badc <[^>]*> nop
-+0000bae0 <[^>]*> nop
-+0000bae4 <[^>]*> nop
-+0000bae8 <[^>]*> nop
-+0000baec <[^>]*> nop
-+0000baf0 <[^>]*> nop
-+0000baf4 <[^>]*> nop
-+0000baf8 <[^>]*> nop
-+0000bafc <[^>]*> nop
-+0000bb00 <[^>]*> nop
-+0000bb04 <[^>]*> nop
-+0000bb08 <[^>]*> nop
-+0000bb0c <[^>]*> nop
-+0000bb10 <[^>]*> nop
-+0000bb14 <[^>]*> nop
-+0000bb18 <[^>]*> nop
-+0000bb1c <[^>]*> nop
-+0000bb20 <[^>]*> nop
-+0000bb24 <[^>]*> nop
-+0000bb28 <[^>]*> nop
-+0000bb2c <[^>]*> nop
-+0000bb30 <[^>]*> nop
-+0000bb34 <[^>]*> nop
-+0000bb38 <[^>]*> nop
-+0000bb3c <[^>]*> nop
-+0000bb40 <[^>]*> nop
-+0000bb44 <[^>]*> nop
-+0000bb48 <[^>]*> nop
-+0000bb4c <[^>]*> nop
-+0000bb50 <[^>]*> nop
-+0000bb54 <[^>]*> nop
-+0000bb58 <[^>]*> nop
-+0000bb5c <[^>]*> nop
-+0000bb60 <[^>]*> nop
-+0000bb64 <[^>]*> nop
-+0000bb68 <[^>]*> nop
-+0000bb6c <[^>]*> nop
-+0000bb70 <[^>]*> nop
-+0000bb74 <[^>]*> nop
-+0000bb78 <[^>]*> nop
-+0000bb7c <[^>]*> nop
-+0000bb80 <[^>]*> nop
-+0000bb84 <[^>]*> nop
-+0000bb88 <[^>]*> nop
-+0000bb8c <[^>]*> nop
-+0000bb90 <[^>]*> nop
-+0000bb94 <[^>]*> nop
-+0000bb98 <[^>]*> nop
-+0000bb9c <[^>]*> nop
-+0000bba0 <[^>]*> nop
-+0000bba4 <[^>]*> nop
-+0000bba8 <[^>]*> nop
-+0000bbac <[^>]*> nop
-+0000bbb0 <[^>]*> nop
-+0000bbb4 <[^>]*> nop
-+0000bbb8 <[^>]*> nop
-+0000bbbc <[^>]*> nop
-+0000bbc0 <[^>]*> nop
-+0000bbc4 <[^>]*> nop
-+0000bbc8 <[^>]*> nop
-+0000bbcc <[^>]*> nop
-+0000bbd0 <[^>]*> nop
-+0000bbd4 <[^>]*> nop
-+0000bbd8 <[^>]*> nop
-+0000bbdc <[^>]*> nop
-+0000bbe0 <[^>]*> nop
-+0000bbe4 <[^>]*> nop
-+0000bbe8 <[^>]*> nop
-+0000bbec <[^>]*> nop
-+0000bbf0 <[^>]*> nop
-+0000bbf4 <[^>]*> nop
-+0000bbf8 <[^>]*> nop
-+0000bbfc <[^>]*> nop
-+0000bc00 <[^>]*> nop
-+0000bc04 <[^>]*> nop
-+0000bc08 <[^>]*> nop
-+0000bc0c <[^>]*> nop
-+0000bc10 <[^>]*> nop
-+0000bc14 <[^>]*> nop
-+0000bc18 <[^>]*> nop
-+0000bc1c <[^>]*> nop
-+0000bc20 <[^>]*> nop
-+0000bc24 <[^>]*> nop
-+0000bc28 <[^>]*> nop
-+0000bc2c <[^>]*> nop
-+0000bc30 <[^>]*> nop
-+0000bc34 <[^>]*> nop
-+0000bc38 <[^>]*> nop
-+0000bc3c <[^>]*> nop
-+0000bc40 <[^>]*> nop
-+0000bc44 <[^>]*> nop
-+0000bc48 <[^>]*> nop
-+0000bc4c <[^>]*> nop
-+0000bc50 <[^>]*> nop
-+0000bc54 <[^>]*> nop
-+0000bc58 <[^>]*> nop
-+0000bc5c <[^>]*> nop
-+0000bc60 <[^>]*> nop
-+0000bc64 <[^>]*> nop
-+0000bc68 <[^>]*> nop
-+0000bc6c <[^>]*> nop
-+0000bc70 <[^>]*> nop
-+0000bc74 <[^>]*> nop
-+0000bc78 <[^>]*> nop
-+0000bc7c <[^>]*> nop
-+0000bc80 <[^>]*> nop
-+0000bc84 <[^>]*> nop
-+0000bc88 <[^>]*> nop
-+0000bc8c <[^>]*> nop
-+0000bc90 <[^>]*> nop
-+0000bc94 <[^>]*> nop
-+0000bc98 <[^>]*> nop
-+0000bc9c <[^>]*> nop
-+0000bca0 <[^>]*> nop
-+0000bca4 <[^>]*> nop
-+0000bca8 <[^>]*> nop
-+0000bcac <[^>]*> nop
-+0000bcb0 <[^>]*> nop
-+0000bcb4 <[^>]*> nop
-+0000bcb8 <[^>]*> nop
-+0000bcbc <[^>]*> nop
-+0000bcc0 <[^>]*> nop
-+0000bcc4 <[^>]*> nop
-+0000bcc8 <[^>]*> nop
-+0000bccc <[^>]*> nop
-+0000bcd0 <[^>]*> nop
-+0000bcd4 <[^>]*> nop
-+0000bcd8 <[^>]*> nop
-+0000bcdc <[^>]*> nop
-+0000bce0 <[^>]*> nop
-+0000bce4 <[^>]*> nop
-+0000bce8 <[^>]*> nop
-+0000bcec <[^>]*> nop
-+0000bcf0 <[^>]*> nop
-+0000bcf4 <[^>]*> nop
-+0000bcf8 <[^>]*> nop
-+0000bcfc <[^>]*> nop
-+0000bd00 <[^>]*> nop
-+0000bd04 <[^>]*> nop
-+0000bd08 <[^>]*> nop
-+0000bd0c <[^>]*> nop
-+0000bd10 <[^>]*> nop
-+0000bd14 <[^>]*> nop
-+0000bd18 <[^>]*> nop
-+0000bd1c <[^>]*> nop
-+0000bd20 <[^>]*> nop
-+0000bd24 <[^>]*> nop
-+0000bd28 <[^>]*> nop
-+0000bd2c <[^>]*> nop
-+0000bd30 <[^>]*> nop
-+0000bd34 <[^>]*> nop
-+0000bd38 <[^>]*> nop
-+0000bd3c <[^>]*> nop
-+0000bd40 <[^>]*> nop
-+0000bd44 <[^>]*> nop
-+0000bd48 <[^>]*> nop
-+0000bd4c <[^>]*> nop
-+0000bd50 <[^>]*> nop
-+0000bd54 <[^>]*> nop
-+0000bd58 <[^>]*> nop
-+0000bd5c <[^>]*> nop
-+0000bd60 <[^>]*> nop
-+0000bd64 <[^>]*> nop
-+0000bd68 <[^>]*> nop
-+0000bd6c <[^>]*> nop
-+0000bd70 <[^>]*> nop
-+0000bd74 <[^>]*> nop
-+0000bd78 <[^>]*> nop
-+0000bd7c <[^>]*> nop
-+0000bd80 <[^>]*> nop
-+0000bd84 <[^>]*> nop
-+0000bd88 <[^>]*> nop
-+0000bd8c <[^>]*> nop
-+0000bd90 <[^>]*> nop
-+0000bd94 <[^>]*> nop
-+0000bd98 <[^>]*> nop
-+0000bd9c <[^>]*> nop
-+0000bda0 <[^>]*> nop
-+0000bda4 <[^>]*> nop
-+0000bda8 <[^>]*> nop
-+0000bdac <[^>]*> nop
-+0000bdb0 <[^>]*> nop
-+0000bdb4 <[^>]*> nop
-+0000bdb8 <[^>]*> nop
-+0000bdbc <[^>]*> nop
-+0000bdc0 <[^>]*> nop
-+0000bdc4 <[^>]*> nop
-+0000bdc8 <[^>]*> nop
-+0000bdcc <[^>]*> nop
-+0000bdd0 <[^>]*> nop
-+0000bdd4 <[^>]*> nop
-+0000bdd8 <[^>]*> nop
-+0000bddc <[^>]*> nop
-+0000bde0 <[^>]*> nop
-+0000bde4 <[^>]*> nop
-+0000bde8 <[^>]*> nop
-+0000bdec <[^>]*> nop
-+0000bdf0 <[^>]*> nop
-+0000bdf4 <[^>]*> nop
-+0000bdf8 <[^>]*> nop
-+0000bdfc <[^>]*> nop
-+0000be00 <[^>]*> nop
-+0000be04 <[^>]*> nop
-+0000be08 <[^>]*> nop
-+0000be0c <[^>]*> nop
-+0000be10 <[^>]*> nop
-+0000be14 <[^>]*> nop
-+0000be18 <[^>]*> nop
-+0000be1c <[^>]*> nop
-+0000be20 <[^>]*> nop
-+0000be24 <[^>]*> nop
-+0000be28 <[^>]*> nop
-+0000be2c <[^>]*> nop
-+0000be30 <[^>]*> nop
-+0000be34 <[^>]*> nop
-+0000be38 <[^>]*> nop
-+0000be3c <[^>]*> nop
-+0000be40 <[^>]*> nop
-+0000be44 <[^>]*> nop
-+0000be48 <[^>]*> nop
-+0000be4c <[^>]*> nop
-+0000be50 <[^>]*> nop
-+0000be54 <[^>]*> nop
-+0000be58 <[^>]*> nop
-+0000be5c <[^>]*> nop
-+0000be60 <[^>]*> nop
-+0000be64 <[^>]*> nop
-+0000be68 <[^>]*> nop
-+0000be6c <[^>]*> nop
-+0000be70 <[^>]*> nop
-+0000be74 <[^>]*> nop
-+0000be78 <[^>]*> nop
-+0000be7c <[^>]*> nop
-+0000be80 <[^>]*> nop
-+0000be84 <[^>]*> nop
-+0000be88 <[^>]*> nop
-+0000be8c <[^>]*> nop
-+0000be90 <[^>]*> nop
-+0000be94 <[^>]*> nop
-+0000be98 <[^>]*> nop
-+0000be9c <[^>]*> nop
-+0000bea0 <[^>]*> nop
-+0000bea4 <[^>]*> nop
-+0000bea8 <[^>]*> nop
-+0000beac <[^>]*> nop
-+0000beb0 <[^>]*> nop
-+0000beb4 <[^>]*> nop
-+0000beb8 <[^>]*> nop
-+0000bebc <[^>]*> nop
-+0000bec0 <[^>]*> nop
-+0000bec4 <[^>]*> nop
-+0000bec8 <[^>]*> nop
-+0000becc <[^>]*> nop
-+0000bed0 <[^>]*> nop
-+0000bed4 <[^>]*> nop
-+0000bed8 <[^>]*> nop
-+0000bedc <[^>]*> nop
-+0000bee0 <[^>]*> nop
-+0000bee4 <[^>]*> nop
-+0000bee8 <[^>]*> nop
-+0000beec <[^>]*> nop
-+0000bef0 <[^>]*> nop
-+0000bef4 <[^>]*> nop
-+0000bef8 <[^>]*> nop
-+0000befc <[^>]*> nop
-+0000bf00 <[^>]*> nop
-+0000bf04 <[^>]*> nop
-+0000bf08 <[^>]*> nop
-+0000bf0c <[^>]*> nop
-+0000bf10 <[^>]*> nop
-+0000bf14 <[^>]*> nop
-+0000bf18 <[^>]*> nop
-+0000bf1c <[^>]*> nop
-+0000bf20 <[^>]*> nop
-+0000bf24 <[^>]*> nop
-+0000bf28 <[^>]*> nop
-+0000bf2c <[^>]*> nop
-+0000bf30 <[^>]*> nop
-+0000bf34 <[^>]*> nop
-+0000bf38 <[^>]*> nop
-+0000bf3c <[^>]*> nop
-+0000bf40 <[^>]*> nop
-+0000bf44 <[^>]*> nop
-+0000bf48 <[^>]*> nop
-+0000bf4c <[^>]*> nop
-+0000bf50 <[^>]*> nop
-+0000bf54 <[^>]*> nop
-+0000bf58 <[^>]*> nop
-+0000bf5c <[^>]*> nop
-+0000bf60 <[^>]*> nop
-+0000bf64 <[^>]*> nop
-+0000bf68 <[^>]*> nop
-+0000bf6c <[^>]*> nop
-+0000bf70 <[^>]*> nop
-+0000bf74 <[^>]*> nop
-+0000bf78 <[^>]*> nop
-+0000bf7c <[^>]*> nop
-+0000bf80 <[^>]*> nop
-+0000bf84 <[^>]*> nop
-+0000bf88 <[^>]*> nop
-+0000bf8c <[^>]*> nop
-+0000bf90 <[^>]*> nop
-+0000bf94 <[^>]*> nop
-+0000bf98 <[^>]*> nop
-+0000bf9c <[^>]*> nop
-+0000bfa0 <[^>]*> nop
-+0000bfa4 <[^>]*> nop
-+0000bfa8 <[^>]*> nop
-+0000bfac <[^>]*> nop
-+0000bfb0 <[^>]*> nop
-+0000bfb4 <[^>]*> nop
-+0000bfb8 <[^>]*> nop
-+0000bfbc <[^>]*> nop
-+0000bfc0 <[^>]*> nop
-+0000bfc4 <[^>]*> nop
-+0000bfc8 <[^>]*> nop
-+0000bfcc <[^>]*> nop
-+0000bfd0 <[^>]*> nop
-+0000bfd4 <[^>]*> nop
-+0000bfd8 <[^>]*> nop
-+0000bfdc <[^>]*> nop
-+0000bfe0 <[^>]*> nop
-+0000bfe4 <[^>]*> nop
-+0000bfe8 <[^>]*> nop
-+0000bfec <[^>]*> nop
-+0000bff0 <[^>]*> nop
-+0000bff4 <[^>]*> nop
-+0000bff8 <[^>]*> nop
-+0000bffc <[^>]*> nop
-+0000c000 <[^>]*> nop
-+0000c004 <[^>]*> nop
-+0000c008 <[^>]*> nop
-+0000c00c <[^>]*> nop
-+0000c010 <[^>]*> nop
-+0000c014 <[^>]*> nop
-+0000c018 <[^>]*> nop
-+0000c01c <[^>]*> nop
-+0000c020 <[^>]*> nop
-+0000c024 <[^>]*> nop
-+0000c028 <[^>]*> nop
-+0000c02c <[^>]*> nop
-+0000c030 <[^>]*> nop
-+0000c034 <[^>]*> nop
-+0000c038 <[^>]*> nop
-+0000c03c <[^>]*> nop
-+0000c040 <[^>]*> nop
-+0000c044 <[^>]*> nop
-+0000c048 <[^>]*> nop
-+0000c04c <[^>]*> nop
-+0000c050 <[^>]*> nop
-+0000c054 <[^>]*> nop
-+0000c058 <[^>]*> nop
-+0000c05c <[^>]*> nop
-+0000c060 <[^>]*> nop
-+0000c064 <[^>]*> nop
-+0000c068 <[^>]*> nop
-+0000c06c <[^>]*> nop
-+0000c070 <[^>]*> nop
-+0000c074 <[^>]*> nop
-+0000c078 <[^>]*> nop
-+0000c07c <[^>]*> nop
-+0000c080 <[^>]*> nop
-+0000c084 <[^>]*> nop
-+0000c088 <[^>]*> nop
-+0000c08c <[^>]*> nop
-+0000c090 <[^>]*> nop
-+0000c094 <[^>]*> nop
-+0000c098 <[^>]*> nop
-+0000c09c <[^>]*> nop
-+0000c0a0 <[^>]*> nop
-+0000c0a4 <[^>]*> nop
-+0000c0a8 <[^>]*> nop
-+0000c0ac <[^>]*> nop
-+0000c0b0 <[^>]*> nop
-+0000c0b4 <[^>]*> nop
-+0000c0b8 <[^>]*> nop
-+0000c0bc <[^>]*> nop
-+0000c0c0 <[^>]*> nop
-+0000c0c4 <[^>]*> nop
-+0000c0c8 <[^>]*> nop
-+0000c0cc <[^>]*> nop
-+0000c0d0 <[^>]*> nop
-+0000c0d4 <[^>]*> nop
-+0000c0d8 <[^>]*> nop
-+0000c0dc <[^>]*> nop
-+0000c0e0 <[^>]*> nop
-+0000c0e4 <[^>]*> nop
-+0000c0e8 <[^>]*> nop
-+0000c0ec <[^>]*> nop
-+0000c0f0 <[^>]*> nop
-+0000c0f4 <[^>]*> nop
-+0000c0f8 <[^>]*> nop
-+0000c0fc <[^>]*> nop
-+0000c100 <[^>]*> nop
-+0000c104 <[^>]*> nop
-+0000c108 <[^>]*> nop
-+0000c10c <[^>]*> nop
-+0000c110 <[^>]*> nop
-+0000c114 <[^>]*> nop
-+0000c118 <[^>]*> nop
-+0000c11c <[^>]*> nop
-+0000c120 <[^>]*> nop
-+0000c124 <[^>]*> nop
-+0000c128 <[^>]*> nop
-+0000c12c <[^>]*> nop
-+0000c130 <[^>]*> nop
-+0000c134 <[^>]*> nop
-+0000c138 <[^>]*> nop
-+0000c13c <[^>]*> nop
-+0000c140 <[^>]*> nop
-+0000c144 <[^>]*> nop
-+0000c148 <[^>]*> nop
-+0000c14c <[^>]*> nop
-+0000c150 <[^>]*> nop
-+0000c154 <[^>]*> nop
-+0000c158 <[^>]*> nop
-+0000c15c <[^>]*> nop
-+0000c160 <[^>]*> nop
-+0000c164 <[^>]*> nop
-+0000c168 <[^>]*> nop
-+0000c16c <[^>]*> nop
-+0000c170 <[^>]*> nop
-+0000c174 <[^>]*> nop
-+0000c178 <[^>]*> nop
-+0000c17c <[^>]*> nop
-+0000c180 <[^>]*> nop
-+0000c184 <[^>]*> nop
-+0000c188 <[^>]*> nop
-+0000c18c <[^>]*> nop
-+0000c190 <[^>]*> nop
-+0000c194 <[^>]*> nop
-+0000c198 <[^>]*> nop
-+0000c19c <[^>]*> nop
-+0000c1a0 <[^>]*> nop
-+0000c1a4 <[^>]*> nop
-+0000c1a8 <[^>]*> nop
-+0000c1ac <[^>]*> nop
-+0000c1b0 <[^>]*> nop
-+0000c1b4 <[^>]*> nop
-+0000c1b8 <[^>]*> nop
-+0000c1bc <[^>]*> nop
-+0000c1c0 <[^>]*> nop
-+0000c1c4 <[^>]*> nop
-+0000c1c8 <[^>]*> nop
-+0000c1cc <[^>]*> nop
-+0000c1d0 <[^>]*> nop
-+0000c1d4 <[^>]*> nop
-+0000c1d8 <[^>]*> nop
-+0000c1dc <[^>]*> nop
-+0000c1e0 <[^>]*> nop
-+0000c1e4 <[^>]*> nop
-+0000c1e8 <[^>]*> nop
-+0000c1ec <[^>]*> nop
-+0000c1f0 <[^>]*> nop
-+0000c1f4 <[^>]*> nop
-+0000c1f8 <[^>]*> nop
-+0000c1fc <[^>]*> nop
-+0000c200 <[^>]*> nop
-+0000c204 <[^>]*> nop
-+0000c208 <[^>]*> nop
-+0000c20c <[^>]*> nop
-+0000c210 <[^>]*> nop
-+0000c214 <[^>]*> nop
-+0000c218 <[^>]*> nop
-+0000c21c <[^>]*> nop
-+0000c220 <[^>]*> nop
-+0000c224 <[^>]*> nop
-+0000c228 <[^>]*> nop
-+0000c22c <[^>]*> nop
-+0000c230 <[^>]*> nop
-+0000c234 <[^>]*> nop
-+0000c238 <[^>]*> nop
-+0000c23c <[^>]*> nop
-+0000c240 <[^>]*> nop
-+0000c244 <[^>]*> nop
-+0000c248 <[^>]*> nop
-+0000c24c <[^>]*> nop
-+0000c250 <[^>]*> nop
-+0000c254 <[^>]*> nop
-+0000c258 <[^>]*> nop
-+0000c25c <[^>]*> nop
-+0000c260 <[^>]*> nop
-+0000c264 <[^>]*> nop
-+0000c268 <[^>]*> nop
-+0000c26c <[^>]*> nop
-+0000c270 <[^>]*> nop
-+0000c274 <[^>]*> nop
-+0000c278 <[^>]*> nop
-+0000c27c <[^>]*> nop
-+0000c280 <[^>]*> nop
-+0000c284 <[^>]*> nop
-+0000c288 <[^>]*> nop
-+0000c28c <[^>]*> nop
-+0000c290 <[^>]*> nop
-+0000c294 <[^>]*> nop
-+0000c298 <[^>]*> nop
-+0000c29c <[^>]*> nop
-+0000c2a0 <[^>]*> nop
-+0000c2a4 <[^>]*> nop
-+0000c2a8 <[^>]*> nop
-+0000c2ac <[^>]*> nop
-+0000c2b0 <[^>]*> nop
-+0000c2b4 <[^>]*> nop
-+0000c2b8 <[^>]*> nop
-+0000c2bc <[^>]*> nop
-+0000c2c0 <[^>]*> nop
-+0000c2c4 <[^>]*> nop
-+0000c2c8 <[^>]*> nop
-+0000c2cc <[^>]*> nop
-+0000c2d0 <[^>]*> nop
-+0000c2d4 <[^>]*> nop
-+0000c2d8 <[^>]*> nop
-+0000c2dc <[^>]*> nop
-+0000c2e0 <[^>]*> nop
-+0000c2e4 <[^>]*> nop
-+0000c2e8 <[^>]*> nop
-+0000c2ec <[^>]*> nop
-+0000c2f0 <[^>]*> nop
-+0000c2f4 <[^>]*> nop
-+0000c2f8 <[^>]*> nop
-+0000c2fc <[^>]*> nop
-+0000c300 <[^>]*> nop
-+0000c304 <[^>]*> nop
-+0000c308 <[^>]*> nop
-+0000c30c <[^>]*> nop
-+0000c310 <[^>]*> nop
-+0000c314 <[^>]*> nop
-+0000c318 <[^>]*> nop
-+0000c31c <[^>]*> nop
-+0000c320 <[^>]*> nop
-+0000c324 <[^>]*> nop
-+0000c328 <[^>]*> nop
-+0000c32c <[^>]*> nop
-+0000c330 <[^>]*> nop
-+0000c334 <[^>]*> nop
-+0000c338 <[^>]*> nop
-+0000c33c <[^>]*> nop
-+0000c340 <[^>]*> nop
-+0000c344 <[^>]*> nop
-+0000c348 <[^>]*> nop
-+0000c34c <[^>]*> nop
-+0000c350 <[^>]*> nop
-+0000c354 <[^>]*> nop
-+0000c358 <[^>]*> nop
-+0000c35c <[^>]*> nop
-+0000c360 <[^>]*> nop
-+0000c364 <[^>]*> nop
-+0000c368 <[^>]*> nop
-+0000c36c <[^>]*> nop
-+0000c370 <[^>]*> nop
-+0000c374 <[^>]*> nop
-+0000c378 <[^>]*> nop
-+0000c37c <[^>]*> nop
-+0000c380 <[^>]*> nop
-+0000c384 <[^>]*> nop
-+0000c388 <[^>]*> nop
-+0000c38c <[^>]*> nop
-+0000c390 <[^>]*> nop
-+0000c394 <[^>]*> nop
-+0000c398 <[^>]*> nop
-+0000c39c <[^>]*> nop
-+0000c3a0 <[^>]*> nop
-+0000c3a4 <[^>]*> nop
-+0000c3a8 <[^>]*> nop
-+0000c3ac <[^>]*> nop
-+0000c3b0 <[^>]*> nop
-+0000c3b4 <[^>]*> nop
-+0000c3b8 <[^>]*> nop
-+0000c3bc <[^>]*> nop
-+0000c3c0 <[^>]*> nop
-+0000c3c4 <[^>]*> nop
-+0000c3c8 <[^>]*> nop
-+0000c3cc <[^>]*> nop
-+0000c3d0 <[^>]*> nop
-+0000c3d4 <[^>]*> nop
-+0000c3d8 <[^>]*> nop
-+0000c3dc <[^>]*> nop
-+0000c3e0 <[^>]*> nop
-+0000c3e4 <[^>]*> nop
-+0000c3e8 <[^>]*> nop
-+0000c3ec <[^>]*> nop
-+0000c3f0 <[^>]*> nop
-+0000c3f4 <[^>]*> nop
-+0000c3f8 <[^>]*> nop
-+0000c3fc <[^>]*> nop
-+0000c400 <[^>]*> nop
-+0000c404 <[^>]*> nop
-+0000c408 <[^>]*> nop
-+0000c40c <[^>]*> nop
-+0000c410 <[^>]*> nop
-+0000c414 <[^>]*> nop
-+0000c418 <[^>]*> nop
-+0000c41c <[^>]*> nop
-+0000c420 <[^>]*> nop
-+0000c424 <[^>]*> nop
-+0000c428 <[^>]*> nop
-+0000c42c <[^>]*> nop
-+0000c430 <[^>]*> nop
-+0000c434 <[^>]*> nop
-+0000c438 <[^>]*> nop
-+0000c43c <[^>]*> nop
-+0000c440 <[^>]*> nop
-+0000c444 <[^>]*> nop
-+0000c448 <[^>]*> nop
-+0000c44c <[^>]*> nop
-+0000c450 <[^>]*> nop
-+0000c454 <[^>]*> nop
-+0000c458 <[^>]*> nop
-+0000c45c <[^>]*> nop
-+0000c460 <[^>]*> nop
-+0000c464 <[^>]*> nop
-+0000c468 <[^>]*> nop
-+0000c46c <[^>]*> nop
-+0000c470 <[^>]*> nop
-+0000c474 <[^>]*> nop
-+0000c478 <[^>]*> nop
-+0000c47c <[^>]*> nop
-+0000c480 <[^>]*> nop
-+0000c484 <[^>]*> nop
-+0000c488 <[^>]*> nop
-+0000c48c <[^>]*> nop
-+0000c490 <[^>]*> nop
-+0000c494 <[^>]*> nop
-+0000c498 <[^>]*> nop
-+0000c49c <[^>]*> nop
-+0000c4a0 <[^>]*> nop
-+0000c4a4 <[^>]*> nop
-+0000c4a8 <[^>]*> nop
-+0000c4ac <[^>]*> nop
-+0000c4b0 <[^>]*> nop
-+0000c4b4 <[^>]*> nop
-+0000c4b8 <[^>]*> nop
-+0000c4bc <[^>]*> nop
-+0000c4c0 <[^>]*> nop
-+0000c4c4 <[^>]*> nop
-+0000c4c8 <[^>]*> nop
-+0000c4cc <[^>]*> nop
-+0000c4d0 <[^>]*> nop
-+0000c4d4 <[^>]*> nop
-+0000c4d8 <[^>]*> nop
-+0000c4dc <[^>]*> nop
-+0000c4e0 <[^>]*> nop
-+0000c4e4 <[^>]*> nop
-+0000c4e8 <[^>]*> nop
-+0000c4ec <[^>]*> nop
-+0000c4f0 <[^>]*> nop
-+0000c4f4 <[^>]*> nop
-+0000c4f8 <[^>]*> nop
-+0000c4fc <[^>]*> nop
-+0000c500 <[^>]*> nop
-+0000c504 <[^>]*> nop
-+0000c508 <[^>]*> nop
-+0000c50c <[^>]*> nop
-+0000c510 <[^>]*> nop
-+0000c514 <[^>]*> nop
-+0000c518 <[^>]*> nop
-+0000c51c <[^>]*> nop
-+0000c520 <[^>]*> nop
-+0000c524 <[^>]*> nop
-+0000c528 <[^>]*> nop
-+0000c52c <[^>]*> nop
-+0000c530 <[^>]*> nop
-+0000c534 <[^>]*> nop
-+0000c538 <[^>]*> nop
-+0000c53c <[^>]*> nop
-+0000c540 <[^>]*> nop
-+0000c544 <[^>]*> nop
-+0000c548 <[^>]*> nop
-+0000c54c <[^>]*> nop
-+0000c550 <[^>]*> nop
-+0000c554 <[^>]*> nop
-+0000c558 <[^>]*> nop
-+0000c55c <[^>]*> nop
-+0000c560 <[^>]*> nop
-+0000c564 <[^>]*> nop
-+0000c568 <[^>]*> nop
-+0000c56c <[^>]*> nop
-+0000c570 <[^>]*> nop
-+0000c574 <[^>]*> nop
-+0000c578 <[^>]*> nop
-+0000c57c <[^>]*> nop
-+0000c580 <[^>]*> nop
-+0000c584 <[^>]*> nop
-+0000c588 <[^>]*> nop
-+0000c58c <[^>]*> nop
-+0000c590 <[^>]*> nop
-+0000c594 <[^>]*> nop
-+0000c598 <[^>]*> nop
-+0000c59c <[^>]*> nop
-+0000c5a0 <[^>]*> nop
-+0000c5a4 <[^>]*> nop
-+0000c5a8 <[^>]*> nop
-+0000c5ac <[^>]*> nop
-+0000c5b0 <[^>]*> nop
-+0000c5b4 <[^>]*> nop
-+0000c5b8 <[^>]*> nop
-+0000c5bc <[^>]*> nop
-+0000c5c0 <[^>]*> nop
-+0000c5c4 <[^>]*> nop
-+0000c5c8 <[^>]*> nop
-+0000c5cc <[^>]*> nop
-+0000c5d0 <[^>]*> nop
-+0000c5d4 <[^>]*> nop
-+0000c5d8 <[^>]*> nop
-+0000c5dc <[^>]*> nop
-+0000c5e0 <[^>]*> nop
-+0000c5e4 <[^>]*> nop
-+0000c5e8 <[^>]*> nop
-+0000c5ec <[^>]*> nop
-+0000c5f0 <[^>]*> nop
-+0000c5f4 <[^>]*> nop
-+0000c5f8 <[^>]*> nop
-+0000c5fc <[^>]*> nop
-+0000c600 <[^>]*> nop
-+0000c604 <[^>]*> nop
-+0000c608 <[^>]*> nop
-+0000c60c <[^>]*> nop
-+0000c610 <[^>]*> nop
-+0000c614 <[^>]*> nop
-+0000c618 <[^>]*> nop
-+0000c61c <[^>]*> nop
-+0000c620 <[^>]*> nop
-+0000c624 <[^>]*> nop
-+0000c628 <[^>]*> nop
-+0000c62c <[^>]*> nop
-+0000c630 <[^>]*> nop
-+0000c634 <[^>]*> nop
-+0000c638 <[^>]*> nop
-+0000c63c <[^>]*> nop
-+0000c640 <[^>]*> nop
-+0000c644 <[^>]*> nop
-+0000c648 <[^>]*> nop
-+0000c64c <[^>]*> nop
-+0000c650 <[^>]*> nop
-+0000c654 <[^>]*> nop
-+0000c658 <[^>]*> nop
-+0000c65c <[^>]*> nop
-+0000c660 <[^>]*> nop
-+0000c664 <[^>]*> nop
-+0000c668 <[^>]*> nop
-+0000c66c <[^>]*> nop
-+0000c670 <[^>]*> nop
-+0000c674 <[^>]*> nop
-+0000c678 <[^>]*> nop
-+0000c67c <[^>]*> nop
-+0000c680 <[^>]*> nop
-+0000c684 <[^>]*> nop
-+0000c688 <[^>]*> nop
-+0000c68c <[^>]*> nop
-+0000c690 <[^>]*> nop
-+0000c694 <[^>]*> nop
-+0000c698 <[^>]*> nop
-+0000c69c <[^>]*> nop
-+0000c6a0 <[^>]*> nop
-+0000c6a4 <[^>]*> nop
-+0000c6a8 <[^>]*> nop
-+0000c6ac <[^>]*> nop
-+0000c6b0 <[^>]*> nop
-+0000c6b4 <[^>]*> nop
-+0000c6b8 <[^>]*> nop
-+0000c6bc <[^>]*> nop
-+0000c6c0 <[^>]*> nop
-+0000c6c4 <[^>]*> nop
-+0000c6c8 <[^>]*> nop
-+0000c6cc <[^>]*> nop
-+0000c6d0 <[^>]*> nop
-+0000c6d4 <[^>]*> nop
-+0000c6d8 <[^>]*> nop
-+0000c6dc <[^>]*> nop
-+0000c6e0 <[^>]*> nop
-+0000c6e4 <[^>]*> nop
-+0000c6e8 <[^>]*> nop
-+0000c6ec <[^>]*> nop
-+0000c6f0 <[^>]*> nop
-+0000c6f4 <[^>]*> nop
-+0000c6f8 <[^>]*> nop
-+0000c6fc <[^>]*> nop
-+0000c700 <[^>]*> nop
-+0000c704 <[^>]*> nop
-+0000c708 <[^>]*> nop
-+0000c70c <[^>]*> nop
-+0000c710 <[^>]*> nop
-+0000c714 <[^>]*> nop
-+0000c718 <[^>]*> nop
-+0000c71c <[^>]*> nop
-+0000c720 <[^>]*> nop
-+0000c724 <[^>]*> nop
-+0000c728 <[^>]*> nop
-+0000c72c <[^>]*> nop
-+0000c730 <[^>]*> nop
-+0000c734 <[^>]*> nop
-+0000c738 <[^>]*> nop
-+0000c73c <[^>]*> nop
-+0000c740 <[^>]*> nop
-+0000c744 <[^>]*> nop
-+0000c748 <[^>]*> nop
-+0000c74c <[^>]*> nop
-+0000c750 <[^>]*> nop
-+0000c754 <[^>]*> nop
-+0000c758 <[^>]*> nop
-+0000c75c <[^>]*> nop
-+0000c760 <[^>]*> nop
-+0000c764 <[^>]*> nop
-+0000c768 <[^>]*> nop
-+0000c76c <[^>]*> nop
-+0000c770 <[^>]*> nop
-+0000c774 <[^>]*> nop
-+0000c778 <[^>]*> nop
-+0000c77c <[^>]*> nop
-+0000c780 <[^>]*> nop
-+0000c784 <[^>]*> nop
-+0000c788 <[^>]*> nop
-+0000c78c <[^>]*> nop
-+0000c790 <[^>]*> nop
-+0000c794 <[^>]*> nop
-+0000c798 <[^>]*> nop
-+0000c79c <[^>]*> nop
-+0000c7a0 <[^>]*> nop
-+0000c7a4 <[^>]*> nop
-+0000c7a8 <[^>]*> nop
-+0000c7ac <[^>]*> nop
-+0000c7b0 <[^>]*> nop
-+0000c7b4 <[^>]*> nop
-+0000c7b8 <[^>]*> nop
-+0000c7bc <[^>]*> nop
-+0000c7c0 <[^>]*> nop
-+0000c7c4 <[^>]*> nop
-+0000c7c8 <[^>]*> nop
-+0000c7cc <[^>]*> nop
-+0000c7d0 <[^>]*> nop
-+0000c7d4 <[^>]*> nop
-+0000c7d8 <[^>]*> nop
-+0000c7dc <[^>]*> nop
-+0000c7e0 <[^>]*> nop
-+0000c7e4 <[^>]*> nop
-+0000c7e8 <[^>]*> nop
-+0000c7ec <[^>]*> nop
-+0000c7f0 <[^>]*> nop
-+0000c7f4 <[^>]*> nop
-+0000c7f8 <[^>]*> nop
-+0000c7fc <[^>]*> nop
-+0000c800 <[^>]*> nop
-+0000c804 <[^>]*> nop
-+0000c808 <[^>]*> nop
-+0000c80c <[^>]*> nop
-+0000c810 <[^>]*> nop
-+0000c814 <[^>]*> nop
-+0000c818 <[^>]*> nop
-+0000c81c <[^>]*> nop
-+0000c820 <[^>]*> nop
-+0000c824 <[^>]*> nop
-+0000c828 <[^>]*> nop
-+0000c82c <[^>]*> nop
-+0000c830 <[^>]*> nop
-+0000c834 <[^>]*> nop
-+0000c838 <[^>]*> nop
-+0000c83c <[^>]*> nop
-+0000c840 <[^>]*> nop
-+0000c844 <[^>]*> nop
-+0000c848 <[^>]*> nop
-+0000c84c <[^>]*> nop
-+0000c850 <[^>]*> nop
-+0000c854 <[^>]*> nop
-+0000c858 <[^>]*> nop
-+0000c85c <[^>]*> nop
-+0000c860 <[^>]*> nop
-+0000c864 <[^>]*> nop
-+0000c868 <[^>]*> nop
-+0000c86c <[^>]*> nop
-+0000c870 <[^>]*> nop
-+0000c874 <[^>]*> nop
-+0000c878 <[^>]*> nop
-+0000c87c <[^>]*> nop
-+0000c880 <[^>]*> nop
-+0000c884 <[^>]*> nop
-+0000c888 <[^>]*> nop
-+0000c88c <[^>]*> nop
-+0000c890 <[^>]*> nop
-+0000c894 <[^>]*> nop
-+0000c898 <[^>]*> nop
-+0000c89c <[^>]*> nop
-+0000c8a0 <[^>]*> nop
-+0000c8a4 <[^>]*> nop
-+0000c8a8 <[^>]*> nop
-+0000c8ac <[^>]*> nop
-+0000c8b0 <[^>]*> nop
-+0000c8b4 <[^>]*> nop
-+0000c8b8 <[^>]*> nop
-+0000c8bc <[^>]*> nop
-+0000c8c0 <[^>]*> nop
-+0000c8c4 <[^>]*> nop
-+0000c8c8 <[^>]*> nop
-+0000c8cc <[^>]*> nop
-+0000c8d0 <[^>]*> nop
-+0000c8d4 <[^>]*> nop
-+0000c8d8 <[^>]*> nop
-+0000c8dc <[^>]*> nop
-+0000c8e0 <[^>]*> nop
-+0000c8e4 <[^>]*> nop
-+0000c8e8 <[^>]*> nop
-+0000c8ec <[^>]*> nop
-+0000c8f0 <[^>]*> nop
-+0000c8f4 <[^>]*> nop
-+0000c8f8 <[^>]*> nop
-+0000c8fc <[^>]*> nop
-+0000c900 <[^>]*> nop
-+0000c904 <[^>]*> nop
-+0000c908 <[^>]*> nop
-+0000c90c <[^>]*> nop
-+0000c910 <[^>]*> nop
-+0000c914 <[^>]*> nop
-+0000c918 <[^>]*> nop
-+0000c91c <[^>]*> nop
-+0000c920 <[^>]*> nop
-+0000c924 <[^>]*> nop
-+0000c928 <[^>]*> nop
-+0000c92c <[^>]*> nop
-+0000c930 <[^>]*> nop
-+0000c934 <[^>]*> nop
-+0000c938 <[^>]*> nop
-+0000c93c <[^>]*> nop
-+0000c940 <[^>]*> nop
-+0000c944 <[^>]*> nop
-+0000c948 <[^>]*> nop
-+0000c94c <[^>]*> nop
-+0000c950 <[^>]*> nop
-+0000c954 <[^>]*> nop
-+0000c958 <[^>]*> nop
-+0000c95c <[^>]*> nop
-+0000c960 <[^>]*> nop
-+0000c964 <[^>]*> nop
-+0000c968 <[^>]*> nop
-+0000c96c <[^>]*> nop
-+0000c970 <[^>]*> nop
-+0000c974 <[^>]*> nop
-+0000c978 <[^>]*> nop
-+0000c97c <[^>]*> nop
-+0000c980 <[^>]*> nop
-+0000c984 <[^>]*> nop
-+0000c988 <[^>]*> nop
-+0000c98c <[^>]*> nop
-+0000c990 <[^>]*> nop
-+0000c994 <[^>]*> nop
-+0000c998 <[^>]*> nop
-+0000c99c <[^>]*> nop
-+0000c9a0 <[^>]*> nop
-+0000c9a4 <[^>]*> nop
-+0000c9a8 <[^>]*> nop
-+0000c9ac <[^>]*> nop
-+0000c9b0 <[^>]*> nop
-+0000c9b4 <[^>]*> nop
-+0000c9b8 <[^>]*> nop
-+0000c9bc <[^>]*> nop
-+0000c9c0 <[^>]*> nop
-+0000c9c4 <[^>]*> nop
-+0000c9c8 <[^>]*> nop
-+0000c9cc <[^>]*> nop
-+0000c9d0 <[^>]*> nop
-+0000c9d4 <[^>]*> nop
-+0000c9d8 <[^>]*> nop
-+0000c9dc <[^>]*> nop
-+0000c9e0 <[^>]*> nop
-+0000c9e4 <[^>]*> nop
-+0000c9e8 <[^>]*> nop
-+0000c9ec <[^>]*> nop
-+0000c9f0 <[^>]*> nop
-+0000c9f4 <[^>]*> nop
-+0000c9f8 <[^>]*> nop
-+0000c9fc <[^>]*> nop
-+0000ca00 <[^>]*> nop
-+0000ca04 <[^>]*> nop
-+0000ca08 <[^>]*> nop
-+0000ca0c <[^>]*> nop
-+0000ca10 <[^>]*> nop
-+0000ca14 <[^>]*> nop
-+0000ca18 <[^>]*> nop
-+0000ca1c <[^>]*> nop
-+0000ca20 <[^>]*> nop
-+0000ca24 <[^>]*> nop
-+0000ca28 <[^>]*> nop
-+0000ca2c <[^>]*> nop
-+0000ca30 <[^>]*> nop
-+0000ca34 <[^>]*> nop
-+0000ca38 <[^>]*> nop
-+0000ca3c <[^>]*> nop
-+0000ca40 <[^>]*> nop
-+0000ca44 <[^>]*> nop
-+0000ca48 <[^>]*> nop
-+0000ca4c <[^>]*> nop
-+0000ca50 <[^>]*> nop
-+0000ca54 <[^>]*> nop
-+0000ca58 <[^>]*> nop
-+0000ca5c <[^>]*> nop
-+0000ca60 <[^>]*> nop
-+0000ca64 <[^>]*> nop
-+0000ca68 <[^>]*> nop
-+0000ca6c <[^>]*> nop
-+0000ca70 <[^>]*> nop
-+0000ca74 <[^>]*> nop
-+0000ca78 <[^>]*> nop
-+0000ca7c <[^>]*> nop
-+0000ca80 <[^>]*> nop
-+0000ca84 <[^>]*> nop
-+0000ca88 <[^>]*> nop
-+0000ca8c <[^>]*> nop
-+0000ca90 <[^>]*> nop
-+0000ca94 <[^>]*> nop
-+0000ca98 <[^>]*> nop
-+0000ca9c <[^>]*> nop
-+0000caa0 <[^>]*> nop
-+0000caa4 <[^>]*> nop
-+0000caa8 <[^>]*> nop
-+0000caac <[^>]*> nop
-+0000cab0 <[^>]*> nop
-+0000cab4 <[^>]*> nop
-+0000cab8 <[^>]*> nop
-+0000cabc <[^>]*> nop
-+0000cac0 <[^>]*> nop
-+0000cac4 <[^>]*> nop
-+0000cac8 <[^>]*> nop
-+0000cacc <[^>]*> nop
-+0000cad0 <[^>]*> nop
-+0000cad4 <[^>]*> nop
-+0000cad8 <[^>]*> nop
-+0000cadc <[^>]*> nop
-+0000cae0 <[^>]*> nop
-+0000cae4 <[^>]*> nop
-+0000cae8 <[^>]*> nop
-+0000caec <[^>]*> nop
-+0000caf0 <[^>]*> nop
-+0000caf4 <[^>]*> nop
-+0000caf8 <[^>]*> nop
-+0000cafc <[^>]*> nop
-+0000cb00 <[^>]*> nop
-+0000cb04 <[^>]*> nop
-+0000cb08 <[^>]*> nop
-+0000cb0c <[^>]*> nop
-+0000cb10 <[^>]*> nop
-+0000cb14 <[^>]*> nop
-+0000cb18 <[^>]*> nop
-+0000cb1c <[^>]*> nop
-+0000cb20 <[^>]*> nop
-+0000cb24 <[^>]*> nop
-+0000cb28 <[^>]*> nop
-+0000cb2c <[^>]*> nop
-+0000cb30 <[^>]*> nop
-+0000cb34 <[^>]*> nop
-+0000cb38 <[^>]*> nop
-+0000cb3c <[^>]*> nop
-+0000cb40 <[^>]*> nop
-+0000cb44 <[^>]*> nop
-+0000cb48 <[^>]*> nop
-+0000cb4c <[^>]*> nop
-+0000cb50 <[^>]*> nop
-+0000cb54 <[^>]*> nop
-+0000cb58 <[^>]*> nop
-+0000cb5c <[^>]*> nop
-+0000cb60 <[^>]*> nop
-+0000cb64 <[^>]*> nop
-+0000cb68 <[^>]*> nop
-+0000cb6c <[^>]*> nop
-+0000cb70 <[^>]*> nop
-+0000cb74 <[^>]*> nop
-+0000cb78 <[^>]*> nop
-+0000cb7c <[^>]*> nop
-+0000cb80 <[^>]*> nop
-+0000cb84 <[^>]*> nop
-+0000cb88 <[^>]*> nop
-+0000cb8c <[^>]*> nop
-+0000cb90 <[^>]*> nop
-+0000cb94 <[^>]*> nop
-+0000cb98 <[^>]*> nop
-+0000cb9c <[^>]*> nop
-+0000cba0 <[^>]*> nop
-+0000cba4 <[^>]*> nop
-+0000cba8 <[^>]*> nop
-+0000cbac <[^>]*> nop
-+0000cbb0 <[^>]*> nop
-+0000cbb4 <[^>]*> nop
-+0000cbb8 <[^>]*> nop
-+0000cbbc <[^>]*> nop
-+0000cbc0 <[^>]*> nop
-+0000cbc4 <[^>]*> nop
-+0000cbc8 <[^>]*> nop
-+0000cbcc <[^>]*> nop
-+0000cbd0 <[^>]*> nop
-+0000cbd4 <[^>]*> nop
-+0000cbd8 <[^>]*> nop
-+0000cbdc <[^>]*> nop
-+0000cbe0 <[^>]*> nop
-+0000cbe4 <[^>]*> nop
-+0000cbe8 <[^>]*> nop
-+0000cbec <[^>]*> nop
-+0000cbf0 <[^>]*> nop
-+0000cbf4 <[^>]*> nop
-+0000cbf8 <[^>]*> nop
-+0000cbfc <[^>]*> nop
-+0000cc00 <[^>]*> nop
-+0000cc04 <[^>]*> nop
-+0000cc08 <[^>]*> nop
-+0000cc0c <[^>]*> nop
-+0000cc10 <[^>]*> nop
-+0000cc14 <[^>]*> nop
-+0000cc18 <[^>]*> nop
-+0000cc1c <[^>]*> nop
-+0000cc20 <[^>]*> nop
-+0000cc24 <[^>]*> nop
-+0000cc28 <[^>]*> nop
-+0000cc2c <[^>]*> nop
-+0000cc30 <[^>]*> nop
-+0000cc34 <[^>]*> nop
-+0000cc38 <[^>]*> nop
-+0000cc3c <[^>]*> nop
-+0000cc40 <[^>]*> nop
-+0000cc44 <[^>]*> nop
-+0000cc48 <[^>]*> nop
-+0000cc4c <[^>]*> nop
-+0000cc50 <[^>]*> nop
-+0000cc54 <[^>]*> nop
-+0000cc58 <[^>]*> nop
-+0000cc5c <[^>]*> nop
-+0000cc60 <[^>]*> nop
-+0000cc64 <[^>]*> nop
-+0000cc68 <[^>]*> nop
-+0000cc6c <[^>]*> nop
-+0000cc70 <[^>]*> nop
-+0000cc74 <[^>]*> nop
-+0000cc78 <[^>]*> nop
-+0000cc7c <[^>]*> nop
-+0000cc80 <[^>]*> nop
-+0000cc84 <[^>]*> nop
-+0000cc88 <[^>]*> nop
-+0000cc8c <[^>]*> nop
-+0000cc90 <[^>]*> nop
-+0000cc94 <[^>]*> nop
-+0000cc98 <[^>]*> nop
-+0000cc9c <[^>]*> nop
-+0000cca0 <[^>]*> nop
-+0000cca4 <[^>]*> nop
-+0000cca8 <[^>]*> nop
-+0000ccac <[^>]*> nop
-+0000ccb0 <[^>]*> nop
-+0000ccb4 <[^>]*> nop
-+0000ccb8 <[^>]*> nop
-+0000ccbc <[^>]*> nop
-+0000ccc0 <[^>]*> nop
-+0000ccc4 <[^>]*> nop
-+0000ccc8 <[^>]*> nop
-+0000cccc <[^>]*> nop
-+0000ccd0 <[^>]*> nop
-+0000ccd4 <[^>]*> nop
-+0000ccd8 <[^>]*> nop
-+0000ccdc <[^>]*> nop
-+0000cce0 <[^>]*> nop
-+0000cce4 <[^>]*> nop
-+0000cce8 <[^>]*> nop
-+0000ccec <[^>]*> nop
-+0000ccf0 <[^>]*> nop
-+0000ccf4 <[^>]*> nop
-+0000ccf8 <[^>]*> nop
-+0000ccfc <[^>]*> nop
-+0000cd00 <[^>]*> nop
-+0000cd04 <[^>]*> nop
-+0000cd08 <[^>]*> nop
-+0000cd0c <[^>]*> nop
-+0000cd10 <[^>]*> nop
-+0000cd14 <[^>]*> nop
-+0000cd18 <[^>]*> nop
-+0000cd1c <[^>]*> nop
-+0000cd20 <[^>]*> nop
-+0000cd24 <[^>]*> nop
-+0000cd28 <[^>]*> nop
-+0000cd2c <[^>]*> nop
-+0000cd30 <[^>]*> nop
-+0000cd34 <[^>]*> nop
-+0000cd38 <[^>]*> nop
-+0000cd3c <[^>]*> nop
-+0000cd40 <[^>]*> nop
-+0000cd44 <[^>]*> nop
-+0000cd48 <[^>]*> nop
-+0000cd4c <[^>]*> nop
-+0000cd50 <[^>]*> nop
-+0000cd54 <[^>]*> nop
-+0000cd58 <[^>]*> nop
-+0000cd5c <[^>]*> nop
-+0000cd60 <[^>]*> nop
-+0000cd64 <[^>]*> nop
-+0000cd68 <[^>]*> nop
-+0000cd6c <[^>]*> nop
-+0000cd70 <[^>]*> nop
-+0000cd74 <[^>]*> nop
-+0000cd78 <[^>]*> nop
-+0000cd7c <[^>]*> nop
-+0000cd80 <[^>]*> nop
-+0000cd84 <[^>]*> nop
-+0000cd88 <[^>]*> nop
-+0000cd8c <[^>]*> nop
-+0000cd90 <[^>]*> nop
-+0000cd94 <[^>]*> nop
-+0000cd98 <[^>]*> nop
-+0000cd9c <[^>]*> nop
-+0000cda0 <[^>]*> nop
-+0000cda4 <[^>]*> nop
-+0000cda8 <[^>]*> nop
-+0000cdac <[^>]*> nop
-+0000cdb0 <[^>]*> nop
-+0000cdb4 <[^>]*> nop
-+0000cdb8 <[^>]*> nop
-+0000cdbc <[^>]*> nop
-+0000cdc0 <[^>]*> nop
-+0000cdc4 <[^>]*> nop
-+0000cdc8 <[^>]*> nop
-+0000cdcc <[^>]*> nop
-+0000cdd0 <[^>]*> nop
-+0000cdd4 <[^>]*> nop
-+0000cdd8 <[^>]*> nop
-+0000cddc <[^>]*> nop
-+0000cde0 <[^>]*> nop
-+0000cde4 <[^>]*> nop
-+0000cde8 <[^>]*> nop
-+0000cdec <[^>]*> nop
-+0000cdf0 <[^>]*> nop
-+0000cdf4 <[^>]*> nop
-+0000cdf8 <[^>]*> nop
-+0000cdfc <[^>]*> nop
-+0000ce00 <[^>]*> nop
-+0000ce04 <[^>]*> nop
-+0000ce08 <[^>]*> nop
-+0000ce0c <[^>]*> nop
-+0000ce10 <[^>]*> nop
-+0000ce14 <[^>]*> nop
-+0000ce18 <[^>]*> nop
-+0000ce1c <[^>]*> nop
-+0000ce20 <[^>]*> nop
-+0000ce24 <[^>]*> nop
-+0000ce28 <[^>]*> nop
-+0000ce2c <[^>]*> nop
-+0000ce30 <[^>]*> nop
-+0000ce34 <[^>]*> nop
-+0000ce38 <[^>]*> nop
-+0000ce3c <[^>]*> nop
-+0000ce40 <[^>]*> nop
-+0000ce44 <[^>]*> nop
-+0000ce48 <[^>]*> nop
-+0000ce4c <[^>]*> nop
-+0000ce50 <[^>]*> nop
-+0000ce54 <[^>]*> nop
-+0000ce58 <[^>]*> nop
-+0000ce5c <[^>]*> nop
-+0000ce60 <[^>]*> nop
-+0000ce64 <[^>]*> nop
-+0000ce68 <[^>]*> nop
-+0000ce6c <[^>]*> nop
-+0000ce70 <[^>]*> nop
-+0000ce74 <[^>]*> nop
-+0000ce78 <[^>]*> nop
-+0000ce7c <[^>]*> nop
-+0000ce80 <[^>]*> nop
-+0000ce84 <[^>]*> nop
-+0000ce88 <[^>]*> nop
-+0000ce8c <[^>]*> nop
-+0000ce90 <[^>]*> nop
-+0000ce94 <[^>]*> nop
-+0000ce98 <[^>]*> nop
-+0000ce9c <[^>]*> nop
-+0000cea0 <[^>]*> nop
-+0000cea4 <[^>]*> nop
-+0000cea8 <[^>]*> nop
-+0000ceac <[^>]*> nop
-+0000ceb0 <[^>]*> nop
-+0000ceb4 <[^>]*> nop
-+0000ceb8 <[^>]*> nop
-+0000cebc <[^>]*> nop
-+0000cec0 <[^>]*> nop
-+0000cec4 <[^>]*> nop
-+0000cec8 <[^>]*> nop
-+0000cecc <[^>]*> nop
-+0000ced0 <[^>]*> nop
-+0000ced4 <[^>]*> nop
-+0000ced8 <[^>]*> nop
-+0000cedc <[^>]*> nop
-+0000cee0 <[^>]*> nop
-+0000cee4 <[^>]*> nop
-+0000cee8 <[^>]*> nop
-+0000ceec <[^>]*> nop
-+0000cef0 <[^>]*> nop
-+0000cef4 <[^>]*> nop
-+0000cef8 <[^>]*> nop
-+0000cefc <[^>]*> nop
-+0000cf00 <[^>]*> nop
-+0000cf04 <[^>]*> nop
-+0000cf08 <[^>]*> nop
-+0000cf0c <[^>]*> nop
-+0000cf10 <[^>]*> nop
-+0000cf14 <[^>]*> nop
-+0000cf18 <[^>]*> nop
-+0000cf1c <[^>]*> nop
-+0000cf20 <[^>]*> nop
-+0000cf24 <[^>]*> nop
-+0000cf28 <[^>]*> nop
-+0000cf2c <[^>]*> nop
-+0000cf30 <[^>]*> nop
-+0000cf34 <[^>]*> nop
-+0000cf38 <[^>]*> nop
-+0000cf3c <[^>]*> nop
-+0000cf40 <[^>]*> nop
-+0000cf44 <[^>]*> nop
-+0000cf48 <[^>]*> nop
-+0000cf4c <[^>]*> nop
-+0000cf50 <[^>]*> nop
-+0000cf54 <[^>]*> nop
-+0000cf58 <[^>]*> nop
-+0000cf5c <[^>]*> nop
-+0000cf60 <[^>]*> nop
-+0000cf64 <[^>]*> nop
-+0000cf68 <[^>]*> nop
-+0000cf6c <[^>]*> nop
-+0000cf70 <[^>]*> nop
-+0000cf74 <[^>]*> nop
-+0000cf78 <[^>]*> nop
-+0000cf7c <[^>]*> nop
-+0000cf80 <[^>]*> nop
-+0000cf84 <[^>]*> nop
-+0000cf88 <[^>]*> nop
-+0000cf8c <[^>]*> nop
-+0000cf90 <[^>]*> nop
-+0000cf94 <[^>]*> nop
-+0000cf98 <[^>]*> nop
-+0000cf9c <[^>]*> nop
-+0000cfa0 <[^>]*> nop
-+0000cfa4 <[^>]*> nop
-+0000cfa8 <[^>]*> nop
-+0000cfac <[^>]*> nop
-+0000cfb0 <[^>]*> nop
-+0000cfb4 <[^>]*> nop
-+0000cfb8 <[^>]*> nop
-+0000cfbc <[^>]*> nop
-+0000cfc0 <[^>]*> nop
-+0000cfc4 <[^>]*> nop
-+0000cfc8 <[^>]*> nop
-+0000cfcc <[^>]*> nop
-+0000cfd0 <[^>]*> nop
-+0000cfd4 <[^>]*> nop
-+0000cfd8 <[^>]*> nop
-+0000cfdc <[^>]*> nop
-+0000cfe0 <[^>]*> nop
-+0000cfe4 <[^>]*> nop
-+0000cfe8 <[^>]*> nop
-+0000cfec <[^>]*> nop
-+0000cff0 <[^>]*> nop
-+0000cff4 <[^>]*> nop
-+0000cff8 <[^>]*> nop
-+0000cffc <[^>]*> nop
-+0000d000 <[^>]*> nop
-+0000d004 <[^>]*> nop
-+0000d008 <[^>]*> nop
-+0000d00c <[^>]*> nop
-+0000d010 <[^>]*> nop
-+0000d014 <[^>]*> nop
-+0000d018 <[^>]*> nop
-+0000d01c <[^>]*> nop
-+0000d020 <[^>]*> nop
-+0000d024 <[^>]*> nop
-+0000d028 <[^>]*> nop
-+0000d02c <[^>]*> nop
-+0000d030 <[^>]*> nop
-+0000d034 <[^>]*> nop
-+0000d038 <[^>]*> nop
-+0000d03c <[^>]*> nop
-+0000d040 <[^>]*> nop
-+0000d044 <[^>]*> nop
-+0000d048 <[^>]*> nop
-+0000d04c <[^>]*> nop
-+0000d050 <[^>]*> nop
-+0000d054 <[^>]*> nop
-+0000d058 <[^>]*> nop
-+0000d05c <[^>]*> nop
-+0000d060 <[^>]*> nop
-+0000d064 <[^>]*> nop
-+0000d068 <[^>]*> nop
-+0000d06c <[^>]*> nop
-+0000d070 <[^>]*> nop
-+0000d074 <[^>]*> nop
-+0000d078 <[^>]*> nop
-+0000d07c <[^>]*> nop
-+0000d080 <[^>]*> nop
-+0000d084 <[^>]*> nop
-+0000d088 <[^>]*> nop
-+0000d08c <[^>]*> nop
-+0000d090 <[^>]*> nop
-+0000d094 <[^>]*> nop
-+0000d098 <[^>]*> nop
-+0000d09c <[^>]*> nop
-+0000d0a0 <[^>]*> nop
-+0000d0a4 <[^>]*> nop
-+0000d0a8 <[^>]*> nop
-+0000d0ac <[^>]*> nop
-+0000d0b0 <[^>]*> nop
-+0000d0b4 <[^>]*> nop
-+0000d0b8 <[^>]*> nop
-+0000d0bc <[^>]*> nop
-+0000d0c0 <[^>]*> nop
-+0000d0c4 <[^>]*> nop
-+0000d0c8 <[^>]*> nop
-+0000d0cc <[^>]*> nop
-+0000d0d0 <[^>]*> nop
-+0000d0d4 <[^>]*> nop
-+0000d0d8 <[^>]*> nop
-+0000d0dc <[^>]*> nop
-+0000d0e0 <[^>]*> nop
-+0000d0e4 <[^>]*> nop
-+0000d0e8 <[^>]*> nop
-+0000d0ec <[^>]*> nop
-+0000d0f0 <[^>]*> nop
-+0000d0f4 <[^>]*> nop
-+0000d0f8 <[^>]*> nop
-+0000d0fc <[^>]*> nop
-+0000d100 <[^>]*> nop
-+0000d104 <[^>]*> nop
-+0000d108 <[^>]*> nop
-+0000d10c <[^>]*> nop
-+0000d110 <[^>]*> nop
-+0000d114 <[^>]*> nop
-+0000d118 <[^>]*> nop
-+0000d11c <[^>]*> nop
-+0000d120 <[^>]*> nop
-+0000d124 <[^>]*> nop
-+0000d128 <[^>]*> nop
-+0000d12c <[^>]*> nop
-+0000d130 <[^>]*> nop
-+0000d134 <[^>]*> nop
-+0000d138 <[^>]*> nop
-+0000d13c <[^>]*> nop
-+0000d140 <[^>]*> nop
-+0000d144 <[^>]*> nop
-+0000d148 <[^>]*> nop
-+0000d14c <[^>]*> nop
-+0000d150 <[^>]*> nop
-+0000d154 <[^>]*> nop
-+0000d158 <[^>]*> nop
-+0000d15c <[^>]*> nop
-+0000d160 <[^>]*> nop
-+0000d164 <[^>]*> nop
-+0000d168 <[^>]*> nop
-+0000d16c <[^>]*> nop
-+0000d170 <[^>]*> nop
-+0000d174 <[^>]*> nop
-+0000d178 <[^>]*> nop
-+0000d17c <[^>]*> nop
-+0000d180 <[^>]*> nop
-+0000d184 <[^>]*> nop
-+0000d188 <[^>]*> nop
-+0000d18c <[^>]*> nop
-+0000d190 <[^>]*> nop
-+0000d194 <[^>]*> nop
-+0000d198 <[^>]*> nop
-+0000d19c <[^>]*> nop
-+0000d1a0 <[^>]*> nop
-+0000d1a4 <[^>]*> nop
-+0000d1a8 <[^>]*> nop
-+0000d1ac <[^>]*> nop
-+0000d1b0 <[^>]*> nop
-+0000d1b4 <[^>]*> nop
-+0000d1b8 <[^>]*> nop
-+0000d1bc <[^>]*> nop
-+0000d1c0 <[^>]*> nop
-+0000d1c4 <[^>]*> nop
-+0000d1c8 <[^>]*> nop
-+0000d1cc <[^>]*> nop
-+0000d1d0 <[^>]*> nop
-+0000d1d4 <[^>]*> nop
-+0000d1d8 <[^>]*> nop
-+0000d1dc <[^>]*> nop
-+0000d1e0 <[^>]*> nop
-+0000d1e4 <[^>]*> nop
-+0000d1e8 <[^>]*> nop
-+0000d1ec <[^>]*> nop
-+0000d1f0 <[^>]*> nop
-+0000d1f4 <[^>]*> nop
-+0000d1f8 <[^>]*> nop
-+0000d1fc <[^>]*> nop
-+0000d200 <[^>]*> nop
-+0000d204 <[^>]*> nop
-+0000d208 <[^>]*> nop
-+0000d20c <[^>]*> nop
-+0000d210 <[^>]*> nop
-+0000d214 <[^>]*> nop
-+0000d218 <[^>]*> nop
-+0000d21c <[^>]*> nop
-+0000d220 <[^>]*> nop
-+0000d224 <[^>]*> nop
-+0000d228 <[^>]*> nop
-+0000d22c <[^>]*> nop
-+0000d230 <[^>]*> nop
-+0000d234 <[^>]*> nop
-+0000d238 <[^>]*> nop
-+0000d23c <[^>]*> nop
-+0000d240 <[^>]*> nop
-+0000d244 <[^>]*> nop
-+0000d248 <[^>]*> nop
-+0000d24c <[^>]*> nop
-+0000d250 <[^>]*> nop
-+0000d254 <[^>]*> nop
-+0000d258 <[^>]*> nop
-+0000d25c <[^>]*> nop
-+0000d260 <[^>]*> nop
-+0000d264 <[^>]*> nop
-+0000d268 <[^>]*> nop
-+0000d26c <[^>]*> nop
-+0000d270 <[^>]*> nop
-+0000d274 <[^>]*> nop
-+0000d278 <[^>]*> nop
-+0000d27c <[^>]*> nop
-+0000d280 <[^>]*> nop
-+0000d284 <[^>]*> nop
-+0000d288 <[^>]*> nop
-+0000d28c <[^>]*> nop
-+0000d290 <[^>]*> nop
-+0000d294 <[^>]*> nop
-+0000d298 <[^>]*> nop
-+0000d29c <[^>]*> nop
-+0000d2a0 <[^>]*> nop
-+0000d2a4 <[^>]*> nop
-+0000d2a8 <[^>]*> nop
-+0000d2ac <[^>]*> nop
-+0000d2b0 <[^>]*> nop
-+0000d2b4 <[^>]*> nop
-+0000d2b8 <[^>]*> nop
-+0000d2bc <[^>]*> nop
-+0000d2c0 <[^>]*> nop
-+0000d2c4 <[^>]*> nop
-+0000d2c8 <[^>]*> nop
-+0000d2cc <[^>]*> nop
-+0000d2d0 <[^>]*> nop
-+0000d2d4 <[^>]*> nop
-+0000d2d8 <[^>]*> nop
-+0000d2dc <[^>]*> nop
-+0000d2e0 <[^>]*> nop
-+0000d2e4 <[^>]*> nop
-+0000d2e8 <[^>]*> nop
-+0000d2ec <[^>]*> nop
-+0000d2f0 <[^>]*> nop
-+0000d2f4 <[^>]*> nop
-+0000d2f8 <[^>]*> nop
-+0000d2fc <[^>]*> nop
-+0000d300 <[^>]*> nop
-+0000d304 <[^>]*> nop
-+0000d308 <[^>]*> nop
-+0000d30c <[^>]*> nop
-+0000d310 <[^>]*> nop
-+0000d314 <[^>]*> nop
-+0000d318 <[^>]*> nop
-+0000d31c <[^>]*> nop
-+0000d320 <[^>]*> nop
-+0000d324 <[^>]*> nop
-+0000d328 <[^>]*> nop
-+0000d32c <[^>]*> nop
-+0000d330 <[^>]*> nop
-+0000d334 <[^>]*> nop
-+0000d338 <[^>]*> nop
-+0000d33c <[^>]*> nop
-+0000d340 <[^>]*> nop
-+0000d344 <[^>]*> nop
-+0000d348 <[^>]*> nop
-+0000d34c <[^>]*> nop
-+0000d350 <[^>]*> nop
-+0000d354 <[^>]*> nop
-+0000d358 <[^>]*> nop
-+0000d35c <[^>]*> nop
-+0000d360 <[^>]*> nop
-+0000d364 <[^>]*> nop
-+0000d368 <[^>]*> nop
-+0000d36c <[^>]*> nop
-+0000d370 <[^>]*> nop
-+0000d374 <[^>]*> nop
-+0000d378 <[^>]*> nop
-+0000d37c <[^>]*> nop
-+0000d380 <[^>]*> nop
-+0000d384 <[^>]*> nop
-+0000d388 <[^>]*> nop
-+0000d38c <[^>]*> nop
-+0000d390 <[^>]*> nop
-+0000d394 <[^>]*> nop
-+0000d398 <[^>]*> nop
-+0000d39c <[^>]*> nop
-+0000d3a0 <[^>]*> nop
-+0000d3a4 <[^>]*> nop
-+0000d3a8 <[^>]*> nop
-+0000d3ac <[^>]*> nop
-+0000d3b0 <[^>]*> nop
-+0000d3b4 <[^>]*> nop
-+0000d3b8 <[^>]*> nop
-+0000d3bc <[^>]*> nop
-+0000d3c0 <[^>]*> nop
-+0000d3c4 <[^>]*> nop
-+0000d3c8 <[^>]*> nop
-+0000d3cc <[^>]*> nop
-+0000d3d0 <[^>]*> nop
-+0000d3d4 <[^>]*> nop
-+0000d3d8 <[^>]*> nop
-+0000d3dc <[^>]*> nop
-+0000d3e0 <[^>]*> nop
-+0000d3e4 <[^>]*> nop
-+0000d3e8 <[^>]*> nop
-+0000d3ec <[^>]*> nop
-+0000d3f0 <[^>]*> nop
-+0000d3f4 <[^>]*> nop
-+0000d3f8 <[^>]*> nop
-+0000d3fc <[^>]*> nop
-+0000d400 <[^>]*> nop
-+0000d404 <[^>]*> nop
-+0000d408 <[^>]*> nop
-+0000d40c <[^>]*> nop
-+0000d410 <[^>]*> nop
-+0000d414 <[^>]*> nop
-+0000d418 <[^>]*> nop
-+0000d41c <[^>]*> nop
-+0000d420 <[^>]*> nop
-+0000d424 <[^>]*> nop
-+0000d428 <[^>]*> nop
-+0000d42c <[^>]*> nop
-+0000d430 <[^>]*> nop
-+0000d434 <[^>]*> nop
-+0000d438 <[^>]*> nop
-+0000d43c <[^>]*> nop
-+0000d440 <[^>]*> nop
-+0000d444 <[^>]*> nop
-+0000d448 <[^>]*> nop
-+0000d44c <[^>]*> nop
-+0000d450 <[^>]*> nop
-+0000d454 <[^>]*> nop
-+0000d458 <[^>]*> nop
-+0000d45c <[^>]*> nop
-+0000d460 <[^>]*> nop
-+0000d464 <[^>]*> nop
-+0000d468 <[^>]*> nop
-+0000d46c <[^>]*> nop
-+0000d470 <[^>]*> nop
-+0000d474 <[^>]*> nop
-+0000d478 <[^>]*> nop
-+0000d47c <[^>]*> nop
-+0000d480 <[^>]*> nop
-+0000d484 <[^>]*> nop
-+0000d488 <[^>]*> nop
-+0000d48c <[^>]*> nop
-+0000d490 <[^>]*> nop
-+0000d494 <[^>]*> nop
-+0000d498 <[^>]*> nop
-+0000d49c <[^>]*> nop
-+0000d4a0 <[^>]*> nop
-+0000d4a4 <[^>]*> nop
-+0000d4a8 <[^>]*> nop
-+0000d4ac <[^>]*> nop
-+0000d4b0 <[^>]*> nop
-+0000d4b4 <[^>]*> nop
-+0000d4b8 <[^>]*> nop
-+0000d4bc <[^>]*> nop
-+0000d4c0 <[^>]*> nop
-+0000d4c4 <[^>]*> nop
-+0000d4c8 <[^>]*> nop
-+0000d4cc <[^>]*> nop
-+0000d4d0 <[^>]*> nop
-+0000d4d4 <[^>]*> nop
-+0000d4d8 <[^>]*> nop
-+0000d4dc <[^>]*> nop
-+0000d4e0 <[^>]*> nop
-+0000d4e4 <[^>]*> nop
-+0000d4e8 <[^>]*> nop
-+0000d4ec <[^>]*> nop
-+0000d4f0 <[^>]*> nop
-+0000d4f4 <[^>]*> nop
-+0000d4f8 <[^>]*> nop
-+0000d4fc <[^>]*> nop
-+0000d500 <[^>]*> nop
-+0000d504 <[^>]*> nop
-+0000d508 <[^>]*> nop
-+0000d50c <[^>]*> nop
-+0000d510 <[^>]*> nop
-+0000d514 <[^>]*> nop
-+0000d518 <[^>]*> nop
-+0000d51c <[^>]*> nop
-+0000d520 <[^>]*> nop
-+0000d524 <[^>]*> nop
-+0000d528 <[^>]*> nop
-+0000d52c <[^>]*> nop
-+0000d530 <[^>]*> nop
-+0000d534 <[^>]*> nop
-+0000d538 <[^>]*> nop
-+0000d53c <[^>]*> nop
-+0000d540 <[^>]*> nop
-+0000d544 <[^>]*> nop
-+0000d548 <[^>]*> nop
-+0000d54c <[^>]*> nop
-+0000d550 <[^>]*> nop
-+0000d554 <[^>]*> nop
-+0000d558 <[^>]*> nop
-+0000d55c <[^>]*> nop
-+0000d560 <[^>]*> nop
-+0000d564 <[^>]*> nop
-+0000d568 <[^>]*> nop
-+0000d56c <[^>]*> nop
-+0000d570 <[^>]*> nop
-+0000d574 <[^>]*> nop
-+0000d578 <[^>]*> nop
-+0000d57c <[^>]*> nop
-+0000d580 <[^>]*> nop
-+0000d584 <[^>]*> nop
-+0000d588 <[^>]*> nop
-+0000d58c <[^>]*> nop
-+0000d590 <[^>]*> nop
-+0000d594 <[^>]*> nop
-+0000d598 <[^>]*> nop
-+0000d59c <[^>]*> nop
-+0000d5a0 <[^>]*> nop
-+0000d5a4 <[^>]*> nop
-+0000d5a8 <[^>]*> nop
-+0000d5ac <[^>]*> nop
-+0000d5b0 <[^>]*> nop
-+0000d5b4 <[^>]*> nop
-+0000d5b8 <[^>]*> nop
-+0000d5bc <[^>]*> nop
-+0000d5c0 <[^>]*> nop
-+0000d5c4 <[^>]*> nop
-+0000d5c8 <[^>]*> nop
-+0000d5cc <[^>]*> nop
-+0000d5d0 <[^>]*> nop
-+0000d5d4 <[^>]*> nop
-+0000d5d8 <[^>]*> nop
-+0000d5dc <[^>]*> nop
-+0000d5e0 <[^>]*> nop
-+0000d5e4 <[^>]*> nop
-+0000d5e8 <[^>]*> nop
-+0000d5ec <[^>]*> nop
-+0000d5f0 <[^>]*> nop
-+0000d5f4 <[^>]*> nop
-+0000d5f8 <[^>]*> nop
-+0000d5fc <[^>]*> nop
-+0000d600 <[^>]*> nop
-+0000d604 <[^>]*> nop
-+0000d608 <[^>]*> nop
-+0000d60c <[^>]*> nop
-+0000d610 <[^>]*> nop
-+0000d614 <[^>]*> nop
-+0000d618 <[^>]*> nop
-+0000d61c <[^>]*> nop
-+0000d620 <[^>]*> nop
-+0000d624 <[^>]*> nop
-+0000d628 <[^>]*> nop
-+0000d62c <[^>]*> nop
-+0000d630 <[^>]*> nop
-+0000d634 <[^>]*> nop
-+0000d638 <[^>]*> nop
-+0000d63c <[^>]*> nop
-+0000d640 <[^>]*> nop
-+0000d644 <[^>]*> nop
-+0000d648 <[^>]*> nop
-+0000d64c <[^>]*> nop
-+0000d650 <[^>]*> nop
-+0000d654 <[^>]*> nop
-+0000d658 <[^>]*> nop
-+0000d65c <[^>]*> nop
-+0000d660 <[^>]*> nop
-+0000d664 <[^>]*> nop
-+0000d668 <[^>]*> nop
-+0000d66c <[^>]*> nop
-+0000d670 <[^>]*> nop
-+0000d674 <[^>]*> nop
-+0000d678 <[^>]*> nop
-+0000d67c <[^>]*> nop
-+0000d680 <[^>]*> nop
-+0000d684 <[^>]*> nop
-+0000d688 <[^>]*> nop
-+0000d68c <[^>]*> nop
-+0000d690 <[^>]*> nop
-+0000d694 <[^>]*> nop
-+0000d698 <[^>]*> nop
-+0000d69c <[^>]*> nop
-+0000d6a0 <[^>]*> nop
-+0000d6a4 <[^>]*> nop
-+0000d6a8 <[^>]*> nop
-+0000d6ac <[^>]*> nop
-+0000d6b0 <[^>]*> nop
-+0000d6b4 <[^>]*> nop
-+0000d6b8 <[^>]*> nop
-+0000d6bc <[^>]*> nop
-+0000d6c0 <[^>]*> nop
-+0000d6c4 <[^>]*> nop
-+0000d6c8 <[^>]*> nop
-+0000d6cc <[^>]*> nop
-+0000d6d0 <[^>]*> nop
-+0000d6d4 <[^>]*> nop
-+0000d6d8 <[^>]*> nop
-+0000d6dc <[^>]*> nop
-+0000d6e0 <[^>]*> nop
-+0000d6e4 <[^>]*> nop
-+0000d6e8 <[^>]*> nop
-+0000d6ec <[^>]*> nop
-+0000d6f0 <[^>]*> nop
-+0000d6f4 <[^>]*> nop
-+0000d6f8 <[^>]*> nop
-+0000d6fc <[^>]*> nop
-+0000d700 <[^>]*> nop
-+0000d704 <[^>]*> nop
-+0000d708 <[^>]*> nop
-+0000d70c <[^>]*> nop
-+0000d710 <[^>]*> nop
-+0000d714 <[^>]*> nop
-+0000d718 <[^>]*> nop
-+0000d71c <[^>]*> nop
-+0000d720 <[^>]*> nop
-+0000d724 <[^>]*> nop
-+0000d728 <[^>]*> nop
-+0000d72c <[^>]*> nop
-+0000d730 <[^>]*> nop
-+0000d734 <[^>]*> nop
-+0000d738 <[^>]*> nop
-+0000d73c <[^>]*> nop
-+0000d740 <[^>]*> nop
-+0000d744 <[^>]*> nop
-+0000d748 <[^>]*> nop
-+0000d74c <[^>]*> nop
-+0000d750 <[^>]*> nop
-+0000d754 <[^>]*> nop
-+0000d758 <[^>]*> nop
-+0000d75c <[^>]*> nop
-+0000d760 <[^>]*> nop
-+0000d764 <[^>]*> nop
-+0000d768 <[^>]*> nop
-+0000d76c <[^>]*> nop
-+0000d770 <[^>]*> nop
-+0000d774 <[^>]*> nop
-+0000d778 <[^>]*> nop
-+0000d77c <[^>]*> nop
-+0000d780 <[^>]*> nop
-+0000d784 <[^>]*> nop
-+0000d788 <[^>]*> nop
-+0000d78c <[^>]*> nop
-+0000d790 <[^>]*> nop
-+0000d794 <[^>]*> nop
-+0000d798 <[^>]*> nop
-+0000d79c <[^>]*> nop
-+0000d7a0 <[^>]*> nop
-+0000d7a4 <[^>]*> nop
-+0000d7a8 <[^>]*> nop
-+0000d7ac <[^>]*> nop
-+0000d7b0 <[^>]*> nop
-+0000d7b4 <[^>]*> nop
-+0000d7b8 <[^>]*> nop
-+0000d7bc <[^>]*> nop
-+0000d7c0 <[^>]*> nop
-+0000d7c4 <[^>]*> nop
-+0000d7c8 <[^>]*> nop
-+0000d7cc <[^>]*> nop
-+0000d7d0 <[^>]*> nop
-+0000d7d4 <[^>]*> nop
-+0000d7d8 <[^>]*> nop
-+0000d7dc <[^>]*> nop
-+0000d7e0 <[^>]*> nop
-+0000d7e4 <[^>]*> nop
-+0000d7e8 <[^>]*> nop
-+0000d7ec <[^>]*> nop
-+0000d7f0 <[^>]*> nop
-+0000d7f4 <[^>]*> nop
-+0000d7f8 <[^>]*> nop
-+0000d7fc <[^>]*> nop
-+0000d800 <[^>]*> nop
-+0000d804 <[^>]*> nop
-+0000d808 <[^>]*> nop
-+0000d80c <[^>]*> nop
-+0000d810 <[^>]*> nop
-+0000d814 <[^>]*> nop
-+0000d818 <[^>]*> nop
-+0000d81c <[^>]*> nop
-+0000d820 <[^>]*> nop
-+0000d824 <[^>]*> nop
-+0000d828 <[^>]*> nop
-+0000d82c <[^>]*> nop
-+0000d830 <[^>]*> nop
-+0000d834 <[^>]*> nop
-+0000d838 <[^>]*> nop
-+0000d83c <[^>]*> nop
-+0000d840 <[^>]*> nop
-+0000d844 <[^>]*> nop
-+0000d848 <[^>]*> nop
-+0000d84c <[^>]*> nop
-+0000d850 <[^>]*> nop
-+0000d854 <[^>]*> nop
-+0000d858 <[^>]*> nop
-+0000d85c <[^>]*> nop
-+0000d860 <[^>]*> nop
-+0000d864 <[^>]*> nop
-+0000d868 <[^>]*> nop
-+0000d86c <[^>]*> nop
-+0000d870 <[^>]*> nop
-+0000d874 <[^>]*> nop
-+0000d878 <[^>]*> nop
-+0000d87c <[^>]*> nop
-+0000d880 <[^>]*> nop
-+0000d884 <[^>]*> nop
-+0000d888 <[^>]*> nop
-+0000d88c <[^>]*> nop
-+0000d890 <[^>]*> nop
-+0000d894 <[^>]*> nop
-+0000d898 <[^>]*> nop
-+0000d89c <[^>]*> nop
-+0000d8a0 <[^>]*> nop
-+0000d8a4 <[^>]*> nop
-+0000d8a8 <[^>]*> nop
-+0000d8ac <[^>]*> nop
-+0000d8b0 <[^>]*> nop
-+0000d8b4 <[^>]*> nop
-+0000d8b8 <[^>]*> nop
-+0000d8bc <[^>]*> nop
-+0000d8c0 <[^>]*> nop
-+0000d8c4 <[^>]*> nop
-+0000d8c8 <[^>]*> nop
-+0000d8cc <[^>]*> nop
-+0000d8d0 <[^>]*> nop
-+0000d8d4 <[^>]*> nop
-+0000d8d8 <[^>]*> nop
-+0000d8dc <[^>]*> nop
-+0000d8e0 <[^>]*> nop
-+0000d8e4 <[^>]*> nop
-+0000d8e8 <[^>]*> nop
-+0000d8ec <[^>]*> nop
-+0000d8f0 <[^>]*> nop
-+0000d8f4 <[^>]*> nop
-+0000d8f8 <[^>]*> nop
-+0000d8fc <[^>]*> nop
-+0000d900 <[^>]*> nop
-+0000d904 <[^>]*> nop
-+0000d908 <[^>]*> nop
-+0000d90c <[^>]*> nop
-+0000d910 <[^>]*> nop
-+0000d914 <[^>]*> nop
-+0000d918 <[^>]*> nop
-+0000d91c <[^>]*> nop
-+0000d920 <[^>]*> nop
-+0000d924 <[^>]*> nop
-+0000d928 <[^>]*> nop
-+0000d92c <[^>]*> nop
-+0000d930 <[^>]*> nop
-+0000d934 <[^>]*> nop
-+0000d938 <[^>]*> nop
-+0000d93c <[^>]*> nop
-+0000d940 <[^>]*> nop
-+0000d944 <[^>]*> nop
-+0000d948 <[^>]*> nop
-+0000d94c <[^>]*> nop
-+0000d950 <[^>]*> nop
-+0000d954 <[^>]*> nop
-+0000d958 <[^>]*> nop
-+0000d95c <[^>]*> nop
-+0000d960 <[^>]*> nop
-+0000d964 <[^>]*> nop
-+0000d968 <[^>]*> nop
-+0000d96c <[^>]*> nop
-+0000d970 <[^>]*> nop
-+0000d974 <[^>]*> nop
-+0000d978 <[^>]*> nop
-+0000d97c <[^>]*> nop
-+0000d980 <[^>]*> nop
-+0000d984 <[^>]*> nop
-+0000d988 <[^>]*> nop
-+0000d98c <[^>]*> nop
-+0000d990 <[^>]*> nop
-+0000d994 <[^>]*> nop
-+0000d998 <[^>]*> nop
-+0000d99c <[^>]*> nop
-+0000d9a0 <[^>]*> nop
-+0000d9a4 <[^>]*> nop
-+0000d9a8 <[^>]*> nop
-+0000d9ac <[^>]*> nop
-+0000d9b0 <[^>]*> nop
-+0000d9b4 <[^>]*> nop
-+0000d9b8 <[^>]*> nop
-+0000d9bc <[^>]*> nop
-+0000d9c0 <[^>]*> nop
-+0000d9c4 <[^>]*> nop
-+0000d9c8 &l